51单片机之按键
注:K1对应的是P31(P3_1),K2对应的是P30(P3_0)
独立按键控制LED亮灭
#include <REGX52.H>
voidmain()
{
while(1)
{
if(P3_1==0)
{
P2_0=0;//亮
}
else
{
P2_0=1;//灭
}
}
}
结果:按下按键K1点亮,松下熄灭
C51数据运算
左移:0011 1100 <<1 -> 0111 1000
右移:0011 1100>>2 -> 0000 1111
C51 基本语句
独立按键控制LED 状态
按键的抖动
voidmain()
{
while(1)
{
if(P3_1==0)//按键K1按下
{
Delay(20);//按下消抖
while(P3_1==0);//检测松手
Delay(20);//松手消抖
P2_0=~P2_0;
}
}
}
独立按键控制LED显示二进制
P2口最默认值:1111 1111 0xFF
unsigned char LEDNum // 一般定义八位的寄存器
voidmain()
{
unsignedcharLEDNum=0;
while(1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1==0);
Delay(20);
LEDNum++;
P2=~LEDNum;
}
}
}
独立按键控制LED移位
左移控制LED;
unsignedcharLEDNum=0;
voidmain ()
{
while(1)
{
if(P3_1==0)//K1控制左移
{
Delay(20);
while(P3_1==0);
Delay(20);
if(LEDNum==8);//等于8重置
{
LEDNum=0;
}
P2=~(0x01<<LEDNum);
LEDNum++;
}
if(P3_0==0)//K2控制右移(左移负位数)
{
Delay(20);
while(P3_0==0);
Delay(20);
if(LEDNum==0)
LEDNum=7;
else
LEDNum--;
P2=~(0x01<<LEDNum);
}
}