不知是否符合要求,你可參考一下:
#include<reg51.h> //包含特殊功能寄存器頭文件
#include<intrins.h>
#define uint unsigned int //定義uint=unsigned int
#define uchar unsigned char //定義uchar=unsigned char
#define wela P1 //位選
#define dula P0 //段選
uchar code we_code[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位碼表
uint code du_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //段碼表
void delayms(uint xms);
uchar temp,t0,t1,bai,shi,ge;
uint shu;
void init();
void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge);
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延時約xms毫秒
{
for(j=110;j>0;j--);
}
}
void main()
{
init();
while(1)
{
display(7,6,5, bai, shi, ge);
}
}
void init()
{
shu=999;
temp=0xfe;
P0=temp;
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1; //初始化子程序,初始化專用關鍵字
TR1=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t0++;
if(t0==20)
{
t0=1;
temp=_crol_(temp,1);
P0=temp;
}
}
void timer1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
t1++;
if(t1==4)
{
t1=0;
shu --;
bai=shu/100;
shi=shu%100/10;
ge=shu%10;
if(shu==888)
{
TR0=0;
TR1=0;
}
}
}
void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge)
{
dula=du_code[aa];
wela=we_code[1];
delayms(5);
dula=du_code[bb];
wela=we_code[2];
delayms(5);
dula=du_code[cc];
wela=we_code[3];
delayms(5);
// dula=du_code[qian];
// wela=we_code[4];
// delayms(5);
dula=du_code[bai];
wela=we_code[4];
delayms(5);
dula=du_code[shi];
wela=we_code[5];
delayms(5);
dula=du_code[ge];
wela=we_code[6];
delayms(5);
} |