用单片机实现数码管从左到右1到8,再从8到1依次回来。要求第几位显示时,其前面的数字也必须显示。0
用单片机实现数码管从左到右1到8,再从8到1依次回来。要求第几位显示时,其前面的数字也必须显示。我的能显示过去但是回不来。代码如下,请各位大佬帮忙看看错在哪?#include
#include
sbit n0=P2^0;
sbit n1=P2^1;
char number[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
char space[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f} ;
int m,count=0,k,flage=0;
void delay(int i)
{
int j;
for(;i>0;i--)
for(j=110;j>0;j--);
}
void interrupt_T0(void) interrupt 1
{
count++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(count==20)
{
count=0;
while(flage)
{m++;}
while(!flage)
{ m--;}
if(m==9){m=0;flage=1;}
if(m==0){flage=0;}
}
}
void printf(void)
{
switch(m)
{
case 1 : for(k=0;k
{
n1=1;
P1=space[k];
n1=0;
n0=1;
P1=number[k];
n0=0;
delay(10);
}
break;
case 2:for(k=0;k
{
n1=1;
P1=space[k];
n1=0;
n0=1;
P1=number[k];
n0=0;
delay(5);
}
break;
case 3:for(k=0;k
{
n1=1;
P1=space[k];
n1=0;
n0=1;
P1=number[k];
n0=0;
delay(5);
}
break;
case 4:for(k=0;k
{
n1=1;
P1=space[k];
n1=0;
n0=1;
P1=number[k];
n0=0;
delay(5);
}
break;
case 5:for(k=0;k
{
n1=1;
P1=space[k];
n1=0;
n0=1;
P1=number[k];
n0=0;
delay(5);
}
break;
case 6:for(k=0;k
{
n1=1;
P1=space[k]; 展开