51單片機(jī)中斷設(shè)置
外部中斷系統(tǒng)框圖:
這些中斷請(qǐng)求源的中斷請(qǐng)求標(biāo)志位分別有特殊功能寄存器TCON和SCON的響應(yīng)位鎖存
1、TCON寄存器
與中斷有關(guān)的是低四位。
1)IT0和 IT1——外中斷請(qǐng)求觸發(fā)標(biāo)志位:
0——為低電平觸發(fā);
1——為下降沿觸發(fā)
可由軟件置位和清除
2)IE0 和 IE1——外部中斷請(qǐng)求標(biāo)志位
1——表示有中斷請(qǐng)求,CPU要響應(yīng)中斷請(qǐng)求,跳向中斷服務(wù)程序,按優(yōu)先級(jí)處理中斷程序,跳入中斷服務(wù)程序時(shí),由硬件清0;
0——表示沒有中斷請(qǐng)求。
復(fù)位值TCON都為0。
SCON為串口控制寄存器,詳見串口。
2、中斷允許寄存器IE,可以位尋址,復(fù)位為0:
各位為1時(shí)允許相應(yīng)位的中斷,為0時(shí)禁止響應(yīng)中斷。EA是總中斷開關(guān)。
注意: 單片機(jī)響應(yīng)外部中斷后,會(huì)自動(dòng)將外部中斷標(biāo)志位清0,。但由于外部中斷請(qǐng)求觸發(fā)方式的特點(diǎn),在使用外部中斷中要避免重復(fù)請(qǐng)求問題。
外部中斷0編程步奏;
1、設(shè)置外部中斷請(qǐng)求允許位,設(shè)置IE寄存器中的EA EX0位;
2、選擇合適的外部中斷請(qǐng)求方式,即設(shè)置TCON中的IT0 (或者IT1);
3、編寫中斷服務(wù)函數(shù)。
實(shí)例:
main()
{
IT0 = 1; //設(shè)置外中斷0為下降沿觸發(fā)
EX0 = 1; //開放外部中斷0
EA = 1; //開總中斷
while (1)
;
}
void ext_interrupt(void) interrupt 0
{
delay(5);
if (button0 == 0) {
led = !led;
}
}