请你参考:
电路
代码
#include<reg51.h>
#define LED P2
unsigned char step;
void Delayms(unsigned int x)
{
unsigned char t;
while(x--)
for(t=0;t<120;t++);
}
void main()
{
unsigned char i,j;
TCON|=0x01;
IE|=0x81;
i=0;
j=0xFF;
step=0;
while(1)
{
switch(step)
{
case 1: LED=~(1<<i);break;
case 2: j=j^0xFF;LED=j;break;
case 3: LED=0x00;break;
}
i=++i%8;
Delayms(200);
}
}
void EX0_INT() interrupt 0
{
EX0=0;
Delayms(10);
if(++step==4)
step=1;
EX0=1;
}
希望对你有所帮助!!!!
追问你的按键没有消抖~外部中断也不设置中断标志位~
我就是不知道怎么放key按键的程序和if所实现的功能~应该放在哪里?
追答我的程序里边有消抖,在第40、41行,你可以在Proteus中或实物上运行一下就知道了,别说外行话。
为什么要设置外部中断标志位???CPU响应中断时会自动清除。
实在抱歉,你的图片我真的看不清楚
key按键的程序放在中断服务程序里边,因为你这个按键是用中断来响应的,别再当作普通按键处理了。