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
如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!
txttool.com 说一段 esp56物联 周易算命 查询128 IP查询 电脑硬件工具