新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC16C5X單片機的狀態寄存器

        PIC16C5X單片機的狀態寄存器

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

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

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

        其它影響狀態位的指令可參考指令系統的說明。

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

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

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

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

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

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

        [5].TO(D4):WDT溢出標志位。當上電或執行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”,上電或執行CLR WDT指令時,TO、PD都被置“1”,這兩位的變化如表2所示。上電復位時,Z、DC、C標志位狀態不定。在其它復位情況下(如WDT溢出)Z、DC、C狀態不變。上電復位TO、PD的狀態見表3。
        表2 事件對TO、PD標志位的影響
        事件TOPD說明
        上電11不影響PD標志位
        WDT超時溢出0X
        SLEEP指令10
        CLR WDT指令11
        表3 復位后TO、PD標志位的狀態
        TOPD復位原因
        00WDT超時溢出使SLEEP喚醒
        01WDT超時溢出(不在SLEEP狀態時)
        10MCLR加低電平使SLEEP喚醒
        11上電時
        XXMCLR加低電平
        ADDWF指令后,進位位C=1表示產生進位,執行SUBWF指令后,進位位C=0表示借位,執行ADDWF或SUBWF指令也將影響輔助進位位DC狀態。DC表示低半字節到高半字節的進位和借位。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宁晋县| 望城县| 麻城市| 四会市| 库伦旗| 平利县| 盐山县| 长武县| 漳浦县| 杭州市| 西乌珠穆沁旗| 诸城市| 石家庄市| 三门峡市| 常山县| 中宁县| 台北市| 那坡县| 家居| 台中县| 互助| 黑山县| 灌阳县| 柞水县| 惠州市| 庆安县| 铅山县| 福建省| 延吉市| 慈溪市| 洮南市| 刚察县| 许昌市| 凤阳县| 昆山市| 前郭尔| 太和县| 青岛市| 开化县| 瓦房店市| 兴国县|