在C語言里。如果直接寫P1.O,C編譯器并不能識別,而且P1.O也不是一個合法的C語言變量名,所以得給它另起一個名字,比如起名為P1—0,可是P1—0是不是就是P10呢?
可以這么認(rèn)為,C編譯器可不這么認(rèn)為,所以必須給它們建立聯(lián)系,這里使用了KeilC的關(guān)鍵字sbit。來定義。sbit是C51中的一種擴充數(shù)據(jù)類型,利用它可以訪問芯片內(nèi)部的RAM中的可尋址位或特殊功能寄存器中的可尋址位。
sbit的用法有三種:
第一種方法:sbit位變量名=地址值
第二種方法:sbit位變量名=SFR名稱^變量位地址值
第三種方法:sbit位變量名=SFR地址值^變量位地址值
如定義PSW中的OV可以用以下三種方法:
(1)sbitOV=0xd2說明:
0xd2是OV的位地址值,這樣是把位的絕對地址賦給位變量。
sbit的位地址必須位于80F_一FFI-1之間。
(2)sbitOV=PSW^2說明:
其中PSW必須先用sfr定義好,先定義一個特殊功能寄存器名再指定位變量名所在的位置,當(dāng)可尋址位位于特殊功能寄存器中時可采用這種方法。
(3)sbitOV=0xDO^2說明:
0xDO就是PSW的地址值。
因此這里用sbitP1—0=P1^0就是定義用符號P1一O來表示P1.0引腳,當(dāng)然,如果你愿意也可以用P10一類的名字,只要下面程序中也隨之更改就行了。同樣我們可以用P1.1的地址去寫,如sbjtP1—1=Ox91:這樣在以后的程序語句中就可以用P1—1來對P1.1引腳進(jìn)行讀寫操作了。
通常我們可以直接使用系統(tǒng)提供的預(yù)處理文件里面已定義好的各特殊功能寄存器的簡單名字,直接引用可以省去一點時間。當(dāng)然您也可以自己寫自己的定義文件,用您認(rèn)為好記的名字。