单片机用外部中断实现按键按第一次实现流水灯!第二次按下实现闪烁灯!第三次按下点亮所有灯!第四次返回

单片机用外部中断实现按键按第一次实现流水灯!第二次按下实现闪烁灯!第三次按下点亮所有灯!第四次返回流水灯!要注意什么?弄了好久实现不了啊!求大神指教

请你参考:

    电路


    代码

#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按键的程序放在中断服务程序里边,因为你这个按键是用中断来响应的,别再当作普通按键处理了。

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-11-20
你有没有写好的程序,贴出来看看追问

写了

不对

请大神看!不知道key按键的程序和第三步的if所实现的功能应该放在哪里?

怎么连接起来

相似回答