单片机做和pc串口通信的实验时,串口不稳定?

2020-01-30 14:04发布

我用单片机做和pc串口通信的实验时,
一直出现不稳定情况,
即串口调试助手正常收发数据一段时间(十来秒)后,
会出现一次设备刷新,
相当于串口被拔出然后马上又插上,同时先后
伴随一般usb设备拔 插 的两种声音。

由于我是笔记本没有串口,所以是用cp2012 来usb
转ttl uart来和51单片机通信的。

51的代码不知道是否有问题:
#include<reg52.h>
bit start_to_sent_flag=0;

void UART_init();

void main(void)
{
        unsigned char ctxt=0;
        UART_init();       

        while(1)
        {
                if (start_to_sent_flag)
                {
                        SBUF=ctxt;
                        ctxt+=1;
                        start_to_sent_flag=0;
                }
        }
}

void UART_init()
{
        SCON = 0x50;
       
       
        TMOD = 0x20;
       
        TH1 = 0xF3;
        TL1 = 0xF3;

        PCON = 0x80;
       
        TR1 = 1;
        ET1 = 0;
        ES = 1;
        PS = 1;
        EA = 1;
}


void serial() interrupt 4 using 3
{
        unsigned char receive_it;
        if (TI==1){
                TI=0;
        }
        if (RI==1){
                receive_it=SBUF;
                if (receive_it=='P') start_to_sent_flag=1;
                RI=0;
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
zjsxwc
1楼-- · 2020-01-30 15:06
这样刷新后,我只能重新按串口通信助手的关闭串口,然后再按打开串口才能继续通信
有什么办法让它不刷新设备啊???


111.jpg (238.88 KB, 下载次数: 0)

下载附件

2013-3-10 21:23 上传


jswd0810
2楼-- · 2020-01-30 16:05
按你的说法到可能是硬件(USB转串口)不好,你换一个试试
zjsxwc
3楼-- · 2020-01-30 17:31
问题已解决,原因是我使用了不带电源的usb hub,于是给cp2102供电不足,然后就导致不断刷新串口的情形,解决的办法是不用usb集线器直接插电脑的usb口就行,或者改用带电源的usb hub。

一周热门 更多>