基于STC8A8K单片机设计一个串口把接收数据存到数组,再把数组的数据发到电脑的程序
时间: 2024-03-08 17:49:55 浏览: 154
好的,下面是一个简单的示例程序,实现了将接收到的数据存储到数组并发送给电脑。
```c
#include <STC8.H>
#define BAUDRATE 9600
unsigned char rx_data[10]; //定义一个长度为10的数组用于存放接收到的数据
unsigned char rx_cnt = 0; //定义一个计数器,用于记录接收到的数据个数
void UART_Init()
{
PCON |= 0x80;
SCON = 0x50;
AUXR |= 0x40;
TMOD &= 0x0F;
TL1 = TH1 = -(FOSC/12/32/BAUDRATE);
TR1 = 1;
ES = 1;
EA = 1;
}
void UART_ISR() interrupt 4 //串口中断服务函数
{
if (RI) //接收到数据
{
rx_data[rx_cnt] = SBUF; //将接收到的数据存入数组
rx_cnt++; //计数器加1
if (rx_cnt >= 10) //数组已满,清空计数器
{
rx_cnt = 0;
}
}
if (TI) //发送数据完成
{
TI = 0; //清除发送标志
}
}
void send_data(unsigned char *data, unsigned char length) //发送数据函数
{
unsigned char i;
for (i = 0; i < length; i++)
{
SBUF = data[i]; //发送数据
while (!TI); //等待发送完成
TI = 0; //清除发送标志
}
}
void main()
{
UART_Init();
while (1)
{
if (rx_cnt >= 10) //数组已满,将数组中的数据发送给电脑
{
send_data(rx_data, 10);
rx_cnt = 0; //清空计数器
}
}
}
```
在主函数中,我们不断检查接收到数据的个数,当数组已满时,将数组中的数据发送给电脑。注意,在实际应用中,你可能需要根据具体的需求对程序进行修改。
阅读全文