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

程序代碼:
#inlcude
#define uint unsigned int---定義一個(gè)無(wú)符號(hào)整型數(shù)據(jù)類(lèi)型變量
#define uchar unsigned char----定義一個(gè)無(wú)符號(hào)字符型數(shù)據(jù)變量
void main()--程序主函數(shù),一定要記住程序的函數(shù)結(jié)構(gòu)寫(xiě)法,都是固定的.程序 執(zhí)行都是從主函數(shù)開(kāi)始執(zhí)行.
{
P2=0Xfe;
while(1);
}
P2=0Xfe;把一個(gè)數(shù)0Xfe付給P2口,0X代表16進(jìn)制,這時(shí)P2口的狀態(tài)如圖

P2=0Xfe這句話的目的就是讓P2.0口的邏輯電平為0,實(shí)際電壓為0,這樣LED兩端就會(huì)有電壓差,從而使其點(diǎn)亮.可能有人不知道16進(jìn)制和2進(jìn)制是怎么回事.好簡(jiǎn)單的,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進(jìn)制就是從0數(shù)到f,一共16個(gè)數(shù),完了.細(xì)心的朋友可能會(huì)發(fā)現(xiàn),讓P2.0發(fā)光,就是讓P2口最后一位為0,那只要P2口最后一位為0,LED就會(huì)發(fā)光,看上面的2進(jìn)制數(shù)值,只要最后一位為0就達(dá)到目的,如P2=0X00,P2=0X02,P2=0Xdc....等等.
這種操做方法叫總線操作方法.讓P2.0的LED發(fā)光還可以用位操作的方法.
程序代碼如下:
#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定義為一個(gè)變量D1,操作D1就可以操作P2.0.有的人會(huì)有疑問(wèn),這多麻煩了,直接P2.0=0,不就完了嗎?不可以,這樣寫(xiě)編譯器不認(rèn)識(shí)這種格式,所以大家一定要記得如何定義一個(gè)位變量,格式不能改了,一定是sbit D1=P2^0,當(dāng)然D1可以是其他字母,A1,B2,C1都沒(méi)有問(wèn)題.
總結(jié)一下,讓LED發(fā)光辦法2個(gè),總線操作,位操作.學(xué)習(xí)懂得總結(jié)進(jìn)步才快.(待續(xù))