#include <REGX52.H>
#define uchar unsigned char
#define uint unsigned int
sbit led1=P0^0;
uchar num=0,num1,num2,shi,ge;
uchar code table[]={0XC0,0XF9,0XA4,0XB0,0x99,0x92,0x82,0xf8,0X80,
0X90,0x88,0x83,0xc6,0xA1,0x86,0x8E,0xbf,0xff};
void delayms(uint xms);
void HC573(uchar x);
void display(uchar shi,uchar ge);
void init();
void main(){
init();
while(1){
display(shi,ge);
}
}
void HC573(uchar x){
switch(x){
case 4:
P2=P2&0X1F|0X80;
break;
case 5:
P2=P2&0X1F|0Xa0;
break;
case 6:
P2=P2&0X1F|0Xc0;
break;
case 7:
P2=P2&0X1F|0Xe0;
break;
}
}
void delayms(uint t){
while(t--);//40000´óÔ¼15ms
}
void display(uchar shi,uchar ge){
HC573(7);
P0=table[shi];
P0=0xff;
HC573(6);
P0=0xfe;
delayms(2667);
HC573(7);
P0=table[ge];
P0=0xff;
HC573(6);
P0=0xfe;
delayms(2667);
}
void init(){
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;
num1++;
if(num1==4){
num1=0;
HC573(4);
led1=~led1;
}
}
void Timer1() interrupt 3{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
num2++;
if(num2==20){
num2=0;
num++;
if(num==60)
num=0;
shi=num/10;
ge=num%10;
}
}