新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > C51中斷之感受

        C51中斷之感受

        作者: 時間:2016-11-25 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/201611/321166.htm

        如果中斷程序是一個獨立程序來處理一個獨立事件,不和任何程序傳遞數據和關聯.這樣的中斷帶來的麻煩相對較少.而且也容易發現.比如響應中斷工作與延時會讓延時函數變的不準確等問題.

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

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

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



        關鍵詞: C51中

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 上犹县| 诸暨市| 巴彦淖尔市| 娄烦县| 尚义县| 安乡县| 桐梓县| 灵丘县| 广饶县| 黄龙县| 苗栗县| 江山市| 黄梅县| 应城市| 阳西县| 赫章县| 璧山县| 日照市| 马鞍山市| 松滋市| 永泰县| 航空| 墨玉县| 安宁市| 冷水江市| 靖宇县| 大英县| 凌源市| 湄潭县| 丽水市| 永登县| 太湖县| 通渭县| 遂川县| 同心县| 浦东新区| 什邡市| 聂拉木县| 汉源县| 大同县| 武强县|