怎么用串口发送一个数组?用电脑上的串口助手发送,单片机接收后再发送给电脑
3个回答
展开全部
1.首先用中断方式循环接收数据保存到数组
/********************************************
*串口数据接收中断服务
*功能:接收串口数据
********************************************/
void get(void) interrupt 4 using 0
{
unsigned char i;
if(RI)
{
for(i=0;i<16;i++) //循环接收16字节字节数据
{
while(!RI);
table[i]=SBUF;
RI=0; //清标志位
}
}
}
再将用查询法数组中的数据循环发送给电脑
/********************************************
*串口数据发送
*功能:向串行口缓冲区发送n个数据
********************************************/
void send(void)
{
for(j=0;j<16;j++)
{
SBUF=Table[i]; //将字符发送至缓冲区
while(!TI); //等待发送完成
TI=0; //清中断标志
}
}
/********************************************
*串口数据接收中断服务
*功能:接收串口数据
********************************************/
void get(void) interrupt 4 using 0
{
unsigned char i;
if(RI)
{
for(i=0;i<16;i++) //循环接收16字节字节数据
{
while(!RI);
table[i]=SBUF;
RI=0; //清标志位
}
}
}
再将用查询法数组中的数据循环发送给电脑
/********************************************
*串口数据发送
*功能:向串行口缓冲区发送n个数据
********************************************/
void send(void)
{
for(j=0;j<16;j++)
{
SBUF=Table[i]; //将字符发送至缓冲区
while(!TI); //等待发送完成
TI=0; //清中断标志
}
}
展开全部
发送的时候循环发送:
中断方式:
recive()
{
for(i=0;i<10;i++)
{
while(!RI);
a[i]=SBUF; //a[]为数组,假设接收10个
RI=0;
}
}
接收完成后马上转发送
send()
{
for(i=0;i<10;i++)
{
TI=0;
SBUF=a[i];
while(!TI);
TI=0;
}
}
还有就是要选着串口方式及波特率。
中断方式:
recive()
{
for(i=0;i<10;i++)
{
while(!RI);
a[i]=SBUF; //a[]为数组,假设接收10个
RI=0;
}
}
接收完成后马上转发送
send()
{
for(i=0;i<10;i++)
{
TI=0;
SBUF=a[i];
while(!TI);
TI=0;
}
}
还有就是要选着串口方式及波特率。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
书上必然有程序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询