新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PIC16C5X單片機的狀態(tài)寄存器

PIC16C5X單片機的狀態(tài)寄存器

作者: 時間:2016-12-02 來源:網(wǎng)絡 收藏
狀態(tài)寄存器f3
該寄存器包含有ALU的算術狀態(tài)位,RESET狀態(tài)位、大于512字節(jié)程序存儲器的頁面預選位。

狀態(tài)寄存器f3可以用作目標寄存器。某些標志位通過相應的寫來設定,而另外一些位是不能通過指令來改變的。TO、PD位是不可寫的。因此一條指令對狀態(tài)寄存器執(zhí)行的結果會有所不同。例如CLR f3被除了TO和PD位之外的所有位清“0”,并把“Z”位置“1”,所以得到的狀態(tài)寄存器內容為“000UU100”,其中,U表示不變化。

建議用BCF、BSF或MOVWF指令來改變狀態(tài)寄存器的內容,這些指令只改變相應的位,而不影響其它狀態(tài)位。

其它影響狀態(tài)位的指令可參考指令系統(tǒng)的說明。

狀態(tài)寄存器包含8位數(shù)據(jù)位,其中低5位是狀態(tài)標志位,高3位中的最高位PA2未用。PA0和PA1是存儲器頁面選擇位,其結構如下表所示。

表1 狀態(tài)寄存器的結構
PA2PA1PA0TOPDZDCC
D7D6D5D4D3D2D1D0
下面我們介紹各位的意義。

[1].C(D0):進位/借位標志位。在執(zhí)行ADDWF和SUBWF指令時,最高位產生進位或借位時,C=“1”,在減法采用補碼運算。

[2].DC(D1):輔助進位位。當執(zhí)行ADDWF和SUBWF指令時,低4位產生進位或借位時,DC=“1”。

[3].Z(D2):零標志位。當算術操作結果為0時,Z="1"。

[4].PD(D3):低功耗標志位。上電或執(zhí)行CLR WDT指令時,PD=“1”。執(zhí)行SLEEP指令時,PD=“0”。

[5].TO(D4):WDT溢出標志位。當上電或執(zhí)行CLR WDT、SLEEP指令時,TO=“1”,WDT溢出時,TO=“0”。

[6].PA0,PA1(D5,6):程序存儲器頁面選擇位。對于PIC16C56單片機,PA0是程序存儲器頁面選擇位。PA1是通用讀寫位。在PA=0時,選擇0頁面,即000H-1FFH。PA0=1時,選中1頁,地址為200H-3FFH。

對于PIC16C57/58單片機,PA0、PA1是程序存儲器頁面選擇位。它們的值從00-11H分別選中0-3頁,即地址為000-1FFH、200H-3FFH、400H-5FFH、600H-7FFH。

[7].PA2(D7):通用讀寫位,未使用。

在復位時,PA2,PA1,PA0被清“0”,上電或執(zhí)行CLR WDT指令時,TO、PD都被置“1”,這兩位的變化如表2所示。上電復位時,Z、DC、C標志位狀態(tài)不定。在其它復位情況下(如WDT溢出)Z、DC、C狀態(tài)不變。上電復位TO、PD的狀態(tài)見表3。
表2 事件對TO、PD標志位的影響
事件TOPD說明
上電11不影響PD標志位
WDT超時溢出0X
SLEEP指令10
CLR WDT指令11
表3 復位后TO、PD標志位的狀態(tài)
TOPD復位原因
00WDT超時溢出使SLEEP喚醒
01WDT超時溢出(不在SLEEP狀態(tài)時)
10MCLR加低電平使SLEEP喚醒
11上電時
XXMCLR加低電平
ADDWF指令后,進位位C=1表示產生進位,執(zhí)行SUBWF指令后,進位位C=0表示借位,執(zhí)行ADDWF或SUBWF指令也將影響輔助進位位DC狀態(tài)。DC表示低半字節(jié)到高半字節(jié)的進位和借位。



評論


技術專區(qū)

關閉