51单片机,用两个按键分别控制两个led,一个亮/灭,另一个闪烁/灭,为什么我按下了第二个灯不闪呢? 100
#include"reg52.h"typedefunsignedcharu8;typedefunsignedintu16;sbitled1=P0^0;sbitk1=P1^...
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit led1=P0^0;
sbit k1=P1^0;
sbit led5=P0^4;
sbit k5=P1^4;
void delay(u16 i)
{
while(i--);
}
void keypros()
{
if(k1==0)
{
delay(1000);
if(k1==0);
{
led1=~led1;
}
while(!k1);
}
if(k5==0)
{
delay(1000);
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit led1=P0^0;
sbit k1=P1^0;
sbit led5=P0^4;
sbit k5=P1^4;
void delay(u16 i)
{
while(i--);
}
void keypros()
{
if(k1==0)
{
delay(1000);
if(k1==0);
{
led1=~led1;
}
while(!k1);
}
if(k5==0)
{
delay(1000);
if(k5==0);
{
led5=1;
delay(5000);
led5=0;
delay(5000);
}
while(!k5);
}
}
void main()
{
led1=0;
led5=1;
while(1)
{
keypros();
}
}
新人初学,请教大神指点!
第二个灯不能持续闪烁,只是在按得一瞬间闪一下就灭了,我想按一下持续闪烁,再按一下就熄灭 展开
typedef unsigned char u8;
typedef unsigned int u16;
sbit led1=P0^0;
sbit k1=P1^0;
sbit led5=P0^4;
sbit k5=P1^4;
void delay(u16 i)
{
while(i--);
}
void keypros()
{
if(k1==0)
{
delay(1000);
if(k1==0);
{
led1=~led1;
}
while(!k1);
}
if(k5==0)
{
delay(1000);
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit led1=P0^0;
sbit k1=P1^0;
sbit led5=P0^4;
sbit k5=P1^4;
void delay(u16 i)
{
while(i--);
}
void keypros()
{
if(k1==0)
{
delay(1000);
if(k1==0);
{
led1=~led1;
}
while(!k1);
}
if(k5==0)
{
delay(1000);
if(k5==0);
{
led5=1;
delay(5000);
led5=0;
delay(5000);
}
while(!k5);
}
}
void main()
{
led1=0;
led5=1;
while(1)
{
keypros();
}
}
新人初学,请教大神指点!
第二个灯不能持续闪烁,只是在按得一瞬间闪一下就灭了,我想按一下持续闪烁,再按一下就熄灭 展开
展开全部
你的led1=~led1;这个语句没有循环,所以只会反转一次。要么加循环,要么再写一个闪烁函数。
void led_filcker(usigned char x)
{
while(x)
{
led1=~led1;
x--:
}
}
如果你是想,按一下,松开也会闪烁,再按一下熄灭。你得定义一个变量来表示按键的按下。
#include<reg52.h>
#define uchar unsigned char
bit stop=1;
sbit k5=P1^4;
void delay(uchar xms)
{
while(xms--);
}
void main()
{
if(k5==0)
{
delay(1000);
if(k5==0)
{
while(k5==0)
{
if(stop)
<<<<<<<<<<<<<<<此处执行你的语句
else
stop=~stop:
}
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询