控制單片機(jī)的引腳,分為兩個(gè)知識(shí)點(diǎn),一個(gè)是怎么讓引腳單片機(jī)輸出高低電平,一個(gè)是怎么檢測接入到引腳上的電平是高還是低。我們有時(shí)候會(huì)聽到這樣的話:“此單片機(jī)有幾個(gè)io口?”這里說的io口,就是輸入(input)輸出(output)接口。一般情況下,單片機(jī)的引腳當(dāng)中,除了電源引腳和晶振引腳,其它的都是io口。當(dāng)我們控制單片機(jī)的引腳高低時(shí),我們把引腳當(dāng)做輸出引腳;當(dāng)我們需要檢測連接到單片機(jī)引腳上的電平時(shí),我們把引腳當(dāng)做輸入引腳使用。
使引腳p1.5輸出高電平,可以這樣寫:
p1=0x20;
或者:
sbit xxx=p1^5;
xxx=1;
第一種寫法,在20前面加0x,表示這是一個(gè)十六進(jìn)制數(shù),把這個(gè)十六進(jìn)制數(shù)0x20寫成二進(jìn)制數(shù)就是0010 0000,從左到右代表了p1.7~p1.0,我們發(fā)現(xiàn),在p1.5的位置為1。
第二種寫法,把p1.5命名為xxx,再給xxx寫1,同樣可以使得p1.5=1,讓p1.5輸出高電平。
第一種寫法直接操作p1寄存器,第二種寫法叫做“位操作”。sbit是一個(gè)“偽關(guān)鍵字”,并不是c語言標(biāo)準(zhǔn)的關(guān)鍵字。這個(gè)偽關(guān)鍵字是專門為51單片機(jī)準(zhǔn)備的,大家不用擔(dān)心,51單片機(jī)的偽關(guān)鍵字一共沒有幾個(gè)。
檢測p1.5引腳的電平高低,可以這樣寫:
if((p1&0x20)==0x20) // 如果是高電平
else // 如果是低電平
或者:
sbit xxx=p1^5;
if(xxx==1) // 如果是高電平
else // 如果是低電平
第一種寫法依然是使用觀察p1寄存器。第二種寫法依然是使用“位操作”。