機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
PIC16C5X單片機(jī)概述
PIC16C5X單片機(jī)概述
 更新時(shí)間:2009-7-22 16:41:08  點(diǎn)擊數(shù):0
【字體: 字體顏色

     [3].PIC16C5X單片機(jī)引腳圖

 數(shù)據(jù)存儲(chǔ)器分為操作寄存器、I/O寄存器、通用寄存器和專用寄存器四種。由于專用寄存器地址對(duì)用戶不透明,我們將在后面的章節(jié)中論述。操作寄存器和I/O寄存器占用的物理地址是01H—07H,通用寄存器從地址08H開始。

    1.操作寄存器文件
    操作寄存器文件是寄存器文件的一種,它是專用的寄存器。它和通用寄存器文件有很大的區(qū)別。通用寄存器文件是用于存放數(shù)據(jù)的,而操作寄存器文件則用于尋址、定時(shí)等各種特殊用途。操作寄存器文件包括間接數(shù)據(jù)尋址寄存器f0、實(shí)時(shí)時(shí)鐘/計(jì)數(shù)器f1(RTCC)、程序計(jì)數(shù)器f2(PC)、狀態(tài)寄存器f3(STATUS)、文件選擇寄存器f4(FSR)等。下面我們分別介紹這些寄存器。

    [1].間接尋址寄存器f0
    這不是一個(gè)物理寄存器,尋址f0則會(huì)讀出文件選擇寄存器f4的內(nèi)容,并對(duì)f4所指定的文件寄存器進(jìn)行間接尋址操作。f0常用作間接尋址指針。例如指令A(yù)DDWF f0,W把f4(FSR)所指的寄存器的內(nèi)容和W寄存器相加,結(jié)果存于w,f0本身不存任何價(jià)值。

    [2].實(shí)時(shí)時(shí)鐘/計(jì)數(shù)器f1(RTCC)
    該寄存器和其它寄存器一樣,可通過程序?qū)懭牒妥x出。它用于對(duì)加在RTCC引腳上的脈沖計(jì)數(shù)(用作計(jì)數(shù)器)或?qū)?nèi)部時(shí)鐘計(jì)數(shù)(對(duì)fOSC4分頻后計(jì)數(shù),做定時(shí)器用)。RTCC的結(jié)構(gòu)框圖如下圖所示。

3.程序計(jì)數(shù)器f2(PC)
    程序計(jì)數(shù)器給出片內(nèi)2048x12的ROM地址,不同的型號(hào)程序計(jì)數(shù)器與它們的兩層堆棧為9-11位寛,如表1所示。

 4.狀態(tài)寄存器f3
    該寄存器包含有ALU的算術(shù)狀態(tài)位,RESET狀態(tài)位、大于512字節(jié)程序存儲(chǔ)器的頁面預(yù)選位。

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

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

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

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


    寄存器OPTION各位定義如下:

    [1]. RTS(D5):RTCC信號(hào)選擇位,RTS=0時(shí),選中內(nèi)部指令周期時(shí)鐘(CLKOUT)為輸入信號(hào),在RTS=1時(shí),選中RTCC引腳輸入的信號(hào)。

    [2]. RTE(D4):RTCC信號(hào)邊沿選擇位,RTE=0時(shí),選中RTCC引腳輸入信號(hào)的上升沿計(jì)數(shù),RTE=1時(shí),RTCC引腳輸入信號(hào)下降沿觸發(fā)。

    [3]. RTS(D3):預(yù)分頻器分配位。PSA=0時(shí),把預(yù)分頻器分配給RTCC,PSA=1時(shí),把預(yù)分頻器分配給WDT。

    [4]. PS0-PS2(D2-D0):預(yù)分頻值,它用于確定分頻器的分頻比,定義如下表所示。


/script>

 PIC系列單片機(jī)是美國Microchip公司推出的具有精簡(jiǎn)指令集高性能8位單片機(jī),其優(yōu)點(diǎn)是引腳少,性能優(yōu)越,可直接帶LED負(fù)載,具有低功耗省電模式,可廣泛應(yīng)用于復(fù)雜程度較低的場(chǎng)合。十多年來PIC系列單片正以迅猛的速度發(fā)展。

    在這一章節(jié)里我們將以PIC16C5X系列單片機(jī)為例,詳細(xì)講解PIC單片機(jī)的內(nèi)部結(jié)構(gòu)及工作原理。

     [1].PIC16C5X單片機(jī)概況

    PIC16C5X屬CMOS單片機(jī),是一個(gè)低價(jià)位高性能8位單片機(jī),使用了僅有33條精簡(jiǎn)指令集、單字節(jié)單周期指令,每條指令執(zhí)行時(shí)間最快可達(dá)200ns。易于記憶和使用的指令系統(tǒng)可大大減少產(chǎn)品的開發(fā)時(shí)間。多種時(shí)鐘振蕩電路睡眠低功耗省電模式及WDT(看門狗)帶碼保護(hù)功能,這些特性具有較大優(yōu)勢(shì)。PIC16C5X系列單片機(jī)可廣泛應(yīng)用于電機(jī)控制、汽車電路、家用電器等領(lǐng)域。

     [2].PIC16C5X單片機(jī)主要性能

     RISC精簡(jiǎn)指令集,指令僅有33條,指令長(zhǎng)度為12位。
     絕大部分均為單機(jī)器周期指令。
     工作速度高,最快可達(dá)200ns(20MHz時(shí)鐘時(shí))。
     數(shù)據(jù)長(zhǎng)度為8位。
     片內(nèi)程序存儲(chǔ)器容量為512-2kbyte。
     片內(nèi)靜態(tài)數(shù)據(jù)存儲(chǔ)器(SRAM)為25-73byte
     硬件組成7個(gè)專用寄存器
     兩級(jí)硬件堆棧。
     有直接、間接、相對(duì)和位尋址功能。
     12-20條I/O引腳,每條引腳均可設(shè)置為輸入和輸出態(tài)。
     多種時(shí)鐘振蕩電路及WDT定時(shí)器電路
     寬工作電壓范圍和低功耗模式:工作電壓為2.5V-6.0V,典型工作電流為2mA,睡眠狀態(tài)僅為3uA。
     程序保密位,有效地保護(hù)用戶的產(chǎn)權(quán)。

    PIC16C5X系列單片機(jī)有多種不同的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)、I/O引腳、振蕩類型、振蕩頻率及封裝形式。這些器件可為研發(fā)實(shí)驗(yàn)提供方便,四種振蕩方式是RC、XT、HS和LP,所需的振蕩器是通過對(duì)片內(nèi)的EPROM編程實(shí)現(xiàn)的,未編程狀態(tài)器件為默認(rèn)的RC振蕩方式。

    下表是PIC16C5X系列單片機(jī)一覽表:

PIC16C5X系列單片機(jī)一覽表
型號(hào)EPROMRAM時(shí)鐘頻率定時(shí)器工作電壓VI/O口數(shù)封裝形式
PIC16C52384x1225DC-4MHz12.5-6.01218DIP/SOIC
PIC16C54512x12DC-20MHz1+WDT
PIC16C552028DIP/SOIC
PIC16C5610241218DIP/SOIC
PIC16C572048722028DIP/SOIC
PIC16C58731218DIP/SOIC


    PIC16C5X系列單片機(jī)有兩種封裝形式,一種是雙列直插方式,另一種是表面貼裝方式。其引腳如上圖所示,F(xiàn)對(duì)其功能引腳簡(jiǎn)述如下:

    [1].RA0-RA3 I/O輸入輸出口A,對(duì)應(yīng)內(nèi)部的f5,是一個(gè)4位I/O端口,可位控。

    [2].RB0-RB7 I/O輸入輸出口B,對(duì)應(yīng)內(nèi)部的f6,是一個(gè)8位I/O端口,可位控。

    [3].RC0-RC3 I/O輸入輸出口C,對(duì)應(yīng)內(nèi)部的f7,是一個(gè)8位I/O端口,可位控。只有PIC16C55和PIC16C57才有。

    [4].RTCC 實(shí)時(shí)時(shí)鐘/計(jì)數(shù)器輸入端,在此端口輸入信號(hào)的上升沿或下降沿計(jì)數(shù),邊沿可通過軟件選擇。

    [5].MCLR 主復(fù)位端,當(dāng)MCLR為低電平時(shí)對(duì)單片機(jī)復(fù)位。

    [6].OSC1 振蕩信號(hào)輸入端。這個(gè)端口用于外部振蕩信號(hào)的輸入,用RC振蕩時(shí),它接RC電路,用石英振蕩電路時(shí),接石英晶體一端。

    [7].OSC2 振蕩信號(hào)輸出端。在用石英晶體振蕩器或陶瓷振蕩器時(shí)通過一個(gè)串聯(lián)電阻R接振蕩晶體一端,在RC振蕩時(shí)常作CLKOUT輸出(CLKOUT=1/4fosc)。

    [8].VDD 電源電壓。一般為5V,其范圍在2.5-6.25V之間。

    [9].Vss 地端。

    [10].NC 空引腳。PIC16C5X系列單片機(jī)是一個(gè)低功耗、高速、全靜態(tài)CMOS單片機(jī),含ROM、RAM、I/O及中央處理器單元。這種結(jié)構(gòu)基于寄存器文件概念,有獨(dú)立的數(shù)據(jù)和程序存儲(chǔ)器總線。數(shù)據(jù)總線及數(shù)據(jù)器(RAM)是8位字寬,程序總線及程序存儲(chǔ)器(ROM)是12位字寬。這種概念強(qiáng)調(diào)位、字節(jié)和寄存器操作,CPU能在指令讀取和執(zhí)行過程的重疊中高速工作,即當(dāng)一條指令執(zhí)行時(shí),下一條指令已經(jīng)從程序存儲(chǔ)器讀出,有效地提高CPU的運(yùn)算速度,同時(shí),通用寄存器和操作寄存器同屬于一個(gè)數(shù)據(jù)存儲(chǔ)區(qū),采用相同的尋址方式,這樣寄存器的存取就非常簡(jiǎn)單,這樣的結(jié)構(gòu)體系決定了其指令系統(tǒng)相對(duì)簡(jiǎn)單但功能卻十分強(qiáng)大。

     數(shù)據(jù)寄存器文件

    PIC16C5X的8位數(shù)據(jù)總線連接兩個(gè)基本的功能部件,由32個(gè)或80個(gè)可尋址的位寄存器與I/O端口組成的寄存器文件和一個(gè)8位字寬的算術(shù)邏輯單元(ALU),32字節(jié)的RAM可直接用塊結(jié)構(gòu)尋址,每個(gè)塊為16個(gè)字節(jié),如下圖所示。使用文件選擇寄存器(f4),數(shù)據(jù)可直接尋址或間接尋址。工作寄存器w可執(zhí)行立即尋址,這種指令結(jié)構(gòu)從程序存儲(chǔ)器讀取數(shù)據(jù)送入w寄存器。

    PIC16C5X的寄存器文件分為兩個(gè)功能組,操作寄存器和通用寄存器,操作寄存器包括實(shí)時(shí)時(shí)鐘/計(jì)數(shù)器RTCC、PC、狀態(tài)寄存器、I/O寄存器(PORTS)和文件選擇寄存器,通用寄存器存放數(shù)據(jù)及控制數(shù)據(jù)。

     算術(shù)/邏輯運(yùn)算單元

    8位算術(shù)/邏輯運(yùn)算單元ALU連接一個(gè)工作寄存器(w寄存器),它是通過w寄存器對(duì)數(shù)據(jù)進(jìn)行算術(shù)和邏輯運(yùn)算,也可對(duì)w寄存器或任何文件寄存器進(jìn)行操作。

PIC16C5X系列單片機(jī)內(nèi)部有一定容量的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,程序存儲(chǔ)器的字節(jié)寬度為12位,用于存放用戶程序和數(shù)據(jù)表格。PIC16C52有384字節(jié)的程序存儲(chǔ)空間,PIC16C54/55的ROM空間為512字節(jié),PIC16C56的地址空間為1024字節(jié),PIC16C57/58則為2048個(gè)字節(jié)。PIC16C5X單片機(jī)采用的是分頁尋址方式,每頁位512字節(jié),頁面地址由狀態(tài)寄存器f3的PA0、PA1選擇。512字節(jié)的12位頁內(nèi)可直接尋址,較大的程序存儲(chǔ)器可通過選擇4個(gè)頁、每頁512字節(jié)頁面來尋址,如下圖所示。

    但當(dāng)頁面之間跳轉(zhuǎn)(GOTO CALL指令)必須先把f3的PA0、PA1設(shè)置為相應(yīng)的頁面。需要注意的是:在系統(tǒng)復(fù)位時(shí),程序計(jì)數(shù)器PC將指向程序存儲(chǔ)器最后一個(gè)頁面的最后一個(gè)單元。例如PIC16C54/55指向1FFH,PIC16C56指向3FFH,PIC16C57/58則指向7FFH。狀態(tài)寄存器f3的PA0、PA1指向零頁空間,所以程序員在編程時(shí)需要在程序存儲(chǔ)器底部放置一條跳轉(zhuǎn)指令,跳到程序入口。

    單片機(jī)執(zhí)行程序時(shí),程序計(jì)數(shù)器(PC)自動(dòng)加1,程序操作支持直接、間接、相對(duì)尋址方式,能由測(cè)試、跳轉(zhuǎn)指令、子程序調(diào)用指令、轉(zhuǎn)移指令或把算出的地址裝入PC來實(shí)現(xiàn)程序的跳轉(zhuǎn)。片內(nèi)兩級(jí)堆棧為子程序嵌套提供服務(wù)。

     堆棧

    PIC16C5X系列單片機(jī)提供兩級(jí)堆棧,參考上圖。CALL指令把程序計(jì)數(shù)器加1壓入堆棧1,棧1自動(dòng)壓入棧2,當(dāng)多于兩級(jí)子程序調(diào)用指令執(zhí)行時(shí),堆棧中只有存儲(chǔ)最近兩個(gè)返回地址,所以主程序中調(diào)用的子程序最多只能嵌套一次,當(dāng)執(zhí)行一條CALL指令,PIC16C56/57/58的f3之頁面選擇位PA1、PA0被裝入程序計(jì)數(shù)器的最高兩位,第9位清“0”,也就是子程序入口地址必須位于存儲(chǔ)頁的低半頁000-0FF、200-2FF、400-4FF、600-6FF地址。但這里指的是子程序主體的起始位置,而子程序體是可以延伸到下半頁面的。

    PIC16C56/57/58,由于程序空間分別為1k和2k,可能存在跨頁面子程序調(diào)用,所以調(diào)用子程序前須先把f3的PA1、PA0設(shè)置成該子程序所在頁面地址。誠然,如果子程序與調(diào)用程序同在一個(gè)頁面,則無需這個(gè)步驟。由于堆棧和PC的寬度是一樣的,所以可在程序的任何地方執(zhí)行CALL指令來調(diào)用子程序。當(dāng)然跨頁面的調(diào)用還須考慮頁面地址PA1、PA0。

    RETLW(子程序返回指令)把棧1內(nèi)容送到程序計(jì)數(shù)器PC,同時(shí)棧2內(nèi)容復(fù)制到棧1,多于兩個(gè)RETLW指令運(yùn)行時(shí),棧1只會(huì)裝入先前存在棧2的地址,對(duì)于PIC16C56/57,程序總是返回調(diào)用它的同一頁面,不管它是處在哪個(gè)頁面,也不管f3的頁面選擇位的設(shè)置狀態(tài)如何。但是執(zhí)行RETLW指令并不會(huì)改變f3中的PA1、PA0的值。w寄存器會(huì)被裝入RETLW指令中所指向的數(shù)值,即立即數(shù)。這在程序存儲(chǔ)器中實(shí)現(xiàn)數(shù)據(jù)查表時(shí)就非常有用。
    OPTION寄存器的PSA位控制預(yù)分頻器(prescaler)的分配對(duì)象,當(dāng)PSA位為“0”,8位可編程預(yù)分頻器分配給RTCC,這時(shí)外部或內(nèi)部信號(hào)經(jīng)過預(yù)分頻器分頻后再輸出給RTCC。預(yù)分頻器的分頻比由OPTION寄存器的PS0-PS2位決定。OPTION寄存器不在數(shù)據(jù)存儲(chǔ)器內(nèi),是一個(gè)可由“OPTION”指令尋址的特別寄存器,如果預(yù)分頻器被分配給RTCC,則寫f1會(huì)對(duì)預(yù)分頻器清“0”,但OPTION寄存器內(nèi)容保持不變,則分配對(duì)象、分頻比等均不變。

    OPTION寄存器的RTS位決定是對(duì)外部還是內(nèi)部計(jì)數(shù),當(dāng)RTS=1時(shí),對(duì)來自RTCC引腳的信號(hào)計(jì)數(shù),當(dāng)RTS=0時(shí),對(duì)fOSC/4計(jì)數(shù)。OPTION寄存器的RTE位決定RTCC腳的信號(hào)是上升沿(RTE=0)還是下降沿(RTE=1)時(shí)增1。當(dāng)RTS=0,內(nèi)部時(shí)鐘(頻率為fOSC/4)作為計(jì)數(shù)對(duì)象,RTE位、RTCC引腳與內(nèi)部電路無關(guān)。為減少功耗,RTCC腳必須連接VDD或Vss。

    當(dāng)預(yù)分頻器分配給計(jì)數(shù)器/定時(shí)器RTCC后,RTCC將計(jì)數(shù)到預(yù)分頻器值后加1,例如,如預(yù)分頻器值為1:4,則RTCC將計(jì)數(shù)4次加1。

    無論內(nèi)部還是外部時(shí)鐘是否連接預(yù)分頻器,一旦有時(shí)鐘供給RTCC,f1將加1。在計(jì)數(shù)到達(dá)FFH時(shí),在下一個(gè)計(jì)數(shù)發(fā)生后將自動(dòng)清零,重新開始計(jì)數(shù),一直循環(huán)下去。所有令f1(RTCC)加1的脈沖都將延時(shí)2個(gè)指令周期。例如在寫f1后,隨后的兩個(gè)指令周期就不加1。這獨(dú)立于外部或內(nèi)部時(shí)鐘的選取。如預(yù)分頻器分配給RTCC,預(yù)分頻器的輸出將在f1(RTCC)加1前延時(shí)兩個(gè)指令周期。對(duì)于寫或讀RTCC的指令(例如MOVF RTCC,W或CLRF RTCC)都是一樣的,在應(yīng)用RTCC時(shí),在不影響其計(jì)數(shù)情況下測(cè)試,可用MOVF f1,W指令。

    應(yīng)注意外部時(shí)鐘用于RTCC時(shí)鐘的有關(guān)情況。

    當(dāng)外部時(shí)鐘用于RTCC時(shí),它與內(nèi)部時(shí)鐘同步。所以,外部時(shí)鐘必須符合一定的要求,同樣在外部時(shí)鐘輸入邊沿到RTCC加1,存在著延時(shí),在預(yù)分頻后實(shí)現(xiàn)同步。在每個(gè)指令周期,PSOUT的輸出被采樣兩次以檢測(cè)上升或下降沿。因此,這需要PSOUT至少保持2TOSC高電平和至少保持2TOSC低電平。TOSC是振蕩周期。

    當(dāng)不用預(yù)分頻器時(shí),PSOUT輸出與RTCC時(shí)鐘輸入一樣,要求如下:

        TRTH=RTCC 高電平時(shí)間≥2TOSC+20ns
        TRTL=RTCC 低電平時(shí)間≥2TOSC+20ns

        當(dāng)用預(yù)分頻器時(shí),RTCC輸入被異步脈沖計(jì)數(shù)器型的預(yù)分頻器分頻,預(yù)分頻器輸出是對(duì)稱的。

        PSOUT=RTCC 高電平時(shí)間=PSOUT低電平時(shí)間=N.TRT/2
        當(dāng)TRT是RTCC輸入周期和N是預(yù)分頻器的值(2,4,8,……256)時(shí),要求:

        N.TRT/2≥2TOSC+20ns
        或
        TRT≥2(TOSC+20ns)/N
    用戶不需要確定RTCC高、低電平時(shí)間,但是如果RTCC的高、低電平持續(xù)時(shí)間太小,脈沖有可能不被采集。一般要求最小的高、低電平時(shí)間為10ns。RTCC輸入要求為:

        TRT=周期≥(4TOSC+40ns)/N
        TRTH=RTCC 高電平時(shí)間≥10ns
        TRTL=RTCC 低電平時(shí)間≥10ns

    外部時(shí)鐘的延時(shí),預(yù)分頻器的輸出由內(nèi)部時(shí)鐘同步,RTCC在Q4時(shí)加1,從外部時(shí)鐘邊沿出現(xiàn)到RTCC實(shí)際加1,存在著一個(gè)較小的延時(shí),在3TOSC
7TOSC之間。例如,測(cè)量?jī)蓚(gè)邊沿之間的時(shí)間間隔,其精度在±4TOSC之間。
  表1 程序計(jì)數(shù)器PC與堆棧大小
型號(hào)PC寬度/位堆棧寬度/位
PIC16C54/5599
PIC16C561010
PIC16C571111
    系統(tǒng)復(fù)位后,PC為全“1”,程序執(zhí)行每一條指令PC自動(dòng)加“1”,除非程序指令本身改變PC的內(nèi)容(例如程序跳轉(zhuǎn),中斷服務(wù)等),下面的指令將改變PC的值。

    [1].“GOTO”指令:允許直接裝入程序計(jì)數(shù)器的低8位,對(duì)于PIC16C56/57/58,PC的最高位由PA0、PA1兩個(gè)頁面選擇位(也即狀態(tài)寄存器的5、6位確定),此指令允許跳到任一頁的任意位置。

    [2].“CALL”指令:先把當(dāng)前PC的值壓入堆棧,然后使第9位清“0”,并把低8位裝入程序計(jì)數(shù)器PC,對(duì)于PIC16C56/57/58,PC的高兩位被裝入頁面選擇位PA0、PA1。

    [3].“RETLW”指令:該返回指令直接把棧頂內(nèi)容重裝入PC。

    [4].程序計(jì)數(shù)器可由某位指令改變(例如MOVWF f2,ADDWF f2或BSF f2,5)計(jì)算結(jié)果將裝入PC低8位,第9位清“0”。對(duì)于PIC16C56/57/58,PC的高兩位被裝入頁面選擇位PA0、PA1。

    需要注意的是:在執(zhí)行“CALL”或其它改變PC值指令時(shí),第9位會(huì)被清“0”,所有子程序調(diào)用指令和需要計(jì)算的跳轉(zhuǎn)指令時(shí),要把分支程序放在任何頁面(512字節(jié))的前256個(gè)單元(地址分別為000-0FFH、200-2FFH、400-4FFH、600-6FFH)。

    多個(gè)程序存儲(chǔ)器頁面選擇(對(duì)PIC16C56/57/58有效)情況下,當(dāng)程序計(jì)數(shù)器指向所在存儲(chǔ)頁的最后地址時(shí),它仍能加1,并繼續(xù)執(zhí)行到下一頁面,但PA0,PA1頁面選擇位不會(huì)改變,以后的“GOTO”、“CALL”、“ADDWF f2”、“MOVWFf2”等指令會(huì)返回原來的頁面,除非頁面選擇位在程序中被更改。例如NOP指令位于1FFH(0頁),PC加1變?yōu)?00(1頁),一條在200的“GOTO XXX”指令將返回0頁的XXX地址(若f3的頁預(yù)選位“0”)。

    RESET狀態(tài)下,PA0、PA1清“0”,0頁會(huì)成為預(yù)選頁。同時(shí)程序計(jì)數(shù)器PC會(huì)對(duì)最后一頁的最后一個(gè)單元尋址。因此,在這個(gè)位置的“GOTO”指令會(huì)自動(dòng)返回至0頁執(zhí)行。
  表1 狀態(tài)寄存器的結(jié)構(gòu)
PA2PA1PA0TOPDZDCC
D7D6D5D4D3D2D1D0
    下面我們介紹各位的意義。

    [1].C(D0):進(jìn)位/借位標(biāo)志位。在執(zhí)行ADDWF和SUBWF指令時(shí),最高位產(chǎn)生進(jìn)位或借位時(shí),C=“1”,在減法采用補(bǔ)碼運(yùn)算。

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

    [3].Z(D2):零標(biāo)志位。當(dāng)算術(shù)操作結(jié)果為0時(shí),Z="1"。

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

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

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

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

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

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

    通用寄存器文件是用于存放數(shù)據(jù)的寄存器。一般用于中間數(shù)據(jù)或結(jié)果數(shù)據(jù)存放。所有的通用寄存器構(gòu)成了通用寄存器文件。

    專用寄存器是單片機(jī)內(nèi)的物理寄存器,它們與數(shù)據(jù)存儲(chǔ)器無關(guān),專用寄存器用于特殊用途,例如I/O斷口控制等。

    1.通用寄存器
    PIC16C52/54/56的通用寄存器地址分配為F07H—F1FH,PIC16C55則為F08H—F1FH,這些地址組成了通用寄存器文件。PIC16C57/58的通用寄存器地址分配如下:

        F08H—F0FH:常用的并與存儲(chǔ)器塊無關(guān)的通用寄存器文件。

        F10H—F1FH:Bank0的通用寄存器文件。

        F20H—F2FH:等同于F00—F0FH。

        F30H—F3FH:Bank1的通用寄存器文件。

        F40H—F4FH:等同于F00—F0FH。

        F50H—F5FH:Bank2的通用寄存器文件。

        F60H—F6FH:等同于F00—F0FH。

        F70H—F7FH:Bank3的通用寄存器文件。

    2.專用寄存器
    [1].W工作寄存器
    在兩個(gè)操作量的指令中用于存放第二個(gè)操作量,同時(shí),也用于內(nèi)部數(shù)據(jù)傳送。

    [2].TRISA:A口(f5)I/O控制寄存器0-3位有效,對(duì)應(yīng)于I/O(f5)4位寬度。
    [3].TRISB:B口(f6)I/O控制寄存器。
    [4].TRISC:C口(f7)I/O控制寄存器。
    執(zhí)行TRIS指令時(shí),w寄存器的內(nèi)容將傳送至I/O控制寄存器,以此來定義各I/O口的輸入/輸出狀態(tài)。
    I/控制寄存器的某位為“1”,使相應(yīng)的I/O線置于高阻抗?fàn)顟B(tài),即輸入態(tài),某位為“0”,使相應(yīng)的I/O線置輸出態(tài)。I/O控制寄存器是只寫寄存器,復(fù)位時(shí)全為“1”。

    [5].OPTION:預(yù)分頻器/RTCC選擇寄存器。
    分配預(yù)分頻器(prescaler)給RTCC或WDT。預(yù)分頻器只能分配給RTCC或WDT其中之一使用,不能同時(shí)使用。OPTION寄存器是用于定義預(yù)分頻器的預(yù)分頻系數(shù),RTCC信號(hào)源及作用于RTCC的信號(hào)邊緣。OPTION寄存器是一個(gè)只寫6位寬度寄存器。執(zhí)行OPTION指令時(shí),會(huì)把W寄存器內(nèi)容傳送至OPTION寄存器中。在復(fù)位時(shí),OPTION寄存器被置為全“1”。

RTSRTEPSAPS2PS1PS0
D5D4D3D2D1D0
預(yù)分頻值RTCC時(shí)分頻比WDT時(shí)分頻比
0 0 01:21:1
0 0 11:41:2
0 1 01:81:4
0 1 11:161:8
1 0 01:321:16
1 0 11:641:32
1 1 01:1281:64
1 1 11:2561:128
  • 上一篇: PIC單片機(jī)指令系統(tǒng)
  • 下一篇: PIC單片機(jī)做的遙控解碼程序
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1