新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機(jī)與程序設(shè)計(下)

        單片機(jī)與程序設(shè)計(下)

        作者: 時間:2018-08-09 來源:網(wǎng)絡(luò) 收藏

        本文引用地址:http://www.104case.com/article/201808/385982.htm

        例如,如果存在不可屏蔽中斷(NMI,即CPU不能屏蔽的中斷),那就從寫有NMI項的地址開始進(jìn)行處理(請參照《(上)》的圖2及圖3)。

        ⇒使用向量表進(jìn)行處理的流程在本系列《(上)》中進(jìn)行解說。

        (4)如上所述,向量表的NMI項中的值(地址)將轉(zhuǎn)移到程序計數(shù)器中,并從該處開始執(zhí)行。此外,如將數(shù)值設(shè)為0而產(chǎn)生錯誤時,或者欲存取到無存儲器的位置時,CPU本身將產(chǎn)生中斷并從向量表中讀取開始處理的地址。此例中,由于在檢測到程序失控時是通過獨立的看門狗定時器進(jìn)行的,所以中斷程序?qū)⑹瓜到y(tǒng)停止下來。

        (5)如為一般的周期性中斷,那么,一結(jié)束,且在入棧時將存放在堆棧中的“執(zhí)行原先執(zhí)行程序時的信息”返回到CPU。最后返回程序計數(shù)器的值,并結(jié)束從中斷返回的處理“出棧”。

        開始中斷程序時,通過來自外部的信號或從CPU本身發(fā)出的指令來開始入棧。出棧時使用“來自中斷的出棧指令”,因此編程人員無需考慮“堆棧中存放有什么信息又是按什么順序來存放的?”等問題,僅需一條指令便可進(jìn)行出棧處理。

        結(jié)合上期《(上)》的內(nèi)容,從執(zhí)行程序的觀點來分析,本期對于CPU中到底產(chǎn)生了什么變化進(jìn)行了說明。程序存放在地址空間中,且在向量表中保存有起始地址,而且還有將信息暫時存放的被稱為堆棧的內(nèi)容等等……,在進(jìn)行嵌入式編程時,必須同時考慮這些內(nèi)部動作后再進(jìn)行編程。如果可通過程序?qū)τ诟?xì)微的部分發(fā)出指示,且能發(fā)揮出該單片機(jī)的能力的話,編程將變得更加容易。

        本系列共分4期,本期為最后一期。盡管每一期都只介紹非常基礎(chǔ)的內(nèi)容,對于那些內(nèi)容,我們也盡量做到即使對于完全不具備相關(guān)知識的讀者也能看得懂。所以,請您也反復(fù)閱讀,我們相信您一定會完全理解其內(nèi)容的。


        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 乐平市| 瑞安市| 额济纳旗| 南投县| 卫辉市| 石屏县| 图木舒克市| 武定县| 巴中市| 黄大仙区| 确山县| 长沙市| 永新县| 北宁市| 曲周县| 邻水| 安义县| 若羌县| 翁牛特旗| 鹤庆县| 黑龙江省| 合江县| 万全县| 济源市| 昂仁县| 抚远县| 衡阳县| 大英县| 大渡口区| 平定县| 阿拉善右旗| 大冶市| 双桥区| 宜宾市| 洞口县| 莱芜市| 崇明县| 象山县| 盘山县| 剑川县| 江油市|