在單片機中有一些獨立的存儲單元是用來控制這些器件的,被稱之為特殊功能寄存器(SFR)。
<特殊功能寄存器地址映象表(一)>
<特殊功能寄存器地址映象表(二)>
<特殊功能寄存器地址映象表(三)>
幾個常用的SFR
1、ACC:累加器,常常用A表示。這是個什么東西,可不能從名字上理解,它是一個寄存器,而不是一個做加法的東西,為什么給它這么一個名字呢?或許是因為在運算器做運算時其中一個數(shù)一定是在ACC中的緣故吧。它的名字特殊,身份也特殊,稍后我們將學(xué)到指令,能發(fā)現(xiàn),所有的運算類指令都離不開它。
2、B:一個寄存器。在做乘、除法時放乘數(shù)或除數(shù),不做乘除法時,隨你怎么用。
3、PSW:程序狀態(tài)字。這是一個很重要的東西,里面放了CPU工作時的很多狀態(tài),借此,我們能了解CPU的當(dāng)前狀態(tài),并作出對應(yīng)的處理。它的各位功能請看下表。
PSW也稱為標(biāo)志寄存器,了解這個對于了解單片機原理非常的重要,存放各有關(guān)標(biāo)志。其結(jié)構(gòu)和定義如下:
sfr各位的用途
(1)CY:進位標(biāo)志。用于表示Acc.7有否向更高位進位。8051中的運算器是一種8位的運算器,我們知道,8位運算器只能表示到0-255,如果做加法的話,兩數(shù)相加可能會超過255,這樣最高位就會丟失,造成運算的錯誤,怎么辦?最高位就進到這里來。這樣就沒事了。
例:78H+97H(01111000+10010111)
(2)AC:輔助進位標(biāo)志也叫半進位標(biāo)志。 用于表示Acc.3有否向Acc.4進位
例:57H+3AH(01010111+00111010)
(3)F0:用戶標(biāo)志位,由我們(編程人員)決定什么時候用,什么時候不用。
(4)RS1、RS0:工作寄存器組選擇位。這個我們已知了。
RS1、RS0 = 00 —— 0區(qū)(00H~07H)
RS1、RS0 = 01 —— 1區(qū)(08H~0FH)
RS1、RS0 = 10 —— 2區(qū)(10H~17H)
RS1、RS0 = 11 —— 3區(qū)(18H~1FH)
(5)0V:溢出標(biāo)志位。 表示Acc在有符號數(shù)算術(shù)運算中的溢出,什么是溢出我們稍后再談吧。
(6)P:奇偶校驗位:它用來表示ALU運算結(jié)果中二進制數(shù)位“1”的個數(shù)的奇偶性。若為奇數(shù),則P=1,不然為0。
例:某運算結(jié)果是78H(01111000),顯然1的個數(shù)為偶數(shù),所以P=0。
4、DPTR(DPH、DPL):數(shù)據(jù)指針,能用它來訪問外部數(shù)據(jù)存儲器中的任一單元,如果不用,也能作為通用寄存器來用,由我們自已決定如何使用。16位,由兩個8位寄存器DPH、DPL組成。主要用于存放一個16位地址,作為訪問外部存儲器(外RAM和ROM)的地址指針。
5、P0、P1、P2、P3:這個我們已經(jīng)知道,是四個并行輸入/輸出口的寄存器。它里面的內(nèi)容對應(yīng)著管腳的輸出。
6、SP:堆棧指針。(專用于指出堆棧頂部數(shù)據(jù)的地址。)
【學(xué)習(xí)建議】其實并不需要把上面的這些東西都死記硬背在腦子里面,這是很難的,我們只需要理解工作原理,一次看不懂就要多看幾次,等到要寫程序的時候,我們再把這些表格拿出來查閱。
以上所有信息僅作為學(xué)習(xí)交流使用,不作為任何學(xué)習(xí)和商業(yè)標(biāo)準(zhǔn)。若您對文中任何信息有異議,歡迎隨時提出,謝謝!
-
單片機
+關(guān)注
關(guān)注
6043文章
44623瀏覽量
638834
發(fā)布評論請先 登錄
相關(guān)推薦
百度百科啟動“繁星計劃”
半導(dǎo)體術(shù)語小百科
單片機基本io功能調(diào)試過程
單片機io口怎么配置成輸出口
ARM寄存器的分類及功能
寄存器根據(jù)功能的不同分為哪兩種
寄存器有哪幾種?可以實現(xiàn)什么功能?
寄存器分為基本寄存器和什么兩種
寄存器和單片機的關(guān)系與區(qū)別
什么是寄存器?有哪些功能和應(yīng)用?
硬件特殊功能寄存器編程思路和RAM使用的問題求解?
寄存器的定義和功能 寄存器的分類和工作原理
?51單片機串口通信詳細介紹-小白必看
![?51<b class='flag-5'>單片機</b>串口通信詳細介紹-小白必看](https://file1.elecfans.com/web2/M00/CA/86/wKgZomYfJtSAR25GAAA4_qAJ84Y871.png)
評論