按一下按键,跑马灯就开始跑动,按两下就熄灭,再按再亮,再按再灭,如此循环.
但是我现在的效果是按一下以后,跑马灯一直在工作,按第二下三下四下……都不起作用了,与我写程序的初衷不合,请高人帮忙.
程序如下:
#include "reg51.h"
#include
sbit A=P3^5;
void delayms(unsigned char time) // 延时子程序
{
unsigned char i;
while(time--)
{
for(i = 0; i < 120; i++);
}
}
main()
{
unsigned int i;
i=0;
if(!A)
{
unsigned int j;
for(j=0;j<1000;j++) //延时去抖
{
if(!A) //延时以后按键依然按下.
i=i++; //变量加1.
}
}
while(i%2) //奇数次就开始运行,偶数次就跳出去.
{
unsigned char LED;
LED = 0xfe;
P0 = LED;
while(1)
{
delayms(1000);
LED = _cror_(LED,1); //循环右移1位,点亮下一个LED
P0 = LED;
}
}
}