本帖最后由 klchang 于 2011-11-9 17:09 编辑
程序如下:
//使用串口,带缓冲的6字节数据收发
#include<reg52.h>
#define uchar unsigned char
uchar r_buf[6]; //接收缓冲区
uchar r_count; //接收计数
bit r_finished; //接收完成标志
void main()
{
uchar i;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SCON=0x50;
PCON=0x00;
TR1=1;
EA=1;
r_finished=0;
r_count=0;
for(i=250;i>0;i--);
ES=1;
while(1)
{
if(r_finished)
{
ES=0;
for(i=0;i<6;i++)
{
SBUF=r_buf【i】;
while(!TI);
TI=0;
}
r_finished=0;
ES=1;
}
}
}
void serial()interrupt 4 using 1
{
if(RI)
{
r_buf[r_count]=SBUF; /*接收*/
RI=0; /*淸标志*/
r_count++; /*下标+1*/
if(r_count==6) /*判断是否要置r_finished标志*/
{
r_finished=1;
r_count=0;
}
}
}
遇到问题是串口的发送数据和接受到的数据的顺序不一致,不知道是什么原因,请各位前辈指教!
此问题的图片如下
|