- 單片機原理及應用系統設計
- 胡景春主編
- 1178字
- 2021-10-27 13:42:43
2.5.3 特殊功能寄存器
特殊功能寄存器(Special Function Register,SFR)實質是各外圍部件的控制寄存器及狀態寄存器,綜合反映單片機內部實際的工作狀態及工作方式,用戶通過對SFR的設置和控制,來實現對單片機各種功能的運用。與普通的8051單片機相比,增強型STC89系列單片機的SFR增加了20多個。
STC89系列的SFR見表2-4,其中符號斜體字表示的為STC89系列新增加的SFR,有部分原有寄存器中的位也進行了新的定義。應該注意,SFR中能被8整除的這部分寄存器是可以進行位尋址的。由表2-4可見,SFR的不同位都有各自的定義,實現不同的功能。下面先介紹某些SFR,其余的SFR與片內外圍部件密切相關,將在介紹片內外圍部件時進行介紹。
表2-4 特殊功能寄存器

(續)

1.堆棧指針SP
堆棧指針是指示堆棧頂部在內部RAM塊中的地址的特殊功能寄存器。
51單片機堆棧結構是向上生長型,即數據壓入堆棧會使SP增大。單片機復位后,SP為07H,使得堆棧實際上從08H單元開始,由于08H~1FH單元分別屬于1~3組的工作寄存器區,最好在復位后把SP值改為60H或更大值,避免堆棧與工作寄存器沖突。
堆棧主要是為子程序調用和中斷操作而設,用于保護斷點和現場。
1)保護斷點。無論子程序調用還是中斷服務子程序調用,最終都要返回主程序,這個返回地址叫斷點。應預先把主程序的斷點在堆棧中保護起來,為程序正確返回做準備。
2)保護現場。執行子程序或中斷服務子程序時,要用到一些寄存器單元,會破壞原有內容。此時,要把有關寄存器單元的內容送入堆棧保存起來,即“保護現場”。
堆棧有兩種操作:數據壓入(PUSH)堆棧和數據彈出(POP)堆棧。數據壓入堆棧,SP自動加1;數據彈出堆棧,SP自動減1。
2.寄存器B
寄存器B為執行乘法和除法而設。在不執行乘、除法操作的情況下,可把它當作一個普通寄存器來使用。
乘法:兩乘數分別在A、B中,執行乘法指令后,乘積在BA中。
除法:被除數取自A,除數取自B,商存放在A中,余數存于B中。
3.輔助寄存器AUXR
由表2-4可見,輔助寄存器AUXR定義了兩位有效位。
1)ALEOFF:ALE的禁止/允許位。
0:ALE有效,發出脈沖。
1:ALE僅在執行MOVC和MOVX類指令時有效,不訪問外部存儲器時,ALE不輸出脈沖信號。
2)EXTRAM:禁止/允許擴展RAM。
0:內部擴展RAM可以訪問。(注意:內部擴展RAM是通過MOVX指令訪問的。)
1:禁止訪問內部擴展RAM。
4.數據指針DPTR0和DPTR1
雙數據指針寄存器便于訪問數據存儲器。DPTR0:普通型8051單片機原有的數據指針;DPTR1:新增加的數據指針。這兩個數據指針共用一個地址,可通過AUXR1.0的DSP位來選擇。
數據指針可作為一個16位寄存器來用,也可作為兩個獨立的8位寄存器DP0H(或DP1H)和DP0L(或DP1L)來用。
5.AUXR1寄存器
AUXR1是輔助寄存器。DPS為數據指針寄存器選擇位。
0:選擇數據指針寄存器DPTR0,復位時默認選用DPTR0。
1:選擇數據指針寄存器DPTR1。
6.看門狗定時器WDT
包含1個14位計數器和看門狗定時器控制寄存器(WDT_CONTR)。當CPU由于干擾,程序陷入“死循環”或“跑飛”狀態時,WDT提供了一種使程序恢復正常運行的有效手段。WDT_CONTR將在后面介紹。
- Learning AngularJS Animations
- 電腦維護與故障排除傻瓜書(Windows 10適用)
- SDL Game Development
- Deep Learning with PyTorch
- 現代辦公設備使用與維護
- Unity 5.x Game Development Blueprints
- Mastering Manga Studio 5
- OUYA Game Development by Example
- BeagleBone Robotic Projects
- 新編電腦組裝與硬件維修從入門到精通
- 計算機電路基礎(第2版)
- 單片機項目設計教程
- Angular 6 by Example
- Drupal Rules How-to
- 微服務架構實戰:基于Spring Boot、Spring Cloud、Docker