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

          新聞中心

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/201808/385982.htm

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

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

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

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

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

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

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


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(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); })();