51单片机外部中断实例

题目:

     采用外部中断0(INT0),优先级为高。在没有外部中断时使发光二极管正反循环流水点。在中断服务程序中使发光二极管交替循环点亮10次

使用keli编程、使用proteus仿真

51单片机外部中断实例_第1张图片

 代码如下:

#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar light[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xf0,0x0f};//灯亮的数组
sbit key=P3^2;
void delay(uint num)//定义延时函数
{
	uint a;
	for(a=1;a0)
				i=i-1;
			else
			{
				i=1;q=0;  //正负循环转换
			}
		}
		P1=light[i];
	}
}
void int0() interrupt 0//中断函数
{
	uint b;
	if(key==0)//  防误触
		delay(1000);
		if(key==0)
			for(b=0;b<10;b++)//交替循环点亮十次
			{
				P1=light[8];//后四个灯亮
				delay(10000);
				P1=light[9]; //前四个灯亮
				delay(10000);
			} 
}

有任何问题可以在评论区提问

你可能感兴趣的:(C51,单片机,proteus,51单片机)