Keil编程:51单片机键盘控制LED

2024年12月05日 00:29
有2个网友回答
网友(1):

#include
#include
#define uchar unsigned char
uchar led1,led2;
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
void delay(int a)
{
uchar i;
while(a--)for(i=0;i<120;i++);
}
main()
{
unsigned int i;
led1=0xfe;
led2=0xfc;
while(1)
{
P0=0x55;
if(key1==0)
{
P0=led1;
led1=_crol_(led1,1);
delay(200);
}
if(key2==0)
{
P0=led2;
led1=_crol_(led1,2);
delay(200);
}
if(key3==0)
{
for(i=1;i<500;i++)
{
P0=0xff;
delay(i);
P0=0x00;
delay(500-i);
}
for(i=1;i<500;i++)
{
P0=0x00;
delay(i);
P0=0xff;
delay(500-i);
}
}
}
}

网友(2):

刚开始 输出0X55 或0xAA即可
然后判断按键是否按下
单灯流水 for(i=0;i<8;i++)
{ P1=0x01>>i;delayms(200);}
双灯流水
for(i=0;i<8;i+=2)
{ P1=0x03>>i;delayms(500);}
呼吸灯不知怎样呼吸,假如一个灯渐亮渐暗程序如下:
for(i=0;i<100;i++)
{ LED=0;delay100us(i);LED=1;delay100us(100-i);}
假设LED=0是点亮,那么上面就逐渐变亮过程
一亮一灭是10ms 250次就是2·5S
逐渐变暗过程和上面一样,只不过把LED=0 LED=1相互颠倒一下就是了