发送端和接收端在同一程序中
时间: 2024-02-28 20:53:52 浏览: 87
java 中模拟UDP传输的发送端和接收端实例详解
下面是将发送端和接收端合并在同一程序中,通过拨码开关SW控制LED亮灭的程序代码:
```
#include <reg51.h>
#define LED P1
#define SW P2
main() {
SCON = 0x50; // 设置串口模式
PCON = 0x80; // 波特率加倍
TMOD = 0x20; // 设置定时器1为模式2
TH1 = TL1 = 0xFD; // 设置波特率为9600
TR1 = 1; // 启动定时器1
EA = ET1 = ES = 1; // 开启中断
while(1) {
if(SW != 0xFF) { // 检测P2口的拨码开关是否被按下
LED = ~LED; // 取反LED的状态
SBUF = LED; // 发送LED的状态
while(TI == 0); // 等待发送完成
TI = 0; // 清除发送中断标志
while(SW != 0xFF); // 等待拨码开关释放
}
if(RI == 1) { // 检测是否接收到数据
RI = 0; // 清除接收中断标志
LED = SBUF; // 将接收到的数据直接显示在LED上
}
}
}
void serial(void) interrupt 4 {
if(TI == 1) {
TI = 0;
}
if(RI == 1) {
RI = 0;
}
}
```
在程序中,通过不断检测P2口的拨码开关和RI标志位来判断LED的状态改变和接收数据的情况,分别进行相应的处理。需要注意的是,在发送数据时,需要等待发送完成才能继续执行后面的代码,否则会出现数据丢失或错误的情况。
阅读全文