-
#define uint unsigned int
#define uchar unsigned char
sbit k1=P2^0;
sbit k2=P2^1;
uint code table[]={0X00,0X80,0X10,0X90,0X20,0XA0,0X30,0XB0,0X40,0XC0};
void delay(uint z)
{
uint a,b;
for(a=z;a>0;a–)
{
for(b=z;b>0;b–);
}
}
void main()
{
int c=99,t,shi,ge;
for(t=99;t>0;t–)
{
shi=c/10;
ge=c;
k1=0,k2=1;
P1=table[shi];
delay(300);
P1=0XFF;k2=0,k1=1;
P1=table[ge];
delay(200);
P1=0XFF;
k1=0,k2=0;
c–;
if(c==0)
c=99;}
}
- 答复:
-
必定不一起的啊 由于你是显现为十再显现个的
其实所谓的一起显现便是循环扫描 时刻距离短了 天然看着便是一起了
你要做的便是在显现延时的一起显现一下十位 再显现一下个位 而不是显现完一个再显现另一个
最好的做法是放在中止中 这样能保证显现作用
bit flag;
int shi ,ge;
这三个为外部变量
在延时的过程中调用这个函数 应该就OK了 void showled()
{
if (flag==0)
{
P1=table[shi];k2=1,k1=0;
}
else
{
P1=table[ge];k2=0,k1=1;
}
flag=~flag;
}