PIC單片機(jī)教程-內(nèi)部硬件資源
數(shù)據(jù)存儲(chǔ)器在單片機(jī)PIC16F84中,除了有存放程序的程序存儲(chǔ)器外,還有數(shù)據(jù)存儲(chǔ)器。單片機(jī)在執(zhí)行程序過程中,往往需要隨時(shí)向單片機(jī)輸入一些數(shù)據(jù),而且有些數(shù)據(jù)還可能隨時(shí)改變。在這種情況下就需用數(shù)據(jù)存儲(chǔ)器。由于數(shù)據(jù)存儲(chǔ)器不但要能隨時(shí)讀取存放在其各個(gè)單元內(nèi)的數(shù)據(jù),而且還需隨時(shí)寫進(jìn)新的數(shù)據(jù),或改寫原來的數(shù)據(jù)。因此,數(shù)據(jù)存儲(chǔ)器需由隨機(jī)存儲(chǔ)器RAM構(gòu)成。RAM存儲(chǔ)器在斷電時(shí),所存數(shù)據(jù)隨即丟失,這在實(shí)際應(yīng)用中有時(shí)會(huì)帶來不便。但是,在16F84單片機(jī)中有64×8位E2PROM數(shù)據(jù)存儲(chǔ)器。存放在E2PROM中的數(shù)據(jù)在斷電時(shí)不會(huì)丟失。
16F84單片機(jī)中的RAM數(shù)據(jù)存儲(chǔ)器如表1所示,該RAM分為兩個(gè)存儲(chǔ)體:即存儲(chǔ)體0(Bank0)和存儲(chǔ)體1(Bank1)。每個(gè)存儲(chǔ)體均可以直接用內(nèi)部總線傳送信息,所以它們都是以寄存器方式工作和尋址。這些八位寄存器,又可分為通用寄存器和專用寄存器兩個(gè)部分。通用寄存器存放數(shù)據(jù),專用寄存器存放控制單片機(jī)運(yùn)作的信息。每個(gè)存儲(chǔ)體最大可擴(kuò)展到7FH(128個(gè)字節(jié))。在每個(gè)存儲(chǔ)體中,專用寄存器被安排在低位地址空間,通用寄存器被安排在高位地址空間。
通用寄存器用法單一,但專用寄存器卻各有各的用處,現(xiàn)將較基本的專用寄存器作一簡(jiǎn)單介紹。
(1)程序計(jì)數(shù)器(PCL、PCLATH)。程序計(jì)數(shù)器PC是對(duì)程序進(jìn)行管理的計(jì)數(shù)器。PIC16F84的程序計(jì)數(shù)器為13位寬,最大可尋址的存儲(chǔ)空間為8k×14位。實(shí)際上16F84只使用前1k×14位(0000~03FFH)存儲(chǔ)空間。因程序計(jì)數(shù)器有13位寬,而專用寄存器只有8位。因此PC由兩個(gè)專用寄存器構(gòu)成。其低八位PCL是一個(gè)可讀/寫寄存器(地址為02H或82H),而高字節(jié)PCH(有效位5位)不能直接進(jìn)行讀/寫操作,它是通過一個(gè)8位的保持寄存器PCLATH(地址為0A或8AH)把高5位地址傳送給程序計(jì)數(shù)器的高字節(jié)。當(dāng)執(zhí)行CALL、GOTO指寫PCL時(shí),PC值的高字節(jié)就從PCLATH寄存器中裝入。
(2)狀態(tài)寄存器STATUS。狀態(tài)寄存器STATUS含有算術(shù)邏輯單元ALU運(yùn)算結(jié)果的狀態(tài)(如有無進(jìn)位等)、復(fù)位狀態(tài)及數(shù)據(jù)存儲(chǔ)體選擇位。有關(guān)位位的設(shè)定如表2所示,功能如下:
1)第0位。進(jìn)位/借位位C。執(zhí)行加、減運(yùn)算指令表2IRP RP1 RP0 TO PD Z DC C后,若結(jié)果有進(jìn)位或借位,則C被置1,否則置0。在執(zhí)行移位指令時(shí),也要用到這一位。
2)第1位。輔助進(jìn)位/借位位DC。執(zhí)行加、減運(yùn)算指令后,若結(jié)果的低四位向高四位有進(jìn)位或借位,則DC置1,否則置0。
3)第2位。零標(biāo)志位運(yùn)算結(jié)果為零,Z被置1;運(yùn)算結(jié)果不為零,Z被清零。
4)第3位。低功耗標(biāo)志位PD。上電復(fù)位或執(zhí)行CLRWDT指令后置1,執(zhí)行SLEEP指令后被清零。
5)第4位。定時(shí)時(shí)間到標(biāo)志位TO。上電復(fù)位或執(zhí)行CLRWDT、SLEEP指令后被置1,監(jiān)視定時(shí)器的定時(shí)時(shí)間到被清零。
6)第5位和第6位(RP0、RP1)。這兩位是用于直接尋址時(shí)的寄存器體選擇位。即00——選中Bank0(00H~7FH);01——選中Bank1(80H~FFH),16F84只有兩個(gè)存儲(chǔ)體。故10、11不用。
7)第7位IRP。這是間接尋址的寄存體選擇位。0——選中Bank0、1(00H~FFH),1——選中Bank2、3。16F84只有Bank0、1,所以此IRP位應(yīng)被置為0。
(3)間接尋址INDF和FSR寄存器INDF寄存器不是一個(gè)物理寄存器,而是一個(gè)邏輯功能的寄存器(地址為00H或80H),當(dāng)對(duì)INDF寄存器進(jìn)行尋址時(shí),實(shí)際上是訪問FSR寄存器內(nèi)容所指的單元,即把FSR寄存器作為間接寄存器使用。FSR稱為“寄存器選擇”寄存器,地址為(04H或84H)。對(duì)INDF寄存器本身進(jìn)行間接尋址訪問,將讀出FSR寄存器的內(nèi)容,例如當(dāng)FSR=00H時(shí),間接尋址讀出INDF的數(shù)據(jù)將為00H。用間接尋址方式寫入INDF寄存器時(shí),雖然寫入操作可能會(huì)影響STATUS中的狀態(tài)字,但寫入的數(shù)據(jù)是無效的。
評(píng)論