找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2180|回复: 0
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
小弟刚刚开始学习单片机,在学习串口通信的时候遇到一个问题,下面是我的程序(有很详细的注释!!麻烦各位大神!)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, 下载次数: 86)

搜狗截图20161218185817.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表