單片機與程序設計(下)
例如,如果存在不可屏蔽中斷(NMI,即CPU不能屏蔽的中斷),那就從寫(xiě)有NMI項的地址開(kāi)始進(jìn)行處理(請參照《單片機與程序設計(上)》的圖2及圖3)。
⇒使用向量表進(jìn)行處理的流程在本系列《單片機與程序設計(上)》中進(jìn)行解說(shuō)。
(4)如上所述,向量表的NMI項中的值(地址)將轉移到程序計數器中,并從該處開(kāi)始執行。此外,如將數值設為0而產(chǎn)生錯誤時(shí),或者欲存取到無(wú)存儲器的位置時(shí),CPU本身將產(chǎn)生中斷并從向量表中讀取開(kāi)始處理的地址。此例中,由于在檢測到程序失控時(shí)是通過(guò)獨立的看門(mén)狗定時(shí)器進(jìn)行中斷處理的,所以中斷程序將使系統停止下來(lái)。
(5)如為一般的周期性中斷,那么,中斷處理一結束,且在入棧時(shí)將存放在堆棧中的“執行原先執行程序時(shí)的信息”返回到CPU。最后返回程序計數器的值,并結束從中斷返回的處理“出棧”。
開(kāi)始中斷程序時(shí),通過(guò)來(lái)自外部的信號或從CPU本身發(fā)出的指令來(lái)開(kāi)始入棧。出棧時(shí)使用“來(lái)自中斷的出棧指令”,因此編程人員無(wú)需考慮“堆棧中存放有什么信息又是按什么順序來(lái)存放的?”等問(wèn)題,僅需一條指令便可進(jìn)行出棧處理。
結合上期《單片機與程序設計(上)》的內容,從執行程序的觀(guān)點(diǎn)來(lái)分析,本期對于CPU中到底產(chǎn)生了什么變化進(jìn)行了說(shuō)明。程序存放在地址空間中,且在向量表中保存有起始地址,而且還有將信息暫時(shí)存放的被稱(chēng)為堆棧的內容等等……,在進(jìn)行嵌入式編程時(shí),必須同時(shí)考慮這些內部動(dòng)作后再進(jìn)行編程。如果可通過(guò)程序對于更細微的部分發(fā)出指示,且能發(fā)揮出該單片機的能力的話(huà),編程將變得更加容易。
本系列共分4期,本期為最后一期。盡管每一期都只介紹非?;A的內容,對于那些內容,我們也盡量做到即使對于完全不具備相關(guān)知識的讀者也能看得懂。所以,請您也反復閱讀,我們相信您一定會(huì )完全理解其內容的。
評論