#include <reg52.h>
sbit key0=P1^0; //按键位
sbit D=P3^2; //外部中断口
void keydelay(int z)//消抖延时函数
{
int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delaytime(int ms)//控制小灯的闪烁
{
int x,y;
for(x=ms;x>0;x--)
for(y=200;y>0;y--);
}
void main()
{
IT0=0;
EA=1;
EX0=1;
P1=0xff; //独立键盘位置1
while(1)
{
if(key0==0) // 判断键盘是否按下
keydelay(15);//消抖
if(key0==0)
{
D=0;//产生外部中断
while(!key0);
}
while(1)//上电时小灯闪烁
{
P0=0xfe;
delaytime(10);
P0=0xff;
delaytime(10);
}
}
}
void extinter() interrupt 0 //中断处理
{
P0=0xff; //灯灭
delaytime(5);
while(1)
{
P0=0x7f;
delaytime(10);
P0=0xff;
delaytime(10);
}
}
那个的确是一个错误(大意了!不好意思!)但是改过以后运行还是不行啊!老师对我说是由于INT0口不能通过软件置0来响应中断!不知道是不是这个原因...
问题解决了!就是那个原因,我换了一种触发外部中断方式就可以了
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |