姓名:郝津銳??? 學(xué)號(hào):19020100179??? 學(xué)院:電子工程學(xué)院
轉(zhuǎn)自:http://news.eeworld.com.cn/mcu/2018/ic-news071640358.html
【嵌牛導(dǎo)讀】本文探討了單片機(jī)中的外部中斷原理與常見方式
【嵌牛鼻子】單片機(jī)外部中斷
【嵌牛提問】單片機(jī)的外部中斷是什么冤留,有什么作用
【嵌牛正文】
單片機(jī)在自主運(yùn)行時(shí)一般是在執(zhí)行一個(gè)死循環(huán)程序碧囊,在沒有外界干預(yù)(輸入信號(hào))時(shí)它基本處于一個(gè)封閉狀態(tài),例如電子時(shí)鐘會(huì)按時(shí)纤怒、分糯而、秒的規(guī)律自主運(yùn)行并通過輸出設(shè)備把時(shí)間顯示出來。在不需要對(duì)它進(jìn)行調(diào)校時(shí)它不需要外部干預(yù)泊窘,自主封閉地運(yùn)行熄驼。如果這個(gè)時(shí)鐘足夠準(zhǔn)確而又不掉電的話,它可能一直處于這種封閉運(yùn)行狀態(tài)烘豹。但事情往往不會(huì)如此簡(jiǎn)單瓜贾,在時(shí)鐘剛剛上電或時(shí)鐘需要重新校準(zhǔn).甚至?xí)r鐘被帶到不同時(shí)區(qū)的時(shí)候,就需要重新對(duì)時(shí)鐘進(jìn)行調(diào)校携悯,這時(shí)就要求時(shí)鐘必須具有調(diào)校功能祭芦。因此單片機(jī)系統(tǒng)往往又不會(huì)是一個(gè)單純的封閉系統(tǒng).它有些時(shí)候恰恰需要外部的干預(yù),這也就是外部中斷產(chǎn)生的根本原因憔鬼。
要產(chǎn)生中斷实束,必須先配置好并使能中斷線。根據(jù)需要的邊沿檢測(cè)設(shè)置兩個(gè)觸發(fā)寄存器逊彭,同時(shí)在中斷屏蔽寄存器的相應(yīng)位寫1允許中斷請(qǐng)求。當(dāng)外部中斷線上發(fā)生了期待的邊沿時(shí)构订,將產(chǎn)生一個(gè)中斷請(qǐng)求侮叮,對(duì)應(yīng)的掛起位也隨之被置l。在掛起寄存器的對(duì)應(yīng)位寫1悼瘾,將清除該中斷請(qǐng)求囊榜。如果需要產(chǎn)生事件,必須先配置好并使能事件線亥宿。根據(jù)需要的邊沿檢測(cè)通過設(shè)置兩個(gè)觸發(fā)寄存器卸勺,同時(shí)在事件屏蔽寄存器的相應(yīng)位寫1允許事件請(qǐng)求。當(dāng)事件線上發(fā)生了需要的邊沿時(shí)烫扼,將產(chǎn)生一個(gè)事件請(qǐng)求脈沖曙求,對(duì)應(yīng)的掛起位不被置1。通過在軟件中斷/事件寄存器寫1,也可以通過軟件產(chǎn)生中斷/事件請(qǐng)求悟狱。
STC89C5X系列單片機(jī)提供了4個(gè)外部中斷:外部中斷O(INTO)静浴、外部中斷1(INT1)、外部中斷2(INT2)挤渐、外部中斷3(INT3)苹享。
51單片機(jī)的外部中斷有兩種模式:電平觸發(fā)模式和跳變沿觸發(fā)模式
當(dāng)選擇電平觸發(fā)時(shí),單片機(jī)在每個(gè)機(jī)器周期檢查中斷源口線浴麻,檢測(cè)到低電平得问,即置位中斷請(qǐng)求標(biāo)志,向CPU請(qǐng)求中斷软免;當(dāng)選擇邊沿觸發(fā)方式時(shí)宫纬,單片機(jī)在上一個(gè)機(jī)器周期檢測(cè)到中斷源口線為高電平,下一個(gè)機(jī)器周期檢測(cè)到低電平或杠,即置位中斷標(biāo)志哪怔,請(qǐng)求中斷。
這兩者之間的區(qū)別在于電平觸發(fā)模式時(shí)向抢,中斷標(biāo)志寄存器不鎖存電平中斷請(qǐng)求信號(hào)认境,單片機(jī)把每個(gè)周期的S5P2采樣外部中斷口的電平邏輯直接賦值到中斷標(biāo)志寄存器,標(biāo)志寄存器對(duì)于請(qǐng)求信號(hào)來說是透明的挟鸠,這樣當(dāng)中斷請(qǐng)求被阻塞而沒有得到及時(shí)響應(yīng)時(shí)叉信,將被丟失。
換言之艘希,就是要使電平觸發(fā)的中斷被CPU響應(yīng)并執(zhí)行硼身,必須保證外部中斷源口線的低電平維持到中斷被執(zhí)行為止。因此當(dāng)CPU正在執(zhí)行同級(jí)中斷或更高級(jí)中斷期間覆享,產(chǎn)生的外部中斷源(產(chǎn)生低電平)如果在該中斷執(zhí)行完畢之前撤銷(變?yōu)楦唠娖?了佳遂,那么將得不到響應(yīng),就如同沒發(fā)生一樣撒顿。同樣丑罪,當(dāng)CPU在執(zhí)行不可被中斷的指令(如RETI)時(shí),產(chǎn)生的電平觸發(fā)中斷如果時(shí)間太短凤壁,也得不到執(zhí)行吩屹。
而使用邊沿觸發(fā)方式時(shí),中斷標(biāo)志寄存器鎖存了中斷請(qǐng)求拧抖。中斷口線上一個(gè)從高到低的跳變將記錄在標(biāo)志寄存器中煤搜,直到CPU響應(yīng)并轉(zhuǎn)向該中斷服務(wù)程序時(shí),由硬件自動(dòng)清除唧席。
因此當(dāng)CPU正在執(zhí)行同級(jí)中斷(甚至是外部中斷本身)或高級(jí)中斷時(shí)擦盾,產(chǎn)生的外部中斷(負(fù)跳變)同樣將被記錄在中斷標(biāo)志寄存器中嘲驾。在該中斷退出后,將被響應(yīng)執(zhí)行厌衙。如果你不希望這樣距淫,必須在中斷退出之前,手工清除外部中斷標(biāo)志婶希。