输入3会点亮两个灯
时间: 2023-07-27 22:27:11 浏览: 43
如果输入3时要点亮两个灯,可以在程序中增加一个判断语句,判断接收到的数据是否为3,如果是,则点亮两个灯。下面是修改后的程序:
```c
#include <reg51.h>
void delay(unsigned int xms)
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=112;j>0;j--);
}
void UART_Init()
{
TMOD |= 0x20; // 设置定时器1为模式2
TH1 = 0xFD; // 波特率为9600,波特率公式:TH1 = 256 - (晶振频率/波特率/32)
TL1 = 0xFD;
SCON = 0x50; // 设置串行口为模式1,允许接收
TR1 = 1; // 启动定时器1
}
void UART_SendByte(unsigned char dat)
{
SBUF = dat; // 将数据写入发送缓冲区
while(!TI); // 等待发送完成
TI = 0; // 清除发送完成标志
}
void main()
{
unsigned char dat = 0;
UART_Init(); // 初始化串行口
P1 = 0xFF; // 初始状态为全部熄灭
while(1)
{
dat = UART_ReceiveByte(); // 接收数据
if(dat == '3') // 如果接收到的数据为3,点亮两个灯
{
P1 = 0xFC; // P1口低位两个灯点亮
}
else
{
P1 = ~dat; // 将接收到的数据取反后赋值给P1口,点亮LED
}
UART_SendByte(dat); // 发送数据
delay(500); // 延时500ms
}
}
unsigned char UART_ReceiveByte()
{
while(!RI); // 等待接收完成
RI = 0; // 清除接收完成标志
return SBUF; // 返回接收到的数据
}
```
这个程序中,如果接收到的数据为3,将点亮P1口低位的两个灯;否则,将接收到的数据取反后赋值给P1口,点亮LED。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)