为何串口助手第一下不稳定

2019-07-15 20:16发布

写了一个特别简单的程序   但是不知为何 用串口调试助手时候   有不稳定因素产生

程序如下
#include<reg51.h>
int statu;
int dat;
void UsartConfiguration();  //初始化


void main()
{
        //int receiveData;
        UsartConfiguration();
        while(1)
        {
            if(RI)
         {
               dat=SBUF;
             P2=dat;
             RI=0;         
          }
       }          
}


void UsartConfiguration()
{
        SCON=0X50;                        //设置为工作方式1
        TMOD=0X20;                        //设置计数器工作方式2
        PCON=0X80;                        //波特率加倍
        TH1=0XF3;                                //计数器初始值设置,注意波特率是4800的
        TL1=0XF3;
        ES=1;                                                //打开接收中断
        EA=1;                                                //打开总中断
        TR1=1;
        RI=0;                                        //打开计数器
}



P2控制流水灯    每次关闭单片机 然后重新启动时候  发送的第一个指令都是无效的,从第二个开始,流水灯才能正常工作,这是为什么?????
123.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
xhjxhj5477
1楼-- · 2019-07-16 00:14
突然发现 初始化程序里加一句话  TI=1,就没有问题了    虽然不知道为什么????
ntmusic
2楼-- · 2019-07-16 05:34
串口助手在此期间没关闭过串口吧?此外,明明是8位的数据,为什么要用16位有符号数保存?
qq729101414
3楼-- · 2019-07-16 06:07
 精彩回答 2  元偷偷看……
qq729101414
4楼-- · 2019-07-16 09:51
本帖最后由 qq729101414 于 2014-4-10 08:04 编辑
xhjxhj5477 发表于 2014-4-8 21:07
突然发现 初始化程序里加一句话  TI=1,就没有问题了    虽然不知道为什么???? ...

这个不是串口的问题!!!你上位机的串口一直检测接收信号 满足起始位停止位条件就把数据存入缓存 你软件开着自然就显示了 它哪里管你数据对错!你TI = 1; 初始化单片机的TXD 引脚为高  上位机没有检测到起始条件 自然就不做接下来的事了(采样引脚电平等),
ntmusic
5楼-- · 2019-07-16 12:06
qq729101414 发表于 2014-4-10 07:41
不对哦,是这么一个区别 a--->A..数字0  对应ascii 0x30,,

没看懂你想表达什么,但串口一次只能接收一个8位数据这是确定的,所以应该用8位无符号数保存较为恰当。ASCII码当然是8位的
qq729101414
6楼-- · 2019-07-16 13:54
ntmusic 发表于 2014-4-10 09:48
没看懂你想表达什么,但串口一次只能接收一个8位数据这是确定的,所以应该用8位无符号数保存较为恰 ...

十六进制  是进制!!!不是位宽!!!0xff  位宽8位  这个是十六进制表示!!!

一周热门 更多>