|
中斷,當(dāng)啟動(dòng)位打開,CNT計(jì)數(shù)溢出的時(shí)候,會(huì)觸發(fā)溢出標(biāo)志位置位,進(jìn)而送入中斷系統(tǒng)(比如日常生活中,我們?cè)谧鲆患拢蝗粺畨亻_了,我們即要先暫時(shí)放棄做目前的事,轉(zhuǎn)而去處理燒開水這個(gè)中斷事件,當(dāng)處理完成過后,又返回來繼續(xù)處理之前的事)
而這里的舉例:處理燒開水即中斷程序;之前所做的事即main函數(shù)里面的主程序#include<reg52.h>
sbit LED=P1^0;
sbit buzzer=P2^0;
void delay(void);
void main(void)
{
IT0=1;//設(shè)置外部中斷觸發(fā)方式為下降沿觸發(fā)
EX0=1;//對(duì)應(yīng)的中斷允許位打開
EA=1;//總中斷打開
PX0=0;//IE0低優(yōu)先級(jí)
buzzer=0;//開啟蜂鳴
delay();
buzzer=1;//關(guān)閉蜂鳴
while(1)
{
LED=0;//點(diǎn)亮LED
delay();
LED=1;//熄滅LED
delay();
}
}
//中斷服務(wù)程序
void INT0_ISR(void) interrupt 0
{
//IE0=0;對(duì)應(yīng)的中斷標(biāo)志位是硬件自動(dòng)清零,所以無需再軟件清零
buzzer=0;//開啟蜂鳴
delay();
buzzer=1;//關(guān)閉蜂鳴
}
void delay(void)
{
unsigned char i,j;
for(i=0;i<200;i++)
{
for(j=0;j<200;j++){;}
}
}
|
|