目前还没有学习定时中断,所以只能是粗略的60s倒计时数码管显示,下面是我自己编的程序,没有预期现象,还请各位大佬帮忙瞅瞅,感谢!
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
void display(uint ge,uint shi);
void delay(uint z)
{
uint a,b;
for(a=z;a>0;a--)
for(b=120;b>0;b--);
}
uchar table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint c,n,i,ge,shi;
sbit k1=P1^0;
void main()
{
while(1)
{
c=0;
n=60;
if(k1==0) {c=1;}
if(k1==0) delay(10);
if(c==1)
{
for(i=60;i>0;i--)
{
n- -;
display(ge,shi);//调用显示子函数
delay(1000);//延时一秒
}
if(n==0) n=0;
}
}
}
}
void display(uint ge,uint shi)//显示子函数
{
ge=n%10;
shi=n/10;
P2=0xfe;
P1=table1[ge];
delay(5);
P2=0xfd;
P1=table1[shi];
delay(5);
}
|