c51单片机独立按键控制流水灯小问题,求助大神看看我的程序错在了哪里?用c语言,开关开启后流水灯一直亮
#include"reg52.h"#include"intrins.h"typedefunsignedcharu8;typedefunsignedintu16;sbitk...
#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的速率亮,但现在按下按键后流水灯一直全亮,可惜我是初学者,不知道错在哪里。求大神指点!该如何改正? 展开
#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的速率亮,但现在按下按键后流水灯一直全亮,可惜我是初学者,不知道错在哪里。求大神指点!该如何改正? 展开
展开全部
主程序中delay太长了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
意法半导体(中国)投资有限公司
2020-01-15 广告
2020-01-15 广告
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
麻烦你把想要实现的功能表述清楚,按照你的程序,你的按键无论按否,流水灯都是亮的。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while(1) { P1=aa; delayms(1000); aa=_crol_(aa,1); } 这前面的while(1)根本不会退出,也就是不会执行下面的if(key1 == 0)的语句了,...
更多关于c51单片机
更多关于c51单片机
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询