问题是,我希望使用串口调试助手,发送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进而解决的。