单片机串口通讯的问题
时间:10-02
整理:3721RD
点击:
我的单片机测试的时候,输入1,显示1,输入2,显示2,输入3的时候显示就多了一个3F
#include<reg52.h>
#define uchar unsigned char
uchar a,flag;
void main()
{
SCON = 0X50;
PCON = 0X00;
TMOD = 0X20;
TH1 = 0XE6;
TL1 = 0XE6;
TR1 = 1;
EA =1;
ES = 1;
while(1)
{
if(flag == 1)
{
ES = 0;//串口中断关掉
flag = 0;//标志位清零
SBUF = a;
while(!TI);//发送数据
TI = 0;//发送完了TI会置1
ES = 1;//串口中断打开
}
}
}
void ser() interrupt 4
{
if(RI ==1)//检测是否接受数据完成
RI = 0;
P1 = SBUF;
a = SBUF;
flag = 1;
}
![](../imgqa/ele/mcu/mcu-3721rd.com-40636oehay0ubjlr.jpg)
我的输入和输出都是用十六进制的。我的晶振是12mhz的
#include<reg52.h>
#define uchar unsigned char
uchar a,flag;
void main()
{
SCON = 0X50;
PCON = 0X00;
TMOD = 0X20;
TH1 = 0XE6;
TL1 = 0XE6;
TR1 = 1;
EA =1;
ES = 1;
while(1)
{
if(flag == 1)
{
ES = 0;//串口中断关掉
flag = 0;//标志位清零
SBUF = a;
while(!TI);//发送数据
TI = 0;//发送完了TI会置1
ES = 1;//串口中断打开
}
}
}
void ser() interrupt 4
{
if(RI ==1)//检测是否接受数据完成
RI = 0;
P1 = SBUF;
a = SBUF;
flag = 1;
}
![](../imgqa/ele/mcu/mcu-3721rd.com-40636oehay0ubjlr.jpg)
我的输入和输出都是用十六进制的。我的晶振是12mhz的
难道是12MHz晶阵产生波特率有误差的原因?来自: Android客户端