51单片机串口可以发送数组吗
单片机 串口,肯定是一字节一字节发送的但是你可以程序组织一下,写一个发送数组的程序, 基本思想就是不停查询是否可以发送,然后发送...高级单片机,有DMA, 会更加方便.
谢谢了 我试下
最简单的是查询法发送,这种方法的缺点是在发送时,mcu不能做别的事情,只能查询发送标志。
稍微好一点的是中断法,设置全局变量,每发送完一B,中断程序中自动发送下一字节,直到所有数据发送完毕。
都是逐个逐个发送的,你说的按照数组发送,只不过是发送间隔小;每次发送完一个字节,就会进入串口中断函数,在中断函数里判断串口发送缓冲区是否还有数据,如果有就继续发送。
有没有完整的程序学习一下
#include <REG51.h>
#define uchar unsigned char
#define uint unsigned int
uchar dis[]={0x7F,0x80,0x01,0x11,0x65,0x82};
/*****n(ms)延时子程序*****/
void delayms(uint ms) //延时ms
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
/*****主程序*****/
void main()
{
int i;
TMOD=0x20; //定时器1工作于8位自动重载模式, 用于产生波特率
TH1=0xFD;//波特率9600
TL1=0xFD;
SCON=0x50; //设定串行口工作方式
TR1=1; //启动定时器1
while(1)
{
for(i=0;i<6;i++)
{
SBUF=dis[i];
while(!TI); //等特数据传送
TI=0; //清除数据传送标志
} delayms(500);
}
}
恩,不错~~~这个详细~~~
已下载 谢谢分享
