51单片机串口程序串口调试助手接收区接收到的是乱码?波特率9600
#include<reg52.h>sbitsmg1=P2^0;//第一个数码管unsignedchara;unsignedcharflag;voidmain(){smg1...
#include <reg52.h>
sbit smg1 = P2^0; //第一个数码管
unsigned char a;
unsigned char flag;
void main()
{
smg1 = 0;
TMOD = 0X20; //设置定时器为方式2
TH1 = 0xfd; //装入初值
TL1 = 0xfd;
TR1 = 1; //启动定时器1
SM0 = 0;
SM1 = 1; //设置串口为方式1
REN = 1; //接收使能
EA = 1; //打开总中断开关
ES = 1; //打开串口中断开关
while(1)
{
if(flag==1) //判断是否受到数据
{
ES = 0; //关掉串口中断
flag = 0; // 标志位清零
SBUF = a;
while(!TI); //等待数据发送结束
TI = 0;
ES = 1;
}
}
}
void serial() interrupt 4
{
a = SBUF;
P0 = a;
RI = 0; //软件清零RI
flag =1; //作为标志位
} 展开
sbit smg1 = P2^0; //第一个数码管
unsigned char a;
unsigned char flag;
void main()
{
smg1 = 0;
TMOD = 0X20; //设置定时器为方式2
TH1 = 0xfd; //装入初值
TL1 = 0xfd;
TR1 = 1; //启动定时器1
SM0 = 0;
SM1 = 1; //设置串口为方式1
REN = 1; //接收使能
EA = 1; //打开总中断开关
ES = 1; //打开串口中断开关
while(1)
{
if(flag==1) //判断是否受到数据
{
ES = 0; //关掉串口中断
flag = 0; // 标志位清零
SBUF = a;
while(!TI); //等待数据发送结束
TI = 0;
ES = 1;
}
}
}
void serial() interrupt 4
{
a = SBUF;
P0 = a;
RI = 0; //软件清零RI
flag =1; //作为标志位
} 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询