C51中怎样把lcd怎么接收的不同长度的数字并将每次接收的数字放到上一个的后面
时间: 2023-12-03 18:43:12 浏览: 28
在C51中,一般使用串口来接收外部设备传输的数据。如果要接收不同长度的数字并将每次接收的数字放到上一个的后面,可以使用缓冲区和指针的方式来实现。
首先定义一个缓冲区数组,用来存储接收到的数字。根据数字的长度定义一个指针,指向缓冲区数组的最后一个空位。每当接收到一个数字时,将其存储到指针所指向的位置,并将指针后移一个位置,以便下次接收的数字可以存储到上一个数字的后面。
下面是一个简单的示例代码:
```
#include <reg52.h>
#define BUF_SIZE 10
unsigned char buf[BUF_SIZE]; // 缓冲区数组
unsigned char* p = buf; // 指针指向缓冲区数组的第一个位置
void main() {
// 初始化串口
TMOD = 0x20; // 定时器1工作在模式2
SCON = 0x50; // 串口工作在模式1
TH1 = 0xFD; // 波特率9600,定时器1初值
TL1 = 0xFD; // 波特率9600,定时器1初值
TR1 = 1; // 启动定时器1
while (1) {
// 等待串口接收到数据
while (!RI);
// 将接收到的数据存储到缓冲区数组中
*p++ = SBUF;
// 如果指针已经指向缓冲区数组的最后一个位置,则重置指针
if (p == buf + BUF_SIZE) {
p = buf;
}
// 处理完一次接收后,清除RI标志位
RI = 0;
}
}
```
上面的示例代码只是一个简单的实现,如果要进行更复杂的操作,比如将接收到的数字转换成整数等,还需要进一步处理。