找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 3940|回復(fù): 1
收起左側(cè)

關(guān)于中檔PIC系列單片機(jī)的頁(yè)和PCLATH

[復(fù)制鏈接]
ID:104287 發(fā)表于 2016-1-31 20:49 | 顯示全部樓層 |閱讀模式

首先想從CALL和GOTO指令的機(jī)器碼講起。PIC16是14位的長(zhǎng)字指令,操作碼和操作數(shù)放到同一個(gè)指令字里,也就是所謂單字指令。

CALL 指令(14位的指令字長(zhǎng))

-------------------------------------------

| 1| 0| 0| k| k| k| k| k| k| k| k| k| k| k|

-------------------------------------------

100是CALL指令的操作碼,GOTO指令類似上面,只是操作碼為101.后面11位的k,就是所要CALL或者GOTO的地址。顯然,11位的地址只能訪問(wèn)2K的地址范圍,為了實(shí)現(xiàn)在8K范圍內(nèi)調(diào)用和跳轉(zhuǎn),于是引入了Page的概念。Page其實(shí)就是實(shí)際要調(diào)用或跳轉(zhuǎn)到的地址的高兩位。PC的高兩位在發(fā)生GOTO或CALL指令時(shí)從PCLATH寄存器的4:3位裝入(如下圖)

   PCLATH 5bits

----------------

|4|3|          |

----------------

  |

  V

---------------- ---------------------

|x|x|          | |                   |  (實(shí)際PC)

---------------- ---------------------

   PCH 5bits           PCL 8bits

PC 13bit地址,可尋址8K字程序空間。

所以,在CALL或者GOTO指令執(zhí)行前,要設(shè)定好PCLATH的4:3位,也就是設(shè)置好Page.PC的高位字節(jié)PCH是不可由程序直接寫(xiě)入的,它必須是在PC改變時(shí)通過(guò)它的鎖存器PCLATH裝入。PCLATH始終是作為裝載PCH用的一個(gè)鎖存器,它自己的值不會(huì)隨著PCH的改變而改變。一個(gè)很簡(jiǎn)單的例子,程序假如順序執(zhí)行從00一直到8K末尾,這樣PCH的最高兩位也就從00一直變成11,但PCLATH的高兩位,如果你沒(méi)有人為改變,原來(lái)是什么還是什么。當(dāng)CALL子程序時(shí),CALL指令當(dāng)前PC+1的13位PC地址壓入堆棧(因?yàn)橛布褩J呛蚉C等寬的)。所以RETURN時(shí)能從堆棧彈出整個(gè)13位PC的返回地址,就不再需瓚≒CLATH了。但是,要記住,不設(shè)定并不代表它自己會(huì)改變。假設(shè)你CALL之前設(shè)定到Page1了,Return之后回到Page0了,但此時(shí),PCLATH里的4:3位還是0:1。當(dāng)發(fā)生直接修改PC時(shí),也就是直接改寫(xiě)PCL,如addwf PCL,F

此時(shí),在改寫(xiě)PCL的同時(shí),作為PCH鎖存器的PCLATH會(huì)把整個(gè)5位的值瞬間傳遞給PCH,如下圖

PCLATH 5bits

----------------

| 4| 3| 2| 1| 0|

----------------     程序修改PC低位字節(jié)

       |                  |

       V                  V

---------------- ---------------------

| x| x| x| x| x| |                   |  (實(shí)際PC)

---------------- ---------------------

  PCH 5bits           PCL 8bits


PCLATH是個(gè)很重要的寄存器,你對(duì)它稍不注意,它就會(huì)讓你跑飛.

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:124627 發(fā)表于 2016-6-2 10:05 | 顯示全部樓層
謝謝樓主分享經(jīng)驗(yàn)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表