官术网_书友最值得收藏!

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將在后面介紹。

主站蜘蛛池模板: 丹阳市| 临汾市| 论坛| 同心县| 乌海市| 昌邑市| 连州市| 左贡县| 丹棱县| 遵义市| 南郑县| 玛沁县| 罗江县| 兖州市| 营口市| 阿合奇县| 革吉县| 永川市| 广南县| 炉霍县| 临沧市| 明光市| 本溪| 西安市| 义马市| 昔阳县| 大英县| 大洼县| 原阳县| 尼玛县| 南汇区| 射洪县| 宁城县| 平安县| 监利县| 安陆市| 临高县| 彭阳县| 广平县| 湖北省| 普定县|