中断,当启动位打开,CNT计数溢出的时候,会触发溢出标志位置位,进而送入中断系统(比如日常生活中,我们在做一件事,突然烧水壶开了,我们即要先暂时放弃做目前的事,转而去处理烧开水这个中断事件,当处理完成过后,又返回来继续处理之前的事)
而这里的举例:处理烧开水即中断程序;之前所做的事即main函数里面的主程序#include<reg52.h>
sbit LED=P1^0;
sbit buzzer=P2^0;
void delay(void);
void main(void)
{
IT0=1;//设置外部中断触发方式为下降沿触发
EX0=1;//对应的中断允许位打开
EA=1;//总中断打开
PX0=0;//IE0低优先级
buzzer=0;//开启蜂鸣
delay();
buzzer=1;//关闭蜂鸣
while(1)
{
LED=0;//点亮LED
delay();
LED=1;//熄灭LED
delay();
}
}
//中断服务程序
void INT0_ISR(void) interrupt 0
{
//IE0=0;对应的中断标志位是硬件自动清零,所以无需再软件清零
buzzer=0;//开启蜂鸣
delay();
buzzer=1;//关闭蜂鸣
}
void delay(void)
{
unsigned char i,j;
for(i=0;i<200;i++)
{
for(j=0;j<200;j++){;}
}
}
|