C51单片机接收串口助手发送的一串字符串并转化为整数的代码
时间: 2023-12-21 17:04:26 浏览: 83
实验单片机与PC机串口通信.doc
5星 · 资源好评率100%
下面是C51单片机接收串口助手发送的一串字符串并转化为整数的代码示例:
```c
#include <reg51.h>
#include <stdio.h>
#define BAUDRATE 9600
#define FOSC 12000000L
void init_uart()
{
TMOD |= 0x20; // Timer1工作在模式2,8位自动重装载
SCON = 0x50; // 串口工作在模式1,允许串口接收
TH1 = 0xFD; // 波特率9600
TL1 = 0xFD;
PCON &= 0x7F; // 波特率不加倍
TR1 = 1; // 启动计数器
}
unsigned int str2int(unsigned char *str)
{
unsigned int num = 0;
while (*str != '\0') // 当字符不为结束符时
{
if (*str >= '0' && *str <= '9') // 判断是否为数字字符
{
num = num * 10 + (*str - '0'); // 将字符转化为数字
}
str++;
}
return num;
}
void main()
{
init_uart(); // 初始化串口
while (1)
{
unsigned char str[10];
unsigned int num;
unsigned char ch;
unsigned char index = 0;
while (1)
{
if (RI) // 判断是否接收到数据
{
ch = SBUF; // 读取接收到的字符
RI = 0; // 清除接收标志位
if (ch == '\r') // 判断是否为回车符
{
str[index] = '\0'; // 结束字符串
num = str2int(str); // 将字符串转化为数字
printf("received number: %d\n", num); // 打印接收到的数字
break;
}
else if (index < 9) // 判断字符串长度是否超限
{
str[index++] = ch; // 将字符加入字符串中
}
}
}
}
}
```
代码中,首先使用`init_uart()`函数初始化串口,然后在`main()`函数中使用`while`循环不断接收数据。在接收数据的过程中,使用`str2int()`函数将字符串转化为数字,并通过`printf()`函数打印接收到的数字。
阅读全文