單片機(jī)c語言函數(shù)中斷函數(shù)(中斷服務(wù)程序)

單片機(jī)c語言函數(shù)中斷函數(shù)(中斷服務(wù)程序)

ID:8823517

大?。?7.47 KB

頁數(shù):2頁

時(shí)間:2018-04-08

單片機(jī)c語言函數(shù)中斷函數(shù)(中斷服務(wù)程序)_第1頁
單片機(jī)c語言函數(shù)中斷函數(shù)(中斷服務(wù)程序)_第2頁
資源描述:

《單片機(jī)c語言函數(shù)中斷函數(shù)(中斷服務(wù)程序)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

1、單片機(jī)_C語言函數(shù)_中斷函數(shù)(中斷服務(wù)程序)?????在開始寫中斷函數(shù)之前,我們來一起回顧一下,單片機(jī)的中斷系統(tǒng)。?????中斷的意思(學(xué)習(xí)過微機(jī)原理與接口技術(shù)的同學(xué),沒學(xué)過單片機(jī),也應(yīng)該知道),我們在這里就不講了,首先來回憶下中斷系統(tǒng)涉及到哪些問題。????(1)中斷源:中斷請求信號的來源。(8051有3個(gè)內(nèi)部中斷源T0,T1,串行口,2個(gè)外部中斷源INT0,INT1(這兩個(gè)低電平有效,上面的那個(gè)橫杠不知道怎么加上去))????(2)中斷響應(yīng)與返回:CPU采集到中斷請求信號,怎樣轉(zhuǎn)向特定的中斷服務(wù)子程序,并在執(zhí)行完之后返回被中斷程序繼續(xù)執(zhí)行。期間涉及到CPU響應(yīng)中

2、斷的條件,現(xiàn)場保護(hù),現(xiàn)場恢復(fù)。????(3)優(yōu)先級控制:中斷優(yōu)先級的控制就形成了中斷嵌套(8051允許有兩級的中斷嵌套,優(yōu)先權(quán)順序?yàn)镮NT0,T0,INT1,T1,串行口),同一個(gè)優(yōu)先級的中斷,還存在優(yōu)先權(quán)的高低。優(yōu)先級是可以編程的,而優(yōu)先權(quán)是固定的。?????80C51的原則是①同優(yōu)先級,先響應(yīng)高優(yōu)先權(quán)②低優(yōu)先級能被高優(yōu)先級中斷③正在進(jìn)行的中斷不能被同一級的中斷請求或低優(yōu)先級的中斷請求中斷。?????80C51的中斷系統(tǒng)涉及到的中斷控制有中斷請求,中斷允許,中斷優(yōu)先級控制????(1)3個(gè)內(nèi)部中斷源T0,T1,串行口,2個(gè)外部中斷源INT0,INT1????(2)

3、中斷控制寄存器:定時(shí)和外中斷控制寄存器TCON(包括T0、T1,INT0、INT1),串行控制寄存器SCON,中斷允許寄存器IE,中斷優(yōu)先級寄存器IP?????具體的是什么,包括哪些標(biāo)志位,在這里不講了,所有書上面都會(huì)講。?????在這里我們講下注意的事項(xiàng)?????(1)CPU響應(yīng)中斷后,TF0(T0中斷標(biāo)志位)和TF1由硬件自動(dòng)清0。?????(2)CPU響應(yīng)中斷后,在邊沿觸發(fā)方式下,IE0(外部中斷INT0請求標(biāo)志位)和IE1由硬件自動(dòng)清零;在電平觸發(fā)方式下,不能自動(dòng)清楚IE0和IE1。所以在中斷返回前必須撤出INT0和INT1引腳的低電平,否則就會(huì)出現(xiàn)一次中斷

4、被CPU多次響應(yīng)。?????(3)串口中斷中,CPU響應(yīng)中斷后,TI(串行口發(fā)送中斷請求標(biāo)志位)和RI(接收中斷請求標(biāo)志位)必須由軟件清零。?????(4)單片機(jī)復(fù)位后,TCON,SCON給位清零。C51語言允許用戶自己寫中斷服務(wù)子程序(中斷函數(shù))首先來了解程序的格式:void函數(shù)名()interruptm[usingn]?{}關(guān)鍵字?interruptm[usingn]?表示這是一個(gè)中斷函數(shù)m為中斷源的編號,有五個(gè)中斷源,取值為0,1,2,3,4,中斷編號會(huì)告訴編譯器中斷程序的入口地址,執(zhí)行該程序時(shí),這個(gè)地址會(huì)傳個(gè)程序計(jì)數(shù)器PC,于是CPU開始從這里一條一條的執(zhí)行

5、程序指令。n為單片機(jī)工作寄存器組(又稱通用寄存器組)編號,共四組,取值為0,1,2,3中斷號中斷源0???????外部中斷01???????定時(shí)器02???????外部中斷13???????定時(shí)器1中斷4???????串行口中斷這5個(gè)中斷源的中斷入口地址為:(在上一篇文章中講到的ROM前43個(gè)存儲(chǔ)單元就是他們,這40個(gè)地址用來存放中斷處理程序的地址單元,每一個(gè)類中斷的存儲(chǔ)單元只有8B,顯然不是中斷處理的程序,而是存放著中斷處理程序的真正地址)INT0:0003H???0T0:???000BH???1INT1:0013H???2T1:??001BH????3串口:00

6、23H???4中斷向量(中斷入口地址)=中斷號x8+3?????前面m意思很清楚,不同的m值表示這個(gè)函數(shù)是針對不同的中斷源,比如m為1是表示它是定時(shí)器0的中斷函數(shù),如voidtime0()interrupt1{}?????那么后面的usingn又是什么意思呢?在正在執(zhí)行一個(gè)特定任務(wù)時(shí),有更緊急的事情需要CPU來處理,涉及到中斷優(yōu)先權(quán)。高優(yōu)先權(quán)中斷低優(yōu)先權(quán)正在處理的程序,所以最好給每個(gè)優(yōu)先程序分配不同的寄存器組。?????CPU正在處理某個(gè)事件,突然另外一個(gè)事件需要處理,于是進(jìn)入中斷后,而你不想將現(xiàn)在執(zhí)行的程序的各寄存器狀態(tài)入棧,那么可以把這個(gè)中斷程序放入另一個(gè)寄存器

7、組,如切換到1組,然后退出中斷時(shí),再切回到0組(原來的程序在0組)。?????為了更好的了解這里意思,你可以看看工作寄存器組的作用是什么。下面的注意事項(xiàng)轉(zhuǎn)自網(wǎng)絡(luò)上其他朋友的文章(整理下,重復(fù)的去掉了,寫的非常好):(1)中斷函數(shù)不能進(jìn)行參數(shù)傳遞(2)中斷函數(shù)沒有返回值(3)在任何情況下都不能直接調(diào)用中斷函數(shù)(4)中斷函數(shù)使用浮點(diǎn)運(yùn)算要保存浮點(diǎn)寄存器的狀態(tài)。?(5)如果在中斷函數(shù)中調(diào)用了其它函數(shù),則被調(diào)用函數(shù)所使用的寄存器必須與中斷函數(shù)相同,被調(diào)函數(shù)最好設(shè)置為可重入的。?(6)C51編譯器對中斷函數(shù)編譯時(shí)會(huì)自動(dòng)在程序開始和結(jié)束處加上相應(yīng)的內(nèi)容,具體如下:在程序開始

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。