|
串口調(diào)試助手發(fā)送數(shù)據(jù),四位數(shù)碼管二進制顯示,發(fā)送5顯示0101,發(fā)送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];//四個數(shù)碼管
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個數(shù)碼管,P1口低四位循環(huán)
}
}
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--);
}
|
|