按键控制LED移位 说明:LED灯接在P2端口,K1、K2两按键分别接在P3.1、P3.0端口。未按键时,LED灯D4点亮,K1键按下LED灯左移一位 ,K2按下时LED灯右移一位 。
时间: 2024-02-28 22:57:05 浏览: 141
好的,下面是按键控制LED移位的实现方法:
1. 首先,需要对P2端口进行初始化,使其输出高电平,这样D4点亮。
```
P2 = 0xFF; //P2端口输出高电平,D4点亮
```
2. 接下来,需要对P3.0和P3.1两个端口进行初始化,将它们设置为输入模式。
```
P3M0 = 0x03; //P3.0和P3.1设置为输入模式
P3M1 = 0x00;
```
3. 然后,在一个无限循环中,不断读取P3.0和P3.1两个端口的状态,如果K1键按下,就将LED灯左移一位;如果K2键按下,就将LED灯右移一位。
```
while(1) //无限循环
{
if(P3 & 0x01) //判断K2键是否按下
{
P2 = P2 >> 1; //LED灯右移一位
if(P2 == 0xFF) //如果灯移出了P2端口的范围,就重新回到D4
{
P2 = 0x80;
}
}
else if(P3 & 0x02) //判断K1键是否按下
{
P2 = P2 << 1; //LED灯左移一位
if(P2 == 0x00) //如果灯移出了P2端口的范围,就重新回到D4
{
P2 = 0x01;
}
}
else //如果都没按下,LED灯保持不变
{
P2 = 0xFF;
}
}
```
4. 最后,需要在程序的主函数中调用上述代码。
完整代码如下:
```
#include <reg52.h>
void main()
{
P2 = 0xFF; //P2端口输出高电平,D4点亮
P3M0 = 0x03; //P3.0和P3.1设置为输入模式
P3M1 = 0x00;
while(1) //无限循环
{
if(P3 & 0x01) //判断K2键是否按下
{
P2 = P2 >> 1; //LED灯右移一位
if(P2 == 0xFF) //如果灯移出了P2端口的范围,就重新回到D4
{
P2 = 0x80;
}
}
else if(P3 & 0x02) //判断K1键是否按下
{
P2 = P2 << 1; //LED灯左移一位
if(P2 == 0x00) //如果灯移出了P2端口的范围,就重新回到D4
{
P2 = 0x01;
}
}
else //如果都没按下,LED灯保持不变
{
P2 = 0xFF;
}
}
}
```
这样,就完成了按键控制LED移位的实现。
阅读全文