求助串口通信问题
//以16进制发送一个0-65536之间的任一数,当单片机收到后在数码管上动态显示出来,波特率2400
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar ge,shi,bai,qian,wan;
uint r;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void display(uint ge,uint shi,uint bai,uint qian,uint wan);
delay(uchar m);
void main()
{
TMOD=0x20;
TH1=0xf4;
TL1=0xf4;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
while(1)
{
wan=r/10000;
qian=r%10000/1000;
bai=r%1000/100;
shi=r%100/10;
ge=r%10;
display(ge,shi,bai,qian,wan);
}
}
void ser() interrupt 4
{
RI=0;
r=SBUF;
}
void display(uint ge,uint shi,uint bai,uint qian,uint wan)
{
P1=0xf4;
P2=table[ge];
delay(10);
P1=0xf3;
P2=table[shi];
delay(10);
P1=0xf2;
P2=table[bai];
delay(10);
P1=0xf1;
P2=table[qian];
delay(10);
P1=0xf0;
P2=table[wan];
delay(10);
}
delay(uchar m)
{
uchar a,b;
for(a=m;a>0;a--)
for(b=100;b>0;b--);
}
自我感觉程序没有错误。但是用串口助手发送是十六进制数时小于255的十六进制数才正确,大于255就出错误了,比如发送ffff,还是显示255,发100的时候显示16,请问是什么地方出现了问题。