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