微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助,关于51单片机串口通信的问题

求助,关于51单片机串口通信的问题

时间:10-02 整理:3721RD 点击:
看着郭天祥的视频例程,照着写了一个串口通信的程序,可是问题出现了:单片机只能接收一次数据,以后无论重启还是神马发送给单片机数据就是什么反应液没有,求大神们帮忙。
#include<reg52.h>
unsigned char flag,a;
void main()
{
        TMOD=0x20;//设置定时器1为工作方式2
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;
        REN=1;
        SM0=0;
        SM1=1;
        EA=1;
        ES=1;
        while(1)
        {
            if(RI==1)
                {
                    RI=0;
                        P1=SBUF;
                }
        }
}
void ser() interrupt 4
{
        RI=0;
        P1=SBUF;
}

正在学习。诶

你是怎么知道收能收到一组数据的,看一下电路连接有问题没有,直接用示波器看一下串口线上的数据没

没有TI

//////

我也试了,当单片机接受PC机数据时,只能接受第一次,后来就没反应,按复位键再发送也没有反应。现在我能解决的办法就是:单片机每接受一次的时候,都要重复操作一次:关闭串口和开启串口按钮。这就行了,但是比较麻烦,我想会不会是SBUF每操作一次都要进行清空,不然超过两字节你送给流水灯显示就没效果了。而且你的程序应该把查询法和中断法分开,因为是两种方法,但这不是问题的关键!而且我试了当单片机往PC机上发数据就好用多了!希望有感悟再交流!

TI是只有串口发送完的时候才硬件TI置1,再软件清0 。在单片机接收串口通信数据的时候用不到TI发送中断标志位,因为此时是接收!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top