初学串口通信,遇到问题向各位大侠求解

2020-01-25 15:36发布

单片机用的是STC89C52晶振11.0592M,照着郭老大的代码敲的程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char flag,a,i;
uchar code table[]="I get";
void init()
{
        TMOD=0X20;//设置定时计数器T1工作方式为方式2,8位初值自动重装
        TH1=0xfd;//TH1装0xfd设置波特率为9600
        TL1=0xfd;
        TR1=1;//定时器1运行控制位
        REN=1;//允许串口接收数据
        SM0=0;//设置串口工作方式为方式1(10位异步收发(8位数据),波特率可变(由定时器1的溢出率控制))
        SM1=1;
        EA=1;//总中断开关
        ES=1;//串口中断开关
}
void main()
{
        init();
        while(1)
        {
                if(flag==1)
                {
                        ES=0;
                        for(i=0;i<6;i++)
                        {
                                SBUF=table[i];//SBUF为串口特殊功能寄存器
                                while(!TI)//TI为发送中断标志位
                                TI=0;
                        }
                        SBUF=a;
                        while(!TI);
                        TI=0;
                        ES=1;
                        flag=0;
                }

        }
}
void ser() interrupt 4
{
        RI=0;//接收中断标志位
        a=SBUF;
        flag=1;
}
程序下载完一打开串口调试助手就出现单片机向串口不停地发送乱码,我在发送区发送X没有任何反应,不懂问题在哪里,求解!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。