|
串口调试助手发送数据,四位数码管二进制显示,发送5显示0101,发送15还是显示0101,十位为什么无效?搞了半天搞不懂求教
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
void UART_RECEIVE(void) ;
void Delay5ms();
void display() ;
void CONVER();
uchar data TEMP;
uchar data dbuf[8];//四个数码管
uchar code segta[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
main()
{
TMOD=0x20;
TL1=0xFD;
TH1=0xFD;
PCON=0x00;
SCON=0x50;
EA=1;
ES=1;
TR1=1;
while (1)
display();
}
void display()
{
uchar data i,rl;
rl=0xfe;
for(i=0;i<4;i++)
{
P1=rl;
P0=segta[dbuf[i]]; //p0口传输段码值;
Delay5ms();
rl=_crol_(rl,1);
P0=0xFF; //清零段码值
if (i==3)rl=0Xfe; //4个数码管,P1口低四位循环
}
}
void UART_RECEIVE (void) interrupt 4 using 2
{
RI=0;
TEMP=SBUF;
CONVER();
}
void CONVER()
{
uchar i,j,k;
j=TEMP;
for(i=0;i<8;i++)
{
k=j&0x01; //与二进制0001相与
if(k==0)dbuf[i]=0;
else dbuf[i]=1;
j>>=1; //右移
}
}
void Delay5ms()
{
unsigned char j,k;
for(j=10;j>0;j--)
for(k=250;k>0;k--);
}
|
|