C51单片机使用数组储存串口助手发送的字符串并转化为整数的代码
时间: 2023-12-29 17:02:25 浏览: 156
以下是一个简单的C51单片机程序,用于从串口接收一个整数字符串,并将其转换为整数并存储在数组中:
```c
#include <reg52.h>
#define BUF_SIZE 10
unsigned char buffer[BUF_SIZE];
unsigned char index = 0;
void uart() interrupt 4
{
if (RI) //接收中断标志位
{
RI = 0;
buffer[index++] = SBUF; //将接收到的字符存入缓冲区
if (index >= BUF_SIZE) //如果缓冲区满了,重置索引
{
index = 0;
}
}
}
unsigned int str_to_int(unsigned char *str)
{
unsigned int result = 0;
while (*str)
{
result = result * 10 + (*str - '0'); //将每个数字字符转换为对应的整数并累加
str++;
}
return result;
}
void main()
{
TMOD = 0x20; //设置计数器1为方式2(8位自动重装)
TH1 = 0xfd; //设置波特率为9600
TL1 = 0xfd;
SCON = 0x50; //设置串口工作方式为模式1,允许接收
IE = 0x90; //开启中断
TR1 = 1; //启动计数器1
while (1)
{
if (index > 0) //如果缓冲区中有数据
{
buffer[index] = '\0'; //将缓冲区最后一位设置为字符串结束符
unsigned int num = str_to_int(buffer); //将字符串转换为整数
//在这里可以将整数存储到数组中或者进行其他操作
index = 0; //重置索引
}
}
}
```
在此程序中,我们使用一个缓冲区来存储接收到的字符串,当缓冲区满了或者接收到了字符串结束符时,将缓冲区中的字符串转换为整数并进行处理。在实际应用中,您可以根据需要修改缓冲区大小和处理逻辑。
阅读全文