一、独立按键控制LED亮灭
1.直接操作一位寄存器:
P2_0=0/1;(P2_0-7)
头文件要改成:<REGX52.H>
点亮是0,熄灭是1
2.独立按键:
按键:P3_1(按下:0,弹起:1)
3.位运算:
<<:按位左移 >>:按位右移 &:按位与
|:按位或 ^:按位异或 ~:按位取反
(按位左移一位:高位移出去,低位补0,2-8向左移一位,1位挪到8位)
(按位左移x位:<<x)
(0011 1101&1010 1001=0010 1001)(只有两个1是1,其他都是0)(可理解为对应位做乘法)
(0011 1101|1010 1001=1011 1111)(有1则1)
(0011 1101^1010 1001=1001 0100)(不同为1 相同为0)
4.按键对应:
K1-P3_1
K2-P3_0
K3-P3_2
K4-P3_3
二、独立按键控制LED状态
1.改延时代码参数:
看自己板子晶振上标的频率决定选什么
2.按键消抖,检测松手:
LED灯连接的是P2口,独立按键连接的是P3口
void main()
{
while(1)
{if(p3_1==0)
{Delay(20);
while(P3_1==1);
P2_0=~P2_0;
}
}
}
while(P3_1==0);→空循环
三、独立按键控制LED显示二进制
1.P2++:
对八位进行操作
2.代码:
void main()
{
unsigned char LEDNum=0;
while(1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1==0);
Delay(20);
LEDNum++;
P2=~LEDNum;
}
}
}
四、独立按键控制LED移位
1.代码:左移
while(1)
{
if(P3_1=0)
{Delay(20);
while(P3_1==0);
Delay(20);
LEDNum++;
if(LEDNUM>=8)
{LEDNum=0;}
P2=~(0x01<<LEDNum);
}
}
2.代码:右移
while(1)
{
if(P3_1=0)
{Delay(20);
while(P3_1==0);
Delay(20);
if(LEDNUM==0)
{
LEDNum=7;
}
else
LEDNum--;
P2=~(0x01<<LEDNum);
}
}