精品国产一区在线_av无码中文字幕无码王_天海翼三点刺激高潮不停_好硬好大好爽视频_欧美高清一区三区在线专区_香蕉黄色片

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

一個維修工如何學單片機(講述自己學單片機經歷)2

前幾個貼說了,學單片機所具備的軟件和硬件.接下來說說如何用C語言進行編寫程序.在 編程序之前,有幾個東西要講清楚.1-學單片機就是要學習如何隨意控制單片機的I/O端口.AT89S52一共有32個I/O口,分成4個組,分別是P0,P1,P2,P3,每個組分成8位,分別是P0.0--P0.7,P1.0--P1.7,P2.0--P2.7,P3.0--P3.7.每個人對單片機的理解都不一樣,我當初把單片機理解成下面這個圖

32個I/O口分布如圖,單片機每個I/O口占一個小方格,小方格具備存儲電荷功能,滿電荷的時候,小方格的邏輯電平為1,對應的實際電壓是5V,沒有電荷的時候邏輯電平是0,對應實際電壓是0(確切來說是小于0.7V,其實0.7伏電壓做不了什么事情,就可以認為是0V啦).那我們編寫程序的時候,就是讓小方格要么是1(5V),要么是0(0V).
   下面這些操作是假設你的編程軟件安裝成功,并且你會建立第一個工程文件的前提下進行.我就編一個小成程序讓下面圖的小燈亮起來.


程序代碼:
#inlcude--程序的頭文件,作用是把程序代碼和單片機內部的硬件 結構聯系上,初學的朋友不要過多鉆這句話,反正每次寫程序都要寫這句話就對了.
#define uint unsigned int---定義一個無符號整型數據類型變量
#define uchar unsigned char----定義一個無符號字符型數據變量

void main()--程序主函數,一定要記住程序的函數結構寫法,都是固定的.程序             執行都是從主函數開始執行.
{
P2=0Xfe;
while(1);

}
P2=0Xfe;把一個數0Xfe付給P2口,0X代表16進制,這時P2口的狀態如圖





P2=0Xfe這句話的目的就是讓P2.0口的邏輯電平為0,實際電壓為0,這樣LED兩端就會有電壓差,從而使其點亮.可能有人不知道16進制和2進制是怎么回事.好簡單的,0000-0,0001-1,0010-2,0011-3,0100-4,0101-5,0110-6,0111-7,1000-8,1001-9,1010-a,1011-b.1100-c,1101-d,1110-e,1111-f.16進制就是從0數到f,一共16個數,完了.細心的朋友可能會發現,讓P2.0發光,就是讓P2口最后一位為0,那只要P2口最后一位為0,LED就會發光,看上面的2進制數值,只要最后一位為0就達到目的,如P2=0X00,P2=0X02,P2=0Xdc....等等.
這種操做方法叫總線操作方法.讓P2.0的LED發光還可以用位操作的方法.
程序代碼如下:
#inlcude
#define uint unsigned int
#define uchar unsigned char
sbit D1=P2^0;
void main
{
D1=0;
while(1);

}

sbit D1=P2^0;這句話意思是把P2^0定義為一個變量D1,操作D1就可以操作P2.0.有的人會有疑問,這多麻煩了,直接P2.0=0,不就完了嗎?不可以,這樣寫編譯器不認識這種格式,所以大家一定要記得如何定義一個位變量,格式不能改了,一定是sbit D1=P2^0,當然D1可以是其他字母,A1,B2,C1都沒有問題.
總結一下,讓LED發光辦法2個,總線操作,位操作.學習懂得總結進步才快.(待續)
全部回復(3)
正序查看
倒序查看
janyao
LV.1
2
2009-09-03 11:32
講得很詳細易懂,但while(1)是啥意思?還有前面定義的數據變量,我在其他教程看到不需要這個啊?

直接是:
#include
void main()
{
P1=0xfd;
}
0
回復
yaojiajia
LV.1
3
2009-09-03 14:25
@janyao
講得很詳細易懂,但while(1)是啥意思?還有前面定義的數據變量,我在其他教程看到不需要這個啊?直接是:#includevoidmain(){P1=0xfd;}
可能是寫的太倉促了,這個也是我寫程序的習慣吧!因為我以后發貼while(1)的使用率達到90%以上.
其實這個程序實際上是這樣的:
void main()
{
P2=0xff;---單片機上電的時候,關掉所有的LED.
while(1)---這是一個條件判斷語句,只要wihle()括弧里的表達式為真(邏輯直為1,那么單片機就會執行while 語句里的語句(也就是大括弧里的語句),反之就不執行.
{
P2=0Xfe;---這條語句將會一直被執行,所以燈一直在亮.
}
}
0
回復
janyao
LV.1
4
2009-09-07 08:48
@yaojiajia
可能是寫的太倉促了,這個也是我寫程序的習慣吧!因為我以后發貼while(1)的使用率達到90%以上.其實這個程序實際上是這樣的:voidmain(){P2=0xff;---單片機上電的時候,關掉所有的LED.while(1)---這是一個條件判斷語句,只要wihle()括弧里的表達式為真(邏輯直為1,那么單片機就會執行while語句里的語句(也就是大括弧里的語句),反之就不執行.{P2=0Xfe;---這條語句將會一直被執行,所以燈一直在亮.}}
多謝指教,我也自己查詢了相關資料,明白了它的意思,希望你的經驗繼續寫下去!
0
回復
主站蜘蛛池模板: 91小蝌蚪 | 国产97超碰 | 婷婷第四色 | 日本少妇高潮喷水视频 | www.黄色小视频 | 免费视频在线视频 | 中文字幕日产av一二三区 | 偷拍做爰吃奶视频免费看 | 日韩精品在线观看网站 | 国产免费av观看 | 国产乱人对白A片麻豆 | 天天操天天干天天综合网 | 东北少妇不戴套对白第一次 | 国产成人综合亚洲欧美 | 隔壁老王av在线 | 男人让女人爽的免费视频 | 1313午夜精品美女爱做视频 | 一级一级97片看一级毛片 | 亚洲免费成人在线 | 国产A∨天天免费观看美女 色视频综合无码一区二区三区 | 伊人春色网 | 亚洲人精品午夜射精日韩 | 日韩国产在线看 | 欧美成aⅴ人高清WW 一级特黄录像播放 | 69av在线视频 | 成av在线 | 国产原厂视频在线观看 | av无码免费看 | 成熟老妇ww高潮ww视频 | 色哟av| 国产91清纯白嫩初高中在线观看 | 一级视频网址 | 国产成人无码性教育视频 | 国产亚洲精品A在线观看 | 亚洲欧美综合精品成人网站 | 欧洲中文字幕久久精品无码喷水 | 久章草在线视频免费观看 | AV无码一区二区三区 | 久草在线视频资源 | 免费观看黄网站在线播放 | 国产精品福利片 |