51單片機(jī) 中斷1中斷整體介紹
>_<:51單片機(jī)上的應(yīng)用[應(yīng)用控制篇]
>_<:MCS51的中斷源
外部中斷請(qǐng)求源:即外部中斷0 和1,經(jīng)由外部引腳引入,在單片機(jī)上有兩個(gè)引腳,外稱為INT0、INT1,也就是P3.2、P3.3這兩個(gè)引腳
>_<:MCS51的中斷向量表
單片機(jī)內(nèi)部的中斷模塊在每個(gè)CPU周期都查詢各個(gè)中斷源的狀態(tài),當(dāng)其發(fā)生預(yù)期的中斷事件時(shí),通知CPU將程序跳轉(zhuǎn)到中斷服務(wù)程序所在的程序存儲(chǔ)器(ROM)地址。該地址稱為中斷向量。
中斷的實(shí)質(zhì)仍然是查詢,只是不需要用戶程序查詢,不占用CPU運(yùn)行時(shí)間而已。
51系列只有5個(gè)中斷向量,5X系列還增加一個(gè)定時(shí)器2的中斷向量
——————————————————————————————
地址中斷入口 中斷編號(hào)
——————————————————————————————
0x0 復(fù)位
0x3 外部中斷00
0xB 定時(shí)器01
0x0013 外部中斷1 2
0x001B 定時(shí)器1 3
0x0023 串口4
0x002B 定時(shí)器2(5x系列新增的) 5
——————————————————————————————
>_<:MCS51中斷運(yùn)行的機(jī)里
以INT0為例:中斷模塊在每個(gè)CPU時(shí)鐘周期都查詢P3.2的狀態(tài),當(dāng)輸入的電平由高電平變?yōu)榈碗娖綍r(shí),CPU的程序運(yùn)行會(huì)立即跳轉(zhuǎn)的到地址0x03。處理INT0中斷的代碼放在地址為0x03開始的ROM區(qū)域。c語言中采用一類特殊的函數(shù)來實(shí)現(xiàn)此代碼定位的功能,叫做 中斷服務(wù)函數(shù),格式如下:
void 函數(shù)名()interrupt N
函數(shù)名可以任意,但一般要用一個(gè)有意義的函數(shù)名,N代表中斷向量編號(hào)。
>_<:中斷控制寄存器IE
MCS51中斷系統(tǒng)中,中斷的允許或禁止是由片內(nèi)可以進(jìn)行位尋址的8位中斷允許寄存器IE來控制的。
EX0 :外中斷0中斷允許
ET0 :定時(shí)器0中斷允許
EX1 :外中斷1中斷允許
ET1 :定時(shí)器1中斷允許
ES :串行口中斷允許
ET2 :定時(shí)器2中斷允許
EA :是總開關(guān),若為0,則所有中斷都不允許。
>_<:中斷標(biāo)志及外部中斷方式選擇寄存器 TCON
IT0 :INT0觸發(fā)方式控制位,邊沿/電平觸發(fā)模式
IE0 :INT0中斷請(qǐng)標(biāo)志,
IT1 :同上
IE1 :同上
TF0 :定時(shí)器/計(jì)數(shù)器0的溢出中斷標(biāo)志
TF1 :定時(shí)器/計(jì)數(shù)器1的溢出中斷標(biāo)志
>_<:外部中斷的2種觸發(fā)模式
觸發(fā)模式由IT0和IT1控制。
1)邊沿觸發(fā):IT0(IT1)=1,INT0(INT1)為邊沿觸發(fā)方式。如果一個(gè)周期中采樣到高電平,下個(gè)周期中采樣到低電平,則硬件使IE0(IE1)置1,向CPU請(qǐng)求中斷。
2)電平觸發(fā):IT0(IT1)=0,INT0(INT1)為電平觸發(fā)方式。此時(shí)外部中斷是通過檢測P3.2(P3.3)腳的輸入電平(低電平)來觸發(fā)的。采用電平觸發(fā)時(shí),輸入腳的外部中斷源必須保持低電平有效,直到該中斷被響應(yīng)。同時(shí)在中斷返回前必須使用電平變高,否則將會(huì)再次產(chǎn)生中斷。
一般采用邊沿觸發(fā)方式,因?yàn)榇四J娇垢蓴_能力較強(qiáng),極少采用電平觸發(fā)模式。
評(píng)論