① 51單片機SFR的定義問題
不是,P0=80H是地址為80H的一位元組數據位(8位,就是P0的8個管腳),81H位置是SP(堆棧指針)(參考AT89S52內部sfr結構)
② 51單片機的頭文件裡面的sfr P0=0x80和sfr P1=0x90這類的具體意思
因為你查SFR(特殊功能寄存器)的名稱及主要功能表時,P1埠所對應的位元組地址就是0x90,在寄存器或存儲器中一個單元即一個地址含有8個位元組,所以以P1埠為例,一整個P1的8位都在0x90地址上。
③ keil c 中的sfr定義和defne的定義有什麼區別
sfr 是KEIL中用來定義硬體寄存器地址的關鍵字,具有定義硬體特性。舉個例子:
sfr P0 =0x80
(C語言,這樣就定義了51系列MCU中0x80地址,在編程時可以用P0符號代替地址0x80,具有定義硬體特性)
在匯編中和DATA相似,舉例子:
P0 DATA 80H
(匯編語言,說明和上面一樣)
define 是KEIL中預處理命令,作為define後面字串的文本代替,一般沒有定義硬體的特性,,在使用時,前面必須加上 # 號,編譯器在編譯時,先查找代碼中的宏定義自串,然後在用在宏後面的數據去替代,例子:
#define pi 3.1415926
(以後使用中,可以用pi來代替3.1415926)
在使用define定義宏的時候,是沒有數據類型指定的,而在調用的時候被相關數據類型轉換。
Good Luck.
④ 51單片機、stm32中sfr和define的定義問題求解!!!
在51單片機中,如果你這么定義:
#define P0 (*(volatile unsigned char*)0x80)
那麼執行P0=0x25的時候,匯編就變成
MOV DPTR,#0080H
MOV A,#25H
MOVX @DPTR,A
很明顯,你就不是往埠P0賦值0x25,而是像外部匯流排上的地址0x0080寫數據0x25了,了解?
51單片機的寄存器存在於內部空間0x80-0xFF,這空間屬於直接定址,不是訪問外部匯流排。所以只能用 sfr P0=0x80來定義。
STM32單片機就不一樣,所有的外設寄存器都處於統一定址的外部空間中,所以只能用這種方法定義其地址,訪問時也類似MOVX指令的執行。
⑤ keil4里89c51的貼片單片機P4口怎麼sfr定義
直接程序前面在前面加上,或者在頭文件裡面加入也行。
sfr P4=0xe8就行了。
⑥ SFR是什麼意思,指代什麼
sfr 1.SFR是Special Function Register(特殊功能寄存器)的縮寫。 SFR是80C51單片機中各功能部件對應的寄存器,用於存放相應功能部件的控制命令,狀態或數據。它是80C51單片機中最具有特殊的部分,現在所有80C51系列功能的增加和擴展幾乎都是通過增加特殊功能寄存器SFR來達到目的的。 對於80C51系列中的80C51,共定義了26個特殊功能寄存器。在80C52中,除了80C51的26個特殊功能寄存器,還增加了5個,共計31個。 2.SFR是法國電信和網路運行商,由沃達豐掌握32%的股權,2008年收購法國網路運行商NEUF,現在主要經營電信和網路業務 3.SFR (spatial frequency response)中文解釋是"空間頻率響應",一般是利於邊沿去檢測圖像的清晰程度. 4.專用寄存器包括:1)程序計數器(PC-Program Counter)2)累加器A(ACC-Accumulator)3)B寄存器 4)程序狀態寄存器(PSW-Program Status Word)等。 5.soft frequency reuse,軟頻率復用。即處於一個小區群的邊緣用戶使用不同資源,但小區群的中心用戶使用的資源可以相同也可以不同,當然,為了節約頻譜資源,通常中心用戶common user 使用相同頻率。邊緣用戶edge user使用的是不受功率限制的頻譜資源,而中心用戶common user 使用的則是功率受限的頻譜資源。可以看出,SFR技術能夠克服ICI,即小區間干擾。
⑦ 單片機裡面SFR是什麼
SFR,特殊功能寄存器。這個概念大家可能剛開始理解不了,但是一定要記住。單片機有很多很多功能,每個功能都會對應一個或多個 SFR,我們就是通過對 SFR 的讀寫來實現單片機的多種多樣的功能的。
參考資料來源:吳鑒鷹吧
貢獻文檔:網路文庫《吳鑒鷹單片機項目實戰精講》
參考實例:吳鑒鷹單片機開發板