一个流水灯程序,不知错在哪里,请高手支招
时间:10-02
整理:3721RD
点击:
#include<reg52.h>
#define uchar unsigned char
uchar i=1;
main()
{ P0=0xff;
EA=1;
EX0=1;
IT0=0;
while(1);
}
voidINT0 () interrupt 0
{switch(i)
{ case 1:P0=0xfe;break;
case 2:P0=0xfd;break;
case 3:P0=0xfb;break;
case 4:P0=0xf7;break;
case 5:P0=0xef;break;
case 6:P0=0xdf;break;
case 7:P0=0xbf;break;
case 8:P0=0x7f;break;
}
i++;
if(i==9)
{EA=0;EX0=0;}
}
#define uchar unsigned char
uchar i=1;
main()
{ P0=0xff;
EA=1;
EX0=1;
IT0=0;
while(1);
}
voidINT0 () interrupt 0
{switch(i)
{ case 1:P0=0xfe;break;
case 2:P0=0xfd;break;
case 3:P0=0xfb;break;
case 4:P0=0xf7;break;
case 5:P0=0xef;break;
case 6:P0=0xdf;break;
case 7:P0=0xbf;break;
case 8:P0=0x7f;break;
}
i++;
if(i==9)
{EA=0;EX0=0;}
}
干嘛用中断啊。
从你的程序看先是开启中断总允许,然后是允许外部中断零,然后设置了外部中断低电平有效,然后无限循环,在循环过程中若有按键按下或是给予低电平则转入终端服务子程序,然后就是点亮流水灯,从程序上看貌似没撒问题,不知道你是不是给对了低电平,还有这个中断是INTO,也就是P3.2脚
ITO=1 ..
#include<reg52.h>
#define uchar unsigned char
uchar i=1;
main()
{ P0=0xff;
EA=1;
EX0=1;
IT0=1;
while(1);
}
voidINT0() interrupt 0
{switch(i)
{ case 1:P1=0xfe;break;
case 2:P1=0xfd;break;
case 3:P1=0xfb;break;
case 4:P1=0xf7;break;
case 5:P1=0xef;break;
case 6:P1=0xdf;break;
case 7:P1=0xbf;break;
case 8:P1=0x7f;break;
}
i++;
if(i==9)
i=1;
}