[51单片机] 关于串口多字节收发的一个奇怪问题

[复制链接]
 楼主| yzcook 发表于 2018-5-28 17:12 | 显示全部楼层 |阅读模式
想在串口发送4个字节的命令 让单片机运行对应程序,但是在初始化的时候遇到一个奇怪的问题。
使用的芯片是STC12C5A32S2 晶振为18.432
 楼主| yzcook 发表于 2018-5-28 17:13 | 显示全部楼层
这是程序


uchar num = 0;
uchar flag=0;
uchar i;
uchar RBuf[4] = {0x00,0x00,0x00,0x00};

/*------------------主程序--------------------*/
void main(void)
{        
        uchar key = 0;
        ConfigUART();
        
        

        while(1)
        {
                if(num == 4)  flag = 1;
                if(flag == 1)//当接收到数据
                {
                        ES = 0;//关闭串口中断
                        for(i=0;i<4;i++)
                        {
//                                SBUF = RBuf;
//                                while(!TI); TI = 0;
         SendByte(RBuf);
                        }                                                        
                        ES = 1;
                        flag = 0;
                        num = 0;
                }
//        cmdRec();
                if((RBuf[0] == 0x1b)&&(RBuf[1] == 0x5b)&&(RBuf[2] == 0x2f)&&(RBuf[3] == 0x31))
                        firstvoice();
                if((RBuf[0] == 0x1b)&&(RBuf[1] == 0x5b)&&(RBuf[2] == 0x2f)&&(RBuf[3] == 0x32))
                        secondvoice();
                if((RBuf[0] == 0x82))
                        lcd_clr();
//                if((RBuf[0] == 0x81))
               
               
               

        }
}




void Uart_Isr() interrupt 4 using 1
{        
        if(RI)
        {        
          RBuf[num] = SBUF;
                while(!RI);
                RI = 0;
                num++;
        }

管理
[url=]更多操作[/url]



 楼主| yzcook 发表于 2018-5-28 17:13 | 显示全部楼层
[size=0.83em]
1.png (14.46 KB, 下载次数: 0)
下载附件  [url=]保存到相册[/url]
[color=rgb(153, 153, 153) !important]2018-5-28 16:36 上传



用上面的程序在串口实验的时候出现了一个奇怪的现象
在下载程序后的第一次发送数据时会出现这种情况  接收到的第一个数据会出现 E9 但是这个数据并不是我发出去的。
然后第二次发送才接收正常
很奇怪 大神们能否解答一下


 楼主| yzcook 发表于 2018-5-28 17:14 | 显示全部楼层
本帖最后由 yzcook 于 2018-5-28 17:15 编辑

然后我问了别人 别人帮我在程序里面加了个延迟 就能正常接收。

只是在这里加了个1MS的延迟 , 他说可能是芯片BUG 具体也不太清楚。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
liubo0702 发表于 2018-5-29 17:28 | 显示全部楼层
这个好像和你串口初始化有关系,我遇到这样的问题,我的是初始化那块造的怪,给你提供点思路,你自己再看看,我时间久了有点记不清楚了
chongdongchen 发表于 2018-5-29 20:43 | 显示全部楼层
你应该增加些校验机制,或者直接走协议,比如modbus也可以啊。
至于上电时接收到的乱码,自然会被过滤掉。
一止 发表于 2018-5-30 09:56 | 显示全部楼层
正常,上电引脚状态不稳定,出现一个乱码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

84

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部