機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
PIC16C5X硬件結(jié)構(gòu) 第四節(jié) 程序存儲器及堆棧
PIC16C5X硬件結(jié)構(gòu) 第四節(jié) 程序存儲器及堆棧
 更新時(shí)間:2008-7-26 17:01:43  點(diǎn)擊數(shù):3
【字體: 字體顏色

第四節(jié) 程序存儲器及堆棧

    PIC16C5X內(nèi)部有384~2K的只讀程序存貯器,下面論述其結(jié)構(gòu)和堆棧。

§1.4.1 程序存儲器結(jié)構(gòu)

    PIC16C5X程序存儲器結(jié)構(gòu)如圖1.3所示:

圖 1.2 PIC16C5X 內(nèi)部結(jié)構(gòu)

    

    從上圖可看出,PIC程序存儲器采用分頁結(jié)構(gòu),每頁長0.5K。因此對于PIC16C52程序存儲器在1頁之內(nèi),而對于PIC16C54和PIC15C55程序存儲器容量為1頁,PIC16C56和PIC16C57 的容量則分別為2頁和4頁。頁面地址由狀態(tài)寄存器f3的第5位和第6位(PA0、PA1)確定。程序轉(zhuǎn)移時(shí),在本頁內(nèi)可直接進(jìn)行;在需跨頁跳轉(zhuǎn)時(shí)(GOTO、CALL指令),則必須根據(jù)將要跳轉(zhuǎn)去的頁面,把f3中的PA0、PA1位置成相應(yīng)的值。具體請參考f3寄存器描述及§2.7.2 程序設(shè)計(jì)基礎(chǔ)的程序技巧例子。

§1.4.2 堆棧

    PIC16C5X設(shè)有二層堆棧,堆棧1和堆棧2,供子程序調(diào)用。涉及堆棧操作的指令有二條。

    1、CALL--在主程序中第一次執(zhí)行CALL指令時(shí),將PC值加1后推入堆棧1,堆棧1 原有的內(nèi)容則被推入堆棧2中。這時(shí)子程序中還可再做一次子程序嵌套,即再執(zhí)行一次 CALL指令。如果子程序調(diào)用多于二層時(shí),堆棧中只存放最近的二個(gè)返回地址。
    當(dāng)執(zhí)行一條CALL指令時(shí),狀態(tài)寄存器f3中的將頁面尋址位PA1、PA0將被置入到PC的最高二位(第11位和第10位),而PC的第9位總是被置為0,如圖1.3所示。所以這時(shí)PC 值將是

    這意味著在PIC16C5X中,子程序起始地址只能放在每個(gè)程序存儲頁面的上半頁,即低地址的那一半(000-0FF、200-2FF、400-4FF、600-6FF)。注意,這里指的是子程序的起始地址,即子程序頭。而子程序體是可以延伸到下半頁去的。
    對于PIC16C56和PIC16C57,由于程序空間分別為1K和2K,可能存在跨頁面子程序調(diào)用。所以調(diào)用子程序前必須先把f3中的PA0、PA1設(shè)置成該子程序所在的頁面地址。返回后再將其恢復(fù)成當(dāng)前的頁面值。當(dāng)然如果這時(shí)子程序是在同一頁面,則可省去這一過程。

    2、RETLW--該指令把棧頂(堆棧1)的值寫入PC,同時(shí)還把堆棧2的值拷貝到堆棧1 去。子程序總是返回到調(diào)用它時(shí)所在的地方,不管它是處在什么頁面,也不管f3寄存器中的PA0、PA1這時(shí)是指在什么頁面。但是執(zhí)行RETLW(子程序返回)指令并不會改變f3中PA0、PA1的值,所以當(dāng)你從一次跨頁面的子程序調(diào)用返回時(shí),不要忘了恢復(fù)f3中的原先的PA0和PA1值。請參考上面關(guān)于CALL指令的敘述。
    由于堆棧和PC的寬度是相同的,所以你可以在程序的任何地方執(zhí)行一條CALL 指令來調(diào)用子程序。但是對于跨頁面的調(diào)用,你要小心處理f3中的頁面地址位PA0和PA1,請參考第二章指令詳解中的CALL實(shí)例。

  • 上一篇: PIC16C5X硬件結(jié)構(gòu) 第三節(jié) PIC16C5X 內(nèi)部結(jié)構(gòu)
  • 下一篇: PIC16C5X硬件結(jié)構(gòu) 第五節(jié) 數(shù)據(jù)存儲器
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會員助手 | 免費(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ī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

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

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