两台单片机串口通信,波特率设置为2403,要求编写接收端程序,当收到0X00时,使其P2.0端口电平跳变
时间: 2023-10-04 17:04:02 浏览: 84
两块单片机之间串口的通讯
4星 · 用户满意度95%
假设你使用的是8051单片机,可以按照以下步骤来编写接收端程序:
1. 定义串口通信参数:波特率、数据位、停止位、校验位等。
```c
#define BAUDRATE 2400 // 波特率为2400
#define DATALENGTH 8 // 数据位为8位
#define STOPBIT 1 // 停止位为1位
#define PARITY 0 // 校验位为无校验位
```
2. 初始化串口,并开启串口接收中断。
```c
void init_uart() {
TMOD &= 0x0F;
TMOD |= 0x20; // 设置为模式2,8位自动重装计数器
SCON = 0x50; // 设置为8位数据,可变波特率,允许接收
TH1 = 256 - (11059200/12/32/BAUDRATE); // 计算波特率重装值
TL1 = TH1; // 初始化计数器初值
ET1 = 0; // 禁止定时器1中断
ES = 1; // 开启串口中断
EA = 1; // 开启总中断
}
```
3. 实现串口中断服务程序,当接收到0x00时,设置P2.0电平跳变。
```c
void uart_isr() interrupt 4 {
if (RI) {
RI = 0; // 清除接收中断标志位
unsigned char data = SBUF;
if (data == 0x00) {
P2_0 = ~P2_0; // P2.0电平跳变
}
}
}
```
4. 在主函数中初始化程序,并等待串口中断触发。
```c
void main() {
init_uart();
while (1) {
// 等待串口中断触发
}
}
```
这样就可以实现单片机串口接收0x00时,P2.0电平跳变的功能了。需要注意的是,如果发送端也是8051单片机,需要保证发送端和接收端的串口参数相同,包括波特率、数据位、停止位、校验位等。
阅读全文