C51单片机接收串口助手发送的一串字符串并将其储存在num中的代码keil
时间: 2024-03-07 17:50:33 浏览: 69
以下是一个简单的示例程序,演示如何使用C51单片机接收串口助手发送的字符串并将其存储在数组中:
```c
#include <reg52.h>
#include <string.h>
#define BUFFER_SIZE 10
unsigned char buffer[BUFFER_SIZE];
unsigned char count;
void uart_isr() interrupt 4 {
if (RI) {
buffer[count] = SBUF;
count++;
RI = 0;
}
}
void main() {
TMOD = 0x20; // 设置计数器1为模式2,8位自动重载
TH1 = 0xFD; // 设置波特率为9600
TL1 = 0xFD;
TR1 = 1; // 启动计数器1
SCON = 0x50; // 设置串口为模式1,允许接收
EA = 1; // 开启总中断
ES = 1; // 开启串口中断
while (1) {
if (count >= BUFFER_SIZE) {
// 接收完成,进行处理
// 例如,将接收到的字符串转换成数字
unsigned int num = atoi(buffer);
// 清空缓存和计数器,为下一次接收做准备
memset(buffer, 0, sizeof(buffer));
count = 0;
}
}
}
```
这段代码假设串口助手发送的字符串包含的是一个不超过10位的整数,并将其存储在名为`num`的变量中。在串口中断服务程序中,将接收到的字符一个一个存储在缓冲区中,直到缓冲区满或接收到了回车符(即串口助手中的换行符)。当缓冲区满时,将缓冲区中的字符串转换成数字,并清空缓冲区和计数器,为下一次接收做准备。
阅读全文