<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > PIC單片機教程-內部硬件資源

PIC單片機教程-內部硬件資源

作者: 時(shí)間:2011-10-09 來(lái)源:網(wǎng)絡(luò ) 收藏

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



關(guān)鍵詞: PIC單片機 內部硬件資源

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>