51單片機的中斷響應及撤銷

2021-01-09 電子產品世界

中斷響應

中斷響應就是單片機CPU對中斷源提出的中斷請求的接受。中斷請求被響應後,再經過一系列的操作,而後轉向中斷服務程序,完成中斷所要求的處理任務。下面簡要說明80c51的中斷響應過程:

1.外中斷採樣和內中斷置位

1.1外中斷採樣

要想知道外中斷是否有請求發生,需要對外中斷進行採樣。

當通過軟體將寄存器TCON的IT0(或IT1)位設置為0時,/INT0(或/INT1)為電平觸發方式,CPU在每個機器周期的S5P2(第五個狀態第2拍節)期間對/INT0(或/INT1)採樣,一旦在P3.2(或P3.3)上檢測到低電平時,則認為有外部中斷申請,隨即由硬體使TCON的IE0(或IE1)位置1,向CPU申請中斷。在中斷響應完成後轉向中斷服務子程序,再由硬體自動對IE0(或IE1)位清0.

當寄存器TCON的IT0(或IT1)位為1,/INT0(或/INT1)為脈衝觸發方式,則CPU在每個機器的S5P2期間對/INT0(或/INT1)採樣,當檢測到前一周期為高電平、後一周期為低電平時,由硬體使TCON的IE0(IE1)位置1,向CPU申請中斷,在中斷響應完成後轉向中斷服務子程序時,再由硬體自動對IE0(IE1)位清0.在邊沿觸發方式中,為保證CPU在兩個機器周期內檢測到由高到低的負跳變,高電平與低電平的持續時間不得少於一個機器周期的時間。

1.2內中斷置位

80c51把所有中斷標誌都集中到TCON和SCON寄存器中。其中外中斷是使用採樣的方法把中斷請求鎖定在TCON寄存器的IE0(IE1)標誌位上,而定時中斷和串行中斷的中斷請求由於都發生在晶片的內部,定時中斷可以直接去置位TCON的TF0(TF1),串行中斷可以直接去置位SCON的RI和TI。內中斷不存在採樣問題。

2.中斷查詢

所謂查詢,就是由CPU測試TCON和SCON中各標誌位的狀態,以確定有沒有中斷請求發生以及是哪一個中斷請求。單片機是在每一個機器周期的最後狀態(S6),按優先級順序對中斷請求標誌進行查詢,即先查詢高級中斷後查詢低級中斷,同級中斷按「外部中斷0—定時中斷0—外部中斷1—定時中斷1—串行中斷」的順序查詢。如果查詢到有標誌位為「1」,則表明有中斷請求發生,接著就從相鄰的下一個機器周期的S6狀態開始進行中斷響應。

由於中斷請求是隨機發生的,CPU無法預先得知,因此在程序執行過程中,中斷查詢要在指令執行的每個機器周期中不停地重複進行。換句話說,就相當於你在看書的時候,每一秒鐘都會抬起頭來聽一聽,看一看,是不是有人按門鈴,是否有電話,燒的開水是否開了。。。。。。看來,單片機比人蠢多了。

3.中斷響應

當查詢到有效的中斷請求時,緊接著就進行中斷響應。中斷響應時,根據寄存器TCON、SCON中的中斷標記,由硬體自動生成一條長調用指令LCALL XXXX,這裡的XXXX就是程序存儲器中斷區中相應中斷的入口地址。對於80c51的5個獨立中斷源,這些入口地址已由系統設定。這樣在產生了相應的中斷以後,就可轉到相應的位置去執行。

例如,對於外部中斷0的響應,產生的長調用指令為

LCALL 0003H

生成LCALL指令後,緊接著就由CPU執行,首先將當前程序計數器PC的內容(準備執行的指令的地址)壓入堆棧以保護斷點,再將中斷入口地址裝入PC,使程序轉向相應的中斷區入口地址。從中斷源所對應的向量地址中可以看出,一個中斷向量入口地址到下一個中斷向量入口地址之間只有8個單元。也就是說,中斷服務程序的長度如果超過了8B,就會佔用下一個中斷的入口地址,導致出錯。但一般情況下,很少有一段中斷服務程序只佔用少於8B的情況,為此可以在中斷入口處寫一條「LJMP XXXX」或「AJMP XXXX」指令,這樣可以把實際處理中斷的程序放到ROM的任何一個位置。

例如,若採用外中斷0,在程序的開始處可以這樣寫:

ORG 0000H

LJMP MAIN

ORG 0003H

LJMP INT_0

;以下是主程序

MAIN:

;以下是外中斷0服務程序

INT_0:

RETI

END


相關焦點

  • 51單片機在片設備與中斷(4)
    10、8051單片機響應中斷後,產生長調用指令LCALL,執行該指令的過程包括:首先把( PC )的內容壓入堆棧,以進行斷點保護,然後把長調用指令的16位地址送( PC),使程序執行轉向( 程序存儲器)中的中斷地址區。
  • 51單片機擴展中斷的四種方法
    MCS—51系列單片機內部只有兩個外部中斷源輸入端,當外部中斷源多於兩個時,就必須進行擴展,下面介紹兩種簡單的擴展方法:一、採用硬體請求和軟體查詢的方法:這種方法是:把各個中斷源通過硬體
  • 51單片機存儲器結構介紹(1)
    下圖是8051單片機存儲器的空間結構圖 MCS-51具有64kB程序存儲器尋址空間,它是用於存放用戶程序、數據和表格等信息。對於內部無ROM的8031單片機,它的程序存儲器必須外接,空間地址為64kB,此時單片機的端必須接地。強制CPU從外部程序存儲器讀取程序。
  • 51單片機PWM的控制
    二、51單片機的Timer作者用的單片機是STC89C52,其內部有3個16位Timer,分別為T/C0,T/C1,T/C2,通過配置相關寄存器即可實現Timer的功能控制相關寄存器:1.IE寄存器位名稱功能 0 EX0 外部中斷0的中斷允許位 1 ET0 Timer0的溢出中斷允許位 2 EX1 外部中斷1的中斷允許位 3 ET1 Timer1的溢出中斷允許位 4 ES 串行口中斷允許位 5 ET2 Timer 6 - - 7 EA 中斷允許總控制位2.
  • 串口中斷-即將消失的單片機技藝
    今天粉絲催更,求「串口中斷」的教程,第一次被催啊,我稍微認真點寫。之前講過中斷的概念,沒看過的小夥伴可以 看一下,今天給大家講一下,三種中斷中最不起眼的串口中斷,說實話,串口中斷不適合單獨講,適合放在通信裡去講。
  • 51單片機之計時器與計數器
    例如:外接晶振為12MHz時,51單片機相關周期的具體值為:振蕩周期=1/12us;狀態周期=1/6us;機器周期=1us;指令周期=1~4us;初始化程序應完成如下工作:對TMOD賦值,以確定T0和T1的工作方式。
  • 51單片機串口通信實例
    一、原理簡介本文引用地址:http://www.eepw.com.cn/article/170625.htm51 單片機內部有一個全雙工串行接口。什麼叫全雙工串口呢?
  • 單片機定時器中斷實現長時間定時程序
    單片機定時器中斷實現長時間定時程序#include<reg51.h> // 包含51單片機寄存器定義的頭文件
  • 51單片機還有沒有必要學?
    一、51單片機應用目前還在大量應用,如家用電器,電飯煲,電磁爐,豆漿機,冰箱,洗衣機等等小家電。幾乎智能電器都有程序控制,雖然廠家不同但內核基本都是51內核。二、51單片機入門學習首先根據個人基礎,如果是完全沒有基礎的,應該還是從51單片機入手,目前51單片機的應用還有很多,很多設備還能見到51晶片,尤其成本低的項目,出貨量特別大,51單片機入門簡單,上手快,項目開發進度快。低端產品大量使用,也是教學入門的晶片。
  • 單片機難於理解的-定時器中斷
    今天講一下單片機-定時器中斷,這個是難點中的難點,小編第一次放棄自學單片機就是中斷,第二次就是定時器中斷[泣不成聲]知道中斷後,我們看一下,這個特殊的中斷-定時器中斷。它特殊在哪呢?,有時你會因為這一點變得崩潰(身為一個小白自學,真的崩潰)說了這麼多,那我們該怎麼去學,說實話,我不建議小白從51單片機開始,直接Arduino,然後慢慢去了解底層是最好的選擇,甚至不去了解也沒事 (真的,沒必要 )
  • 基於51單片機的嵌入式SNMP代理器設計與實現
    RTL8919A(見圖3)有3種工作方式:跳線方式,網卡的I/O和中斷由跳線決定;即插即用方式,由軟體進行自動配置plug and play;免跳線方式,網卡的I/O和中斷由外接的93C46中的內容決定。
  • 基於51單片機定時器的電子時鐘設計方案
    單片機定時器在目前的產品研發和設計過程中,其主要作用是進行精準的時間定值,因此在對時間控制要求較高的數控領域中,單片機定時器的身影隨處可見。
  • 51單片機的特殊功能寄存器(SFR)
    在51單片機內部有一個CPU用來運算、控制,有四個並行I/O口,分別是P0、P1、P2、P3,有ROM,用來存放程序,有RAM,用來存放中間結果,此外還有定時/計數器,串行I/O口,中斷系統,以及一個內部的時鐘電路。
  • 51 單片機UART 串口通信 方式1 實現
    1 51串行口結構51單片機的UART串行通信是基於其串行口的可編程硬體結構,只要用正確的程序代碼通過初始化串行口對應寄存器的形式將其串行硬體結構初始化,
  • 單片機原理簡介
    在 mcs-51 中,這 8 個引腳還用於專門的第二功能。 p3 能驅動 4 個 lsttl 負載。mcs-51 有 5 個中斷源,可分為 2 個中斷優先級,即高優先級和低優先級,中斷自然優先級:外部中斷 0 ;定時器 0 中斷; 外部中斷 1 ;定時器 1 中斷 ;串行口中斷 ;定時器 2 中斷 ( 1 )同級或高優先級的中斷正在進行中; ( 2 )現在的機器周期還不是執行指令的最後一上機器周期,即正在執行的指令還沒完成前不響應任何中斷
  • 51單片機AD轉換電路設計實現
    51單片機AD轉換電路設計實現關於AD轉換的原理,大家在《數字電子技術》中已經學過,這裡做過多的介紹,本文介紹一款經典的8位AD轉換晶片ADC0804,基於51單片機設計AD轉換電路,並完成測量值的轉換。
  • 現在還有必要學習51單片機了嗎
    無意間聽到的這段對話,引出了我的一番思考,現在學單片機,尤其是8位的51單片機,真的是窮途末路了嗎?低成本晶片的主戰場當下的電子,嵌入式行業發展中,單片機的用量越來越大,應用領域越來越廣,小到20元左右的玩具,達到成百上千萬的醫療設備,無不在使用單片機。
  • 淺談STM32和51單片機之間的區別
    打開APP 淺談STM32和51單片機之間的區別 發表於 2019-01-30 09:36:46 單片微型計算機簡稱單片機,簡單來說就是集
  • LED燈的51單片機pwm控制實例
    我們知道 51單片機本身是沒有pwm接口的,這個程序是通過軟體模擬pwm.在一定的頻率的方波中,調整高電平和低電平的佔空比,即可實現LED燈亮度控制
  • 基於MCS-51系列單片機實現遙測數據存儲系統的設計
    基於MCS-51系列單片機實現遙測數據存儲系統的設計 吳芝路,任廣輝,王 發表於 2020-11-27 10:12:25   作者:吳芝路,任廣輝,王桂玲