超声波用定时器计时不就好了?其实数码管这么搞,是理解错题目了,题目说“从左到右依次点亮数码管的所有段码,再依次从左到右熄灭”,我的理解中,数码管一位,八个段码。所以才这样搞,不过采取了一定的算法,实现起来并不是很难
void SMG_Init()
{
unsigned char i=0,j=0,temp=0xff;
while(1)
{
Display_Duan(j,temp);//段码亮灭控制
Display_other(j,1);//其余几位数码管显示控制
if(SMG_bit==1) //SMG_bit:定时器标志位
{
SMG_bit=0;
temp=temp<<1;
i++;
if(i==8)
{
temp=0xff;
i=0;
j++;
if(j==8)break;
}
}
}
j=0;i=8;temp=0x00;
while(1)
{
Display_Duan(j,temp);
Display_other(j+1,0);
if(SMG_bit==1)
{
temp=temp*2+1;
SMG_bit=0;
i--;
if(i==0)
{
temp=0x00;
i=7;
j++;
if(j==8)break;
}
}
}
Display_Duan(j,temp);
SMG_off();
}
|