标题:
每次第二次输出的结果都会莫名的丢失一个数据 新人求助!关于单片机串口通信的问题
[打印本页]
作者:
jiladahe1997
时间:
2016-12-18 18:59
标题:
每次第二次输出的结果都会莫名的丢失一个数据 新人求助!关于单片机串口通信的问题
小弟刚刚开始学习单片机,在学习串口通信的时候遇到一个问题,下面是我的程序(有很详细的注释!!麻烦各位大神!)void Init();
int flag=0;
int dat[10];//dat是缓冲区,用于保存接收到的数据
int i=0;
int cout=0;//cout是计数器,用于表示当前还有几个已经接收的数据未输出
void main(){
Init();
SBUF=flag;//输出flag来表示初始化成功
while(1){
if(cout!=0){ //如果cout不等于0,表示还有数据需要输出,输出数据,并将cout-1
SBUF=dat[--i];
cout--;
while(TI==0);
TI=0;
}
}
}
void Init(){//初始化函数
SCON=0x50;
PCON=0x80;
TMOD=0X20;
TH1=0xFD;
EA=1;
ES=1;
REN=1;
TR1=1;
}
void TIME0() interrupt 4{//接收中断部分,接收到数据就进入中断,将数据存入dat缓冲区中,并将cout+1
dat[i++]=SBUF;
RI=0;
cout++;
}
测试结果如下,每次第二次输出的结果都会莫名的丢失一个数据! 如图中的ready变成了rady! 我进行了很多次测试,唯独偏偏第第二次的输出结果会少第二个字符,其他后面的都没有任何问题!这是怎么回事呢??
搜狗截图20161218185817.png
(12.37 KB, 下载次数: 75)
下载附件
2016-12-18 18:56 上传
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1