<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC16C5X單片機(jī)數(shù)據(jù)存儲(chǔ)器

          PIC16C5X單片機(jī)數(shù)據(jù)存儲(chǔ)器

          作者: 時(shí)間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
          程序計(jì)數(shù)器f2(PC)
          程序計(jì)數(shù)器給出片內(nèi)2048x12的ROM地址,不同的型號(hào)程序計(jì)數(shù)器與它們的兩層堆棧為9-11位寛,如表1所示。

          表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í)行。



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();