1樓:老友記愛學習
我是一名微控制器工程師,很多人都有類似的問題發生,其實弄懂一個sfr,其它的也就懂了,我已經用通俗易懂的方法把它寫在了一個貼子上,感興趣的可以瀏覽一下。
sfr到底是什麼
2樓:匿名使用者
p0~p3、psw、acc等這些暫存器在sfr中的地址,是intel設計mcs-51微控制器時就定下的。後來許多廠家生產51微控制器時都沿用了這定義,以保證程式的相容性。
至於如下的暫存器
sfr clk_div = 0x97; //為stc微控制器定義,系統時鐘分頻
sfr p0m1 = 0x93;
sfr p0m0 = 0x94;
sfr p1m1 = 0x91;
sfr p1m0 = 0x92;
sfrp2m1 = 0x95;
sfrp2m0 = 0x96;
是stc生產的微控制器,因為加入了自己設計的功能選項,所以就增加了這些暫存器。
3樓:
地址是由微控制器硬體(晶片設計)決定的,前面的p0、p1等只是定義的名稱,代表該地址的暫存器,也可以用其他字串代替。
4樓:沁芳蕭然
對於sfr是固定的,這些地址是微控制器設計時定義的。
這些不需要自己去定義,加入相應的標頭檔案如reg51.h就可以了。在使用中可以直接使用。
也不用管這些地址是怎麼來的。
5樓:看x磺
sfr 1.sfr是special function register(特殊功能暫存器)的縮寫。 sfr是80c51微控制器中各功能部件對應的暫存器,用於存放相應功能部件的控制命令,狀態或資料。
它是80c51微控制器中最具有特殊的部分,現在所有80c51系列功能的增加和擴充套件幾乎都是通過增加特殊功能暫存器sfr來達到目的的。 對於80c51系列中的80c51,共定義了26個特殊功能暫存器。在80c52中,除了80c51的26個特殊功能暫存器,還增加了5個,共計31個。
微控制器sfr和sbit有什麼區別
6樓:墨汁諾
一、含義不同:
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個(帶星號的為特殊功能暫存器)。
7樓:俊馳_燕
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
8樓:匿名使用者
在8位微控制器c語言程式設計中,sfr用來定義特殊功能暫存器,一般佔一個位元組,8位;sbit用來定義特殊功能暫存器中可以位定址的位,佔1位。
在51微控制器中,特殊功能暫存器只有16進位制地址尾數為0或者8,其包含的各個位才可以位定址。
9樓:納蘭性急
sbit 用來定義一個一位的指標。只是少了*號,不過51編譯器認識用sbit定義的變數用setb來操作
sfr用來定義一個八位的指標。只是少了*號,不過51編譯器認識用sfr定義的變數用mov來操作
這些只在c51中可用
10樓:吶喊狠明顯
相同點:
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是什麼意思,求通俗易懂的講解
11樓:匿名使用者
sfr是英文special function register是縮寫,中文意思是"特殊功能暫存器",用來記錄多項資料,以備cpu執行時取用,亦可讓使用者檢視,如程式指標(pc),堆疊指標(sp),累加器(acc)的內容,程式狀態字元(psw)等等。
微控制器sfr和sbit有什麼區別
墨汁諾 一 含義不同 bit位標量是c51編譯器的一種擴充資料型別,利用它可定義一個位標量,但不能定義位指標,也不能定義位陣列。它的值是一個二進位制位,不是0就是1,類似一些高階語言中的boolean型別中的true和false。sfr也是一種擴充資料型別,點用一個記憶體單元,值域為0 255。利用...
微控制器c語言中定義,微控制器C語言中 定義a1 P0 1 a2 P0 2 a8 P0 7 b P2 0 。a1 a8不斷隨機為1。
這樣實現 sbit p20 p2 0 char consum 0 char i,bitflag 0x01 for i 0 i 8 i if consum 3 p20 1 希望我的回答對你有幫助,有什麼問題歡迎一起 謝謝。 如果是c51微控制器 include void main 如果找完一次p0口後...
微控制器串列埠,微控制器串列埠作用?
關於串列埠實驗你可以看看這篇文章 手把手教你用增強型51實驗板實現rs232串列埠通訊 電子製作 2006年8月 站長原創,如需引用請註明出處 上一期,我們已經利用增強型51實驗板學會了微控制器控制步進電機轉動的方法,這一期,我們將一起來學習一下微控制器如何與pc機進行通訊,一起來完成一個簡單的rs...