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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51中斷函數(shù)學(xué)習(xí)筆記

          51中斷函數(shù)學(xué)習(xí)筆記

          作者: 時間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
          釋疑:void Timer0() interrupt 1 using 1

          Timer0 是函數(shù)名,隨便取的

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

          interrupt xx using y

          跟在interrupt 后面的xx 值得是中斷號,就是說這個函數(shù)對應(yīng)第幾個中斷端口,一般在51

          0 外部中斷0

          1 定時器0

          2 外部中斷1

          3 定時器1

          4 串行中斷

          實(shí)際上編譯的時候就是把你這個函數(shù)的入口地址方到這個對應(yīng)中斷的跳轉(zhuǎn)地址

          using y 這個y是說這個中斷函數(shù)使用的那個寄存器組,51里面一般有4組 r0 -- r7寄存器,一共有32個,如果你的終端函數(shù)和別的程序用的不是同一個寄存器組則進(jìn)入中斷的時候就不會將寄存器組壓入堆棧返回時也不會談出來節(jié)省代碼和時間

          MCS-數(shù)注意如下:
          (1)中斷函數(shù)不能進(jìn)行參數(shù)傳遞,如果中斷函數(shù)中包含任何參數(shù)聲明都將導(dǎo)致編譯出錯。
          (2)中斷函數(shù)沒有返回值,如果企圖定義一個返回值將得不到正確的結(jié)果,建議在定義中斷函數(shù)時將其定義為void類型,以明確說明沒有返回值。
          (3)在任何情況下都不能直接調(diào)用中斷函數(shù),否則會產(chǎn)生編譯錯誤。因?yàn)橹袛嗪瘮?shù)的返回是由8051單片機(jī)的RETI指令完成的,RETI指令影響8051單片機(jī)的硬件中斷系統(tǒng)。如果在沒有實(shí)際中斷情況下直接調(diào)用中斷函數(shù),RETI指令的操作結(jié)果會產(chǎn)生一個致命的錯誤。
          (4)如果在中斷函數(shù)中調(diào)用了其它函數(shù),則被調(diào)用函數(shù)所使用的寄存器必須與中斷函數(shù)相同。否則會產(chǎn)生不正確的結(jié)果。
          (5)C51編譯器對中斷函數(shù)編譯時會自動在程序開始和結(jié)束處加上相應(yīng)的內(nèi)容,具體如下:在程序開始處對ACC、B、DPH、DPL和PSW入棧,結(jié)束時出棧。中斷函數(shù)未加using n修飾符的,開始時還要將R0~R1入棧,結(jié)束時出棧。如中斷函數(shù)加using n修飾符,則在開始將PSW入棧后還要修改PSW中的工作寄存器組選擇位。
          (6)C51編譯器從絕對地址8m+3處產(chǎn)生一個中斷向量,其中m為中斷號,也即interrupt后面的數(shù)字。該向量包含一個到中斷函數(shù)入口地址的絕對跳轉(zhuǎn)。
          (7)中斷函數(shù)最好寫在文件的尾部,并且禁止使用extern存儲類型說明。防止其它程序調(diào)用。



          關(guān)鍵詞: 51中斷函

          評論


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