单片机设备用串口线与电脑串口连接,第一次通讯无反馈,从第二次开始就正常了,这是为什么?

具体操作:
电脑断电后,重新上电启动,通过comtools发数据,发送完毕后,电脑收不到任何反馈数据,这时只要电脑使用comtools再随意发送个数据,就能接收了。当我换成USB转串口时,反而没有这个问题。请教大家,这是为什么啊???
我电路接线肯定没有问题,因为只有第一次通讯异常,之后都正常。
没有其它的回答了吗?

电脑断电重启的过程中,向串口发送了无意义的数据,使单片机进入到一个意外的状态并且出不来,直到收到一个符合格式的数据,它才反应过来.
可能是你的单片机程序编写得不够合理,没有做足够的出错处理,或者做得不正确.追问

我的描述中有几个关键点没有说清:

1、我使用的89S52单片机;
2、单片机板和程序是我自己设计的,TXD,RXD连线正确,因为从第二次开始就可以正常通讯了,只是第一次不成功;
3、这个不成功产生的原因是在计算机断电后,重新上电启动引起的,如果只是重启计算机,而不断电,这个问题就不存在;
按照你的回答,计算机上电时,就会向单片机发送乱码,是吗?还有其他的原因吗?

追答

我觉得主要应该就是这个原因,没看到你的东西,很难确切地判断出你的原因.

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-19
这个不一定的,延长线也就是直连线和交叉线都有的,问题不在这里……关键是要把单片机的RXD连计算机的TXD,单片机的TXD连计算机的RXD,对于计算机端好像2对应RXD,3对应TXD,单片机端要通过MAX232等电平转换电路才可以通过串口线连接到电脑上。
第2个回答  2021-10-13

跟你一样的芯片,protues仿真出来跟你一样的问题,最后赋初值解决

发送端部分程序:

Start:

    mov SCON,#50H;

    anl PCON,#00H;

    mov TMOD,#20H;

    mov TL1,#0fdH;

    mov TH1,#0fdH;

    setb TR1;

    setb EA;

    setb ES;

    mov P2,#00H;  //不加这句第一次不执行

loop1:

     mov A, P1;

     cjne  A,P2,chuli;

     sjmp  loop1;    

chuli:

    mov P2,A;

    mov SBUF,A;

    jnb TI,$;

    cpl TI;

    ret;

;====================================================================

      END

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网