c51单片机独立按键控制流水灯小问题,求助大神看看我的程序错在了哪里?用c语言,开关开启后流水灯一直亮

#include"reg52.h"
#include"intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit k1=P1^0;
sbit led=P0^0;
#define led P0
void delay(u16 i)
{
while(i--);
}
void keypros()
{
if(k1==0)
{
delay(1000);
if(k1==0)
{
led=~led;
}
while(!k1);
}
}

void main()
{

u8 i;
led=0x01;
delay(50000);
led=0;
while(1)
{
keypros();
for(i=0;i<7;i++)
{
led=_crol_(led,1);
delay(50000);

}
}
}
本来是想让它的流水灯从左至右依次以0.5s的速率亮,但现在按下按键后流水灯一直全亮,可惜我是初学者,不知道错在哪里。求大神指点!该如何改正?

第1个回答  2018-12-21
主程序中delay太长了
第2个回答  2018-12-21
麻烦你把想要实现的功能表述清楚,按照你的程序,你的按键无论按否,流水灯都是亮的。本回答被网友采纳
第3个回答  2018-12-21
百折不挠
第4个回答  2018-12-21
while(1) { P1=aa; delayms(1000); aa=_crol_(aa,1); } 这前面的while(1)根本不会退出,也就是不会执行下面的if(key1 == 0)的语句了,...
更多关于c51单片机