接著昨天,繼續說按鍵的事。昨天說的是掃描檢測,今個說一下中斷檢測。先插播一個小故事~~ 當年我和凱凱學單片機的時候,我用掃描檢測的方法做的項目,他用中斷檢測的方法做的項目。當我倆坐一起交流按鍵檢測的方式時,他火了,直接跳起來跟我吼:你不用中斷怎么檢測? 當時我就意識到他可能陷入了只能用中斷的誤區,然后就樂呵呵的說:用掃描啊~ 他繼續吼,我繼續樂,我倆就這樣陷入了死循環。終于都累了,然后把程序和原理給他看,了解~ 在STC89C52單片機上,具有外部中斷功能的引腳有兩個:P3.2 –INT0 和 P3.3-INT1。上電默認的情況下,他們是普通IO引腳;當配置好相關寄存器之后,他們就變成了具有中斷檢測功能的引腳。 外部中斷相關的寄存器有兩個:TCON 和 IE。圖示如下: 特殊功能寄存器IE IT0和IE0對應P3.2引腳的中斷功能配置,IT1 和 IE1對應P3.3 引腳的中斷功能配置。 當IT0 = 0 的時候,該中斷的觸發方式為低電平觸發。 當IT0 = 1 的時候,該中斷的觸發方式為下降沿觸發。 當中斷被觸發時,IE0 被自動置一,當CPU相應中斷,處理中斷程序時,IE0 自動清零。 IT1 和 IE1 同理,不做解釋。 EA是什么?它是這個單片機中斷功能的總開關!只有當它等于1的時候,各個中斷的請求才可以被允許,不然的話都是被屏蔽的。 ES是串口中斷允許位。 ET1是定時/計數器1溢出中斷允許位。 ET0是定時/計數器0溢出中斷允許位。 EX1是外部中斷1允許位。 EX0是外部中斷0允許位。 就是說,當我們想用外部中斷0的時候,必須總中斷(EA)和外部中斷(EX0)同時打開才能用,缺一不可! 這些寄存器的資料那里來的? 上官網找器件手冊,這是最權威的文檔。找的過程中,既鍛煉了查找資料的能力,又鍛煉了閱讀資料的能力,這在以后的工作中是必備的。 好了,上程序。依舊是按鍵控制LED翻轉,這次是用中斷觸發的方式,下降沿觸發。 程序下載鏈接:
KEY_INT.zip
(26.86 KB, 下載次數: 152)
2015-3-20 23:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
對了,留個思考題 interrupt 后面的0 和using 后面的1分別是什么意思?
|