问题描述
我用串口助手时,原本是想接收到0X4a时进行发送操作,然而只有接收到0Xaa时才能发送,而且发送的也是乱码
问题出现的环境背景及自己尝试过哪些方法
是利用串口通信时出现问题,发现只有输入aa才能执行发送操作
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
include<reg52.h>
define uint unsigned int
define uchar unsigned charu
char a,b; //a是用来取出sbuf中的数值,b是用来判断是否要发送数据
void UartInit();
void shu();
uchar hello[]={0X48,0X45,0X4c,0X4c,0X4f,0X2c,0X0d,0X0a}; //发出文本“hello!”,其中0X0d,0X0a为换行操作
void UartInit()
{
TMOD=0X20;
TH1=0Xfa; //波特率9600,12M晶体
TL1=0Xfa;
TR1=1;
SCON=0X50;
PCON|=0X80;
EA=1;
ES=1;
}
void shu()
{
uchar i;
for(i=0;i<8;i++)
{
SBUF=hello[i];
while(!TI); TI=0;
}
}
void main()
{
P0=0X00;
b=0;
UartInit();
while(1)
{
if(b==1)
{shu();b=0;}
}
}
void zhongduan() interrupt 4
{
if(RI)
{
RI=0;
a=SBUF;
if(a==0X4a)b=1;
}
}
你期待的结果是什么?实际看到的错误信息又是什么?
希望当串口助手输入aa时,电脑会显示“Hello!”
然而接收到的只是一堆乱码