微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 用郭天祥的程序串口还是一直出错啊!怎么办

用郭天祥的程序串口还是一直出错啊!怎么办

时间: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;
                        }*/
                        if(flag==1)
                                {
                                        ES=0;
                                        flag=0;
                                        SBUF='1';//28;       
                                        while(!TI);       
                                        TI=0;
                                        SBUF='2';//28;       
                                        while(!TI);       
                                        TI=0;
                                        SBUF='3';//28;       
                                        while(!TI);       
                                        TI=0;
                                        ES=1;
                                }
                }
}
void ser() interrupt 4
{
        RI=0;
//        P1=SBUF;
        a=SBUF;
        flag=1;
}



你每发送一次延时20ms看看

错的离谱啊啊啊啊啊

还是不行啊 啊啊啊?

修改如下初始化程序即可,串口工作方式定了之后再开启接受
void init_ser()  
{   
    TMOD=0X20;//定时器1工作在方式2   
    TH1=0XFD;  
    TL1=0XFD;  //波特率9600,51单片机大多用这个  
    TR1=1;  //定时器/计数器1启动  
    EA=1;    //开放总中断  
    SM0=0;  
    SM1=1;   //串行口方式1  
    REN=1;//允许串口接收  
    ES=1;//开串口 中断  
}  

在发送程序部分ES不要置0

另外串口调试程序试试用HEX格式显示

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

网站地图

Top