51单片机串口通信基本代码
时间: 2023-11-06 20:05:47 浏览: 100
以下是51单片机串口通信的基本代码,包括发送和接收:
```c
#include <reg51.h>
#define FOSC 11059200L
#define BAUD 9600
#define TIMER_1 (65536L - (FOSC / 12 / BAUD))
sbit LED = P1^0;
void init_serial()
{
TMOD = 0x20; // 选择定时器1为模式2
TH1 = TIMER_1 / 256;
TL1 = TIMER_1 % 256;
PCON = 0x00; // 不加倍波特率
SCON = 0x50; // 设置串口为模式1
TR1 = 1; // 启动定时器1
ES = 1; // 开启串口中断
EA = 1; // 开启总中断
}
void send_char(char c)
{
SBUF = c;
while(TI == 0);
TI = 0;
}
void send_str(char *str)
{
while(*str)
{
send_char(*str++);
}
}
void main()
{
init_serial();
while(1)
{
LED = ~LED;
send_str("Hello, world!\r\n");
delay(1000);
}
}
void serial() interrupt 4
{
if(RI)
{
RI = 0;
// 处理接收到的数据
}
}
```
其中,`init_serial()` 函数用于初始化串口通信,`send_char()` 和 `send_str()` 函数分别用于发送字符和字符串,`main()` 函数中通过不断发送字符串来测试串口通信是否正常。`serial()` 函数是串口中断处理函数,用于接收数据并进行处理。
需要注意的是,串口通信需要外接 MAX232 等芯片进行电平转换。在使用时,还需要根据具体的硬件连接情况来修改代码。
阅读全文