51单片机计算机通过串口调试发送任意字符串到单片机完整代码
时间: 2023-06-27 13:01:12 浏览: 201
51单片机按键通过串口发送字符串
5星 · 资源好评率100%
下面是基于51单片机的串口通信代码,可以通过串口调试助手发送任意字符串到单片机:
```c
#include <reg52.h>
// 定义波特率为9600
#define BAUDRATE 9600
// 计算定时器重载值
#define TIMER_RELOAD_VALUE (65536 - FOSC / 32 / BAUDRATE)
// 定义串口发送函数
void send_char(unsigned char c)
{
SBUF = c; // 将字符送入发送缓冲区
while(!TI); // 等待发送完成
TI = 0; // 清除发送完成标志
}
// 定义串口接收函数
unsigned char receive_char()
{
unsigned char c;
while(!RI); // 等待接收完成
c = SBUF; // 读取接收缓冲区
RI = 0; // 清除接收完成标志
return c;
}
// 定义串口发送字符串函数
void send_string(unsigned char *s)
{
while(*s != '\0')
{
send_char(*s);
s++;
}
}
void main()
{
// 定义串口参数
SCON = 0x50;
TMOD &= 0x0F;
TMOD |= 0x20;
// 设置定时器1为工作模式2
TH1 = TIMER_RELOAD_VALUE / 256;
TL1 = TIMER_RELOAD_VALUE % 256;
TR1 = 1;
// 启用全局中断和串口中断
EA = 1;
ES = 1;
while(1);
}
// 串口接收中断服务函数
void serial_ISR() interrupt 4
{
unsigned char c;
if(RI)
{
c = receive_char();
// 在此处添加处理代码,例如输出到LED等
}
if(TI)
{
TI = 0;
}
}
```
在主函数中,首先设置了串口参数,然后启用了全局中断和串口中断。在接收中断服务函数中,读取接收缓冲区的字符并进行处理。你可以在此处添加处理代码,例如输出到LED等,以实现你的需求。
阅读全文