1樓:墨汁諾
一、含義不同:
bit位標量是c51編譯器的一種擴充資料型別,利用它可定義一個位標量,但不能定義位指標,也不能定義位陣列。它的值是一個二進位制位,不是0就是1,類似一些高階語言中的boolean型別中的true和false。
sfr也是一種擴充資料型別,點用一個記憶體單元,值域為0~255。利用它可以訪問51微控制器內部的所有特殊功能暫存器。
二、作用不同:
bit=1位而已。都是變數,編譯器在編譯過程中分配地址。除非指定,否則這個地址是隨機的。
這個地址是整個可定址空間,ram+flash+擴充套件空間。bit只有0和1兩種值,意義有點像windows下vc中的bool。
sbit是對應可位定址空間的一個位,可位定址區:20h~2fh。一旦用了sbi***=rege^6這樣的定義,這個sbit量就確定地址了。
sbit大部分是用在暫存器中的,方便對暫存器的某位進行操作的。
微控制器名詞
sfr是special function register特殊功能暫存器
sfr是80c51微控制器中各功能部件對應的暫存器,用於存放相應功能部件的控制命令,狀態或資料。它是80c51微控制器中最具有特殊的部分,所有80c51系列功能的增加和擴充套件幾乎都是通過增加特殊功能暫存器sfr來達到目的的。
對於80c51系列中的80c51,共定義了21個特殊功能暫存器。在80c52中,除了80c51的21個特殊功能暫存器,還增加了5個,共計26個(帶星號的為特殊功能暫存器)。
2樓:俊馳_燕
1.bit和sbit都是c51擴充套件的變數型別。 bit和int char之類的差不多,只不過char=8位, bit=1位而已。都是變數,編譯器在編譯過程中分配地址。
除非你指定,否則這個地址是隨機的。這個地址是整個可定址空間,ram+flash+擴充套件空間。bit只有0和1兩種值,意義有點像windows下vc中的bool。
sbit是對應可位定址空間的一個位,可位定址區:20h~2fh。一旦用了sbi *** = rege^6這樣的定義,這個sbit量就確定地址了。
sbit大部分是用在暫存器中的,方便對暫存器的某位進行操作的。
2.bit位標量 bit位標量是c51編譯器的一種擴充資料型別,利用它可定義一個位標量,但不能定義位指標,也不能定義位陣列。它的值是一個二進位制位,不是0就是1,類似一些高階語言中的boolean型別中的true和false。
3.sfr特殊功能暫存器 sfr也是一種擴充資料型別,點用一個記憶體單元,值域為0~255。利用它可以訪問51微控制器內部的所有特殊功能暫存器。如用sfr p1 = 0x90這一句定p1為p1埠在片內的暫存器,在後面的語句中我們用以用p1 = 255(對p1埠的所有引腳置高電平)之類的語句來操作特殊功能暫存器。
sfr p1 = 0x90; //定義p1 i/o 口,其地址90h sfr 關鍵定後面是一個要定義的名字,可任意選取,但要符合識別符號的命名規則,名字最好有一定的含義如p1 口可以用p1 為名,這樣程式會變的好讀好多.等號後面必須是常數,不允許有帶運算子的表示式,而且該常數必須在特殊功能暫存器的地址範圍之內(80h-ffh),具體可檢視附錄中的相關表. sfr 是定義8 位的特殊功能暫存器而sfr16 則是用來定義16 位特殊功能暫存器, 如8052 的t2 定時器,可以定義為:
sfr16 t2 = 0xcc; //這裡定義8052 定時器2,地址為t2l=cch,t2h=cdh
3樓:匿名使用者
在8位微控制器c語言程式設計中,sfr用來定義特殊功能暫存器,一般佔一個位元組,8位;sbit用來定義特殊功能暫存器中可以位定址的位,佔1位。
在51微控制器中,特殊功能暫存器只有16進位制地址尾數為0或者8,其包含的各個位才可以位定址。
4樓:納蘭性急
sbit 用來定義一個一位的指標。只是少了*號,不過51編譯器認識用sbit定義的變數用setb來操作
sfr用來定義一個八位的指標。只是少了*號,不過51編譯器認識用sfr定義的變數用mov來操作
這些只在c51中可用
5樓:吶喊狠明顯
相同點:
sbit是變數型別。sbit和bit都是c51擴充套件的變數型別。sfr是特殊功能暫存器,也是一種擴充資料型別。
不同點:
sfr:而sfr可以分配製定地址。sfr p1 = 0x90; //定義p1口,其地址90h。
sfr關鍵定後面是一個要定義的名字,可任意選取,但要符合識別符號的命名規則。等號後面必須是常數,不允許有帶運算子的表示式,而且該常數必須在特殊功能暫存器的地址範圍之內(80h-ffh)。
2、資料寬度和取值範圍不同:
sbit: sbit佔用1位資料寬度,sbit的取值範圍只有0和1兩種值。
sfr:用一個記憶體單元,8位資料寬度,值域為0~255
3、定義內容不同:
sbit:sbit是對應可位定址空間的一個位,可位定址區:20h~2fh。
一旦用了sbi *** = rege^6這樣的定義,這個sbit量就確定地址了。sbit大部分是用在暫存器中的,方便對暫存器的某位進行操作的。
sfr:sfr可以訪問51微控制器內部的所有特殊功能暫存器。如用sfr p1 = 0x90這一句定p1為p1埠在片內的暫存器,在後面的語句中就可以用p1 = 0xff,對p1埠的所有引腳置高電平)之類的語句來操作特殊功能暫存器。
微控制器 sfr定義,微控制器sfr和sbit有什麼區別
老友記愛學習 我是一名微控制器工程師,很多人都有類似的問題發生,其實弄懂一個sfr,其它的也就懂了,我已經用通俗易懂的方法把它寫在了一個貼子上,感興趣的可以瀏覽一下。sfr到底是什麼 http tieba.baidu.com p 5004194830 p0 p3 psw acc等這些暫存器在sfr中...
微控制器,sbit什麼意思,微控制器C程式設計sbit指令是什麼意思
sbit是c51擴充套件的變數型別,是定義特殊功能暫存器的位變數。典型應用是 sbit p0 1 p0 1 即定義p0 1為p0口的第2位,以便進行位操作。在c語言裡,如果直接寫p1.1,c編譯器並不能識別,而且p1.1也不是一個合法的c語言變數名,所以得給它另起一個名字,這裡起的名為p1 1,可是...
51微控制器stm32中sfr和define的定義問題求解
在stm32中有個韌體庫,已經把那些埠的位址全部儲存在乙個向量表中,你用的那個define就是內部已經定義好的。你本來就是使用的韌體庫就可以對埠的位址進行正確的埠操作,然而在51中,這些埠是不能這樣操作的,只能把它都當做特殊的暫存器給他附位址。 因為平台不同,c語言大的框架是相通的,但細節上有所區別...