51单片机串口通信发送乱码

180it 2022-03-20 PM 1077℃ 0条

STC89C52单片机串行接口乱码
玩普中科技的51单片机时 ,检查了波特率没问题,依旧乱码, 最后通过排除法发现时中断允许位的原因,跟大家分享
简单来说,就是发送数据过程中被中断了,因为字节和位数的问题产生乱码。

解决方法
考虑到之后还是要用到ES=1;所以只能局部关闭再打开。
本代码波特率4800 晶振12M

#include"reg52.h"
#include"string.h"
typedef unsigned int u16;
typedef unsigned char u8;
void UsartInit()
{
    TMOD=0X20;
    PCON=0x80;
    TH1=0XF3;
    TL1=0XF3;
    TR1=1;
    SCON=0X50;
    ES=1;
    EA=1;
    
}
void main()
{
    u8 i;
    u8 a[]="hello world!";
    UsartInit();
    while(1)
    {
    ES=0;
    for(i=0;i<strlen(a);i++)
    {
        
        SBUF=a[i];
        while(!TI);
        TI=0;
    }
    ES=1;
    for(i=0;i<200;i++);
    }
    
}

如果有遗漏或者不对之处,还请指正。

来源:https://blog.csdn.net/qq_40985093/article/details/107456667

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

51单片机串口通信发送乱码