是这样子的,有这样子一个开发需求,我实验了不成功,求大神帮忙解决。。。
开发需求为:一开机就执行中断里面的函数,动作先用电灯代替,执行完中断里面的函数之后,然后再返回main执行剩下的动作,也用点亮LED控制。。
代码如下:
#include "reg51.h"
typedef unsigned int u16;
typedef unsigned char u8;
u16 a;
sbit k3=P3^2; //定义按键K3
sbit led=P3^6; //定义P36口是led
sbit led1=P3^7; //定义P37口是led1
void delay(u16 i)
{
while(i--);
}
void Int0Init()
{
IT0=1;//跳变沿出发方式(下降沿)
EX0=1;//打开INT0的中断允许。
EA=1;//打开总中断
}
void main()
{
Int0Init(); // 设置外部中断0
a=1;
while(1)
{
led=0;
}
}
void Int0() interrupt 0 //外部中断0的中断函数
{
u16 i;
if(a==1)
{ a=0;
for(i=0;i<2;i++)
{
led=0;
delay(10);
led=1;
delay(10);
}
}
}
现在的问题是没有中断服务函数没有检测的a==1,只执行了主函数while(1) 里面的
led=0; |