51单片机特殊功能寄存器sfr和sbit介绍
"sfr"指令:用來直接描述硬件地址。小白先解成一組IO口的起始地址中數據 sfr P0 = 0x80; P0=0;//也就是對P0口全部給0
"sbit"指令:對應可位導址空間的一個位,小白先理解成"一個IO口/針腳"的地址中的數據。
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;
?
總結
以上是生活随笔為你收集整理的51单片机特殊功能寄存器sfr和sbit介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android开发:ListView+S
- 下一篇: Language-Directed Ha