标题: 每次第二次输出的结果都会莫名的丢失一个数据 新人求助!关于单片机串口通信的问题 [打印本页]

作者: 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)

搜狗截图20161218185817.png





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1