单片机开发串口通信,发送字符1-9接收出问题

问题是,我希望使用串口调试助手,发送0-9的数字,控制灯的亮度。但是发送过去,程序无法读出数据。

部分代码如下:

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit LED=P2^0;
sbit l1=P2^1;
sbit l2=P2^2;
sbit l3=P2^3;
uint num,MCE;
。。。。,,,,。。。。
。。。。。。。。。。。。
void Timer0() interrupt 1
{
//	TH0=(65536 - 20000) /256;//给定时器高8位赋值
//	TL0=(65536 - 20000) %256;//给定时器低8位赋值
	  if(MCE==5) //1s
	  {
		l2=0;//让l2亮
	  }else
	  {
	  	l2=1;//熄灭
	  }

	
	num++;
	if(num==10)
	{
  		num=0;
  		LED=0;
	}
	if(num==MCE)
	{
	 	LED=1;
	}
}
void Usart() interrupt 4
{
	uchar receiveData;
	receiveData=SBUF;
	RI=0;	
	MCE=receiveData;
	MCE=MCE-0x30;
		l3=~l3;
	  
	SBUF=MCE;
	while(!TI);
	TI=0;
		  

}

解决:

串口通信时,SBUF接收的数据都是十六进制,要转化为十进制,再进行使用。我是直接减去了0x30进而解决的。

解决问题的关键链接 https://m.iask.sina.com.cn/mib/19495988.html

猜你喜欢

转载自blog.csdn.net/pan_xi_yi/article/details/87611226