用C语言写出51单片机串口接收字符串的程序
时间: 2023-04-03 16:02:47 浏览: 162
可以使用以下代码实现:
```c
#include <reg51.h>
void main()
{
unsigned char data;
unsigned char buffer[20];
unsigned char index = 0;
TMOD = 0x20; // 设置定时器1为模式2
TH1 = 0xfd; // 波特率为9600,定时器初值
TL1 = 0xfd;
SCON = 0x50; // 串口工作在模式1
TR1 = 1; // 启动定时器1
ES = 1; // 使能串口中断
while (1)
{
if (index == 0)
{
// 清空缓冲区
memset(buffer, 0, sizeof(buffer));
}
if (index < sizeof(buffer) - 1 && RI)
{
// 读取串口接收到的数据
data = SBUF;
RI = 0;
if (data == '\r' || data == '\n')
{
// 字符串接收完成
buffer[index] = '\0';
printf("Received string: %s\n", buffer);
index = 0;
}
else
{
// 将接收到的字符存入缓冲区
buffer[index++] = data;
}
}
}
}
void serial_isr() interrupt 4
{
// 串口中断服务程序
if (TI)
{
TI = 0;
}
}
```
这段代码实现了串口接收字符串的功能,当接收到回车或换行符时,会将接收到的字符串打印出来。
阅读全文