新聞中心

C51中斷之感受

作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏

中斷給及時處理突發(fā)事件帶來了方便.但也帶來的風(fēng)險!設(shè)置好中斷,寫好中斷程序是不是就萬事大吉了那?那肯定不是.

本文引用地址:http://butianyuan.cn/article/201611/321166.htm

如果中斷程序是一個獨立程序來處理一個獨立事件,不和任何程序傳遞數(shù)據(jù)和關(guān)聯(lián).這樣的中斷帶來的麻煩相對較少.而且也容易發(fā)現(xiàn).比如響應(yīng)中斷工作與延時會讓延時函數(shù)變的不準(zhǔn)確等問題.

如果中斷程序它和其它函數(shù)之間有數(shù)據(jù)傳遞和關(guān)聯(lián).那就要特別小心了.比如中斷程序中要改變一個標(biāo)志位的狀態(tài).另外一個函數(shù)里要判斷這個標(biāo)志位,根據(jù)標(biāo)志位的狀態(tài)做一些處理.而這個判斷表達(dá)式又比較長,要由多個標(biāo)志位參與,那么這個判斷標(biāo)志位的邏輯語句就要盡量精簡.而且要考慮好邏輯優(yōu)先級!中斷事件隨時發(fā)生,那也就以為可以隨時打斷正在執(zhí)行的任務(wù).當(dāng)然也可以打斷正在執(zhí)行的判斷邏輯語句.如果整個邏輯語句比較長,當(dāng)執(zhí)行了一半被中斷打斷,而中斷程序里又要改變這個邏輯語句中沒有執(zhí)行的標(biāo)志位,那么這個邏輯語句就失去了應(yīng)有的作用,從而出錯.所以在寫程序時就要考慮到任何一個地方被中斷打斷后會發(fā)生什么樣的情況!否則就會使程序存在隱患.這樣的隱患很不好發(fā)現(xiàn).

很多文章都提出中斷函數(shù)要盡量短小.能在主程序里處理的就不要放在中斷的程序里.這觀點沒有錯,但要靈活掌握。如果不是太復(fù)雜的程序那就盡量讓中斷程序來完成.這樣可以少用標(biāo)志位和邏輯語句.程序反而更簡潔.而且比較穩(wěn)定.

程序中下降沿觸發(fā)中斷使用的很多,在使用中如不加抗干擾措施,那么中斷很容易被干擾觸發(fā)!從而出現(xiàn)錯誤!在中斷程序起始處加個延時,延時后判斷一是不是仍是低電平,是低電平運行下面的程序,否則就退出中斷處理程序.這樣做的優(yōu)點就是不增加任何硬件成本低.但會降低程序的效率!在INT0(INT1)腳對正電源接一小瓷介電容可顯著的提高抗干擾能力.有了電容就不用在中斷程序中加延時了!這兩種方法自我感覺外接電容的方法更佳.



關(guān)鍵詞: C51中

評論


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

關(guān)閉