單片機串口通信,通過電腦發(fā)送01,02。當發(fā)送01時LED小燈亮,同時數(shù)碼管的顯示加1。發(fā)送02時小燈滅,數(shù)碼管不加。現(xiàn)在的問題是,小燈能夠正常亮與滅,但數(shù)碼管不正常顯示。即傳輸數(shù)據(jù)沒問題,但是數(shù)碼管會亂碼,數(shù)碼管使用的是共陽。發(fā)送01,小燈亮,數(shù)碼管從0變到了8。問題出在哪里?求大神指點
#include<reg51.h>
#define uchar unsigned char
sbit LED=P1^0;
unsigned char code SMG[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char cnt=0;
uchar recv_dat;
void RESV()interrupt 4
{
RI=0;
recv_dat=SBUF;
SBUF=recv_dat;
while(TI==0);
TI=0;
}
void main()
{
TMOD=0X20;
TH1=TL1=0XFD;
PCON=0X00;
SCON=0X50;
ES=1;
EA=1;
TR1=1;
while(1)
{
if(recv_dat==0x01)
{
LED=0;
cnt++;
}
else if(recv_dat==0x02)
{
LED=1;
}
P0 =SMG[cnt];
}
}
|