姓名:郝津銳??? 學(xué)號:19020100179??? 學(xué)院:電子工程學(xué)院
轉(zhuǎn)自:http://news.eeworld.com.cn/mcu/2018/ic-news071640358.html
【嵌牛導(dǎo)讀】本文探討了單片機(jī)中的外部中斷原理與常見方式
【嵌牛鼻子】單片機(jī)外部中斷
【嵌牛提問】單片機(jī)的外部中斷是什么,有什么作用
【嵌牛正文】
單片機(jī)在自主運(yùn)行時一般是在執(zhí)行一個死循環(huán)程序,在沒有外界干預(yù)(輸入信號)時它基本處于一個封閉狀態(tài),例如電子時鐘會按時、分、秒的規(guī)律自主運(yùn)行并通過輸出設(shè)備把時間顯示出來。在不需要對它進(jìn)行調(diào)校時它不需要外部干預(yù),自主封閉地運(yùn)行。如果這個時鐘足夠準(zhǔn)確而又不掉電的話,它可能一直處于這種封閉運(yùn)行狀態(tài)。但事情往往不會如此簡單,在時鐘剛剛上電或時鐘需要重新校準(zhǔn).甚至?xí)r鐘被帶到不同時區(qū)的時候,就需要重新對時鐘進(jìn)行調(diào)校,這時就要求時鐘必須具有調(diào)校功能。因此單片機(jī)系統(tǒng)往往又不會是一個單純的封閉系統(tǒng).它有些時候恰恰需要外部的干預(yù),這也就是外部中斷產(chǎn)生的根本原因。
要產(chǎn)生中斷,必須先配置好并使能中斷線。根據(jù)需要的邊沿檢測設(shè)置兩個觸發(fā)寄存器,同時在中斷屏蔽寄存器的相應(yīng)位寫1允許中斷請求。當(dāng)外部中斷線上發(fā)生了期待的邊沿時,將產(chǎn)生一個中斷請求,對應(yīng)的掛起位也隨之被置l。在掛起寄存器的對應(yīng)位寫1,將清除該中斷請求。如果需要產(chǎn)生事件,必須先配置好并使能事件線。根據(jù)需要的邊沿檢測通過設(shè)置兩個觸發(fā)寄存器,同時在事件屏蔽寄存器的相應(yīng)位寫1允許事件請求。當(dāng)事件線上發(fā)生了需要的邊沿時,將產(chǎn)生一個事件請求脈沖,對應(yīng)的掛起位不被置1。通過在軟件中斷/事件寄存器寫1,也可以通過軟件產(chǎn)生中斷/事件請求。
STC89C5X系列單片機(jī)提供了4個外部中斷:外部中斷O(INTO)、外部中斷1(INT1)、外部中斷2(INT2)、外部中斷3(INT3)。
51單片機(jī)的外部中斷有兩種模式:電平觸發(fā)模式和跳變沿觸發(fā)模式
當(dāng)選擇電平觸發(fā)時,單片機(jī)在每個機(jī)器周期檢查中斷源口線,檢測到低電平,即置位中斷請求標(biāo)志,向CPU請求中斷;當(dāng)選擇邊沿觸發(fā)方式時,單片機(jī)在上一個機(jī)器周期檢測到中斷源口線為高電平,下一個機(jī)器周期檢測到低電平,即置位中斷標(biāo)志,請求中斷。
這兩者之間的區(qū)別在于電平觸發(fā)模式時,中斷標(biāo)志寄存器不鎖存電平中斷請求信號,單片機(jī)把每個周期的S5P2采樣外部中斷口的電平邏輯直接賦值到中斷標(biāo)志寄存器,標(biāo)志寄存器對于請求信號來說是透明的,這樣當(dāng)中斷請求被阻塞而沒有得到及時響應(yīng)時,將被丟失。
換言之,就是要使電平觸發(fā)的中斷被CPU響應(yīng)并執(zhí)行,必須保證外部中斷源口線的低電平維持到中斷被執(zhí)行為止。因此當(dāng)CPU正在執(zhí)行同級中斷或更高級中斷期間,產(chǎn)生的外部中斷源(產(chǎn)生低電平)如果在該中斷執(zhí)行完畢之前撤銷(變?yōu)楦唠娖?了,那么將得不到響應(yīng),就如同沒發(fā)生一樣。同樣,當(dāng)CPU在執(zhí)行不可被中斷的指令(如RETI)時,產(chǎn)生的電平觸發(fā)中斷如果時間太短,也得不到執(zhí)行。
而使用邊沿觸發(fā)方式時,中斷標(biāo)志寄存器鎖存了中斷請求。中斷口線上一個從高到低的跳變將記錄在標(biāo)志寄存器中,直到CPU響應(yīng)并轉(zhuǎn)向該中斷服務(wù)程序時,由硬件自動清除。
因此當(dāng)CPU正在執(zhí)行同級中斷(甚至是外部中斷本身)或高級中斷時,產(chǎn)生的外部中斷(負(fù)跳變)同樣將被記錄在中斷標(biāo)志寄存器中。在該中斷退出后,將被響應(yīng)執(zhí)行。如果你不希望這樣,必須在中斷退出之前,手工清除外部中斷標(biāo)志。