51C语言,变速数码管的实现问题。

来源:百度知道 编辑:UC知道 时间:2024/05/21 13:59:47
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[16]={
0x02 , 0x9F, 0x25, 0x0D , 0x99 ,
0x49 , 0x40, 0x1F, 0x00, 0x08,
0x10, 0xC0, 0x62, 0x84, 0X60, 0x70 }; //装入初值。
uchar idelay,tt,i=0,speed=30;
main()
{
TMOD=0X01;
ET0=1;
TR0=1;
EA=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;

while(1)
{

if(idelay)
{
idelay=0;
P2=0xff; //P2控制那个数码管打开。
P0=table[i];
i++;
if(i==2)
{
i=0;
speed--; //越来越快
if(speed==10)
{
speed++; //越来越慢 , 主要使这里,麻烦大家,看看对不对。
if(speed==20 )
speed=0;
}
}
}

}

}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
i

if(speed==10)
{
speed++; //越来越慢 , 主要使这里,麻烦大家,看看对不对。
if(speed==20 )
speed=0;
}

我觉得这里有点不太妥,因为只有10的时候才加,也就是只有三个植吧
9/10/11