sbit和sfr到底是什么?


 

sbit是用來給特殊寄存器某個位取一個名字。sfr就是特殊寄存器。

下圖就是51單片機所有的特殊寄存器

每個寄存器的位我們都可以給它取一個名字,專業術語叫 標識符,通過這個標識符可以操作對應的數據。每個寄存器的位也都擁有一個地址,通過寄存器的地址也可以訪問到對應的數據。

但是地址只能做右值,不能做左值。也就是

sbit led =0xA0^1//0xA0是P2這個寄存器的地址

是可以的

0xA0^1=0//這是錯誤的,編譯會提示語法錯誤。

為了讓我們更方便的操作寄存器中的位數據,引入了sbit

sbit常用的兩種方法

 

//sbit led =0xA0^1; //A0是P2這個寄存器的地址
//sbit ledD2=P2^0; //P2寄存器的名字

 

0xA0^1是什么?

 

STC80C52是一個8位CPU,所以P2這個寄存器是8位的,而P2這個寄存器的地址是0xA0,這個寄存器的位地址是這樣的,從第0位到第7位

 第一位     第二位    第三位    .。。。  第七位  

1010 0000    1010 0001    1010 0010       1010 0111

^是異或的意思

0xA0^1=

1010 0000

XOR  0001

1010 0001

這個1010 0001 正好就是寄存器A0的第1個位地址(從0開始數的),以此類推,0xA0^7的結果是1010 0111 ,也就是A0的第七個位地址。

 

 

 

 

每個寄存器都有一個名字,專業術語叫標識符,每個寄存器都有一個地址。

因為地址不能做左值只能做右值,所以我們用寄存器的標識符操作寄存器的數據。

寄存器的用法

P2=0xFF;

P1=0x55;

 

 

參考資料:http://www.keil.com/support/man/docs/c51/c51_le_sbit.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM