二、独立按键控制LED灯
独立按键在按下时开关接通,松开时开关断开
独立按键控制LED亮灭
void main()
{
while(1)
{
if(P3_1==0 || P3_0==0) //如果K1按键或K2按键按下
{
P2_0=0; //LED1输出0,点亮。控制P2寄存器的第0位
}
else
{
P2_0=1; //LED1输出1,熄灭
}
}
}
// 这个例子需要长按才能显示
独立按键控制LED状态
void main()
{
while(1)
{
if(P3_1==0) //如果K1按键按下
{
Delay(20); //延时消抖,按键的按下和松开操作都会有一个不稳定的电平
while(P3_1==0);
//松手检测,如果是按下状态,就不会跳出循环,因为单片机通电就默认是高电平
Delay(20); //延时消抖
P2_0=~P2_0; //LED1取反
}
}
}
独立按键控制LED显示二进制
void main()
{
unsigned char LEDNum=0;
while(1)
{
if(P3_1==0) //如果K1按键按下
{
Delay(20); //延时消抖
while(P3_1==0); //松手检测
Delay(20); //延时消抖
LEDNum++; //变量自增
P2=~LEDNum; //变量取反输出给LED
}
}
}
独立按键控制LED移位
unsigned char LEDNum;// 全局变量默认初始化为0
void main()
{
P2=~0x01; //上电默认LED1点亮,设置第一个LED亮
while(1)
{
if(P3_1==0) //如果K1按键按下
{
Delay(20);
while(P3_1==0);
Delay(20);
LEDNum++; //LEDNum自增
LEDNum%=8; //限制LEDNum自增范围
P2=~(0x01<<LEDNum); //LED的第LEDNum位点亮
}
if(P3_0==0) //如果K2按键按下
{
Delay(20);
while(P3_0==0);
Delay(20);
// if(LEDNum==0) //LEDNum减到0后变为7
// LEDNum=7;
// else //LEDNum未减到0,自减
// LEDNum--;
LEDNum+=8;// 防止越界,因为他是无符号
LEDNum--;
LEDNum%=8;
P2=~(0x01<<LEDNum); //LED的第LEDNum位点亮
}
}
}