#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint Tcounetr=0;
unsigned long int mm=0;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
uchar code table[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,}; //设置字符代码
delay(uint m) //延时1ms程序
{ uint i,j;
for(i=m;i>0;i--)
for(j=60;j>0;j--);
}
xian_shi() //显示程序
{ uchar bai,shi,ge,xiaoshu;
unsigned long int k=14,h=36;
unsigned long int jj;
jj=mm*k*h;
bai=jj/1000000;
shi=jj%1000000/100000;
ge=jj%100000/10000;
xiaoshu=jj%10000/1000;
P2=0xE0;
P0=table[bai];
delay(1);
P2=0XF0;
P2=0xD0;
P0=table[shi];
delay(1);
P2=0XF0;
P2=0xB0;
P0=table[ge];
delay(1);
P2=0XF0;
P2=0x70;
P0=table[xiaoshu];
delay(1);
P2=0XF0;
}
timer_init() //定时器计数器初始化函数
{ EA=1;
ET0=1;
ET1=1;
TMOD=0X51;
TH0=0XB1;
TL0=0XE0;
TH1=0;
TL1=0;
TR0=1;
TR1=1;
}
main() //主函数
{
timer_init();
P0=0; //开始数码管不显示
while(1)
{
xian_shi();
delay(2); //数码管刷新时间单位毫秒
}
}
void timer0() interrupt 1 //定时器0中断
{ uchar a;
TR0=0;
TH0=0XB1;
TL0=0XE0;
Tcounetr++;
if(Tcounetr>=50)
{ TR1=0;
Tcounetr=0;
a=TH1;
mm=a*256+TL1;
if(mm>=1984)
if(mm>=3000)
P1_7=0,
P1_6=0;
else
P1_7=0;
else
P1=0XFF;
TH1=0;
TL1=0;
TR1=1;
}
TR0=1;
}
void timer1() interrupt 3 //计数器1中断时出错
{ TR1=0;
TR0=0;
mm=0;
TH0=0XB1;
TL0=0XE0;
TH1=0;
TL1=0;
TR0=1;
TR1=1;
温馨提示:答案为网友推荐,仅供参考