#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar miao,fen,shi,a;
uchar t;
uchar k;
uchar code tabledu[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x67};//0-9十个数
uchar code tablewe[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};//位选,第一个数码管亮,第二个亮.......
void delay(uint x)//延时函数
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void display()//显示函数
{
for(k=0;k<6;k++)
{
switch(k)
{
case(0): //第一个数码管显示秒的十位
{
P0=tablewe[k];
P1=tabledu[miao/10];
delay(2);
P1=0xff;//消隐
}
case(1): //第二个数码管显示秒的个位
{
P0=tablewe[k];
P1=tabledu[miao%10];
delay(2);
P1=0xff;
}
case(2)://第三个数码管显示分的十位
{
P0=tablewe[k];
P1=tabledu[fen/10];
delay(2);
P1=0xff;
}
case(3)://第四个数码管显示分的个位
{
P0=tablewe[k];
P1=tabledu[fen%10];
delay(2);
P1=0xff;
}
case(4)://第五个数码管显示时的十位
{
P0=tablewe[k];
P1=tabledu[shi/10];
delay(2);
P1=0xff;
}
case(5): //第六个数码管显示时的个位
{
P0=tablewe[k];
P1=tabledu[shi%10];
delay(2);
P1=0xff;
}
}
}
}
void time() interrupt 1 //定时中断函数
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(t==2)
{
t=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
}
}
}
}
}
void main() //主函数
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
display();
}
}
#define uchar unsigned char
#define uint unsigned int
uchar miao,fen,shi,a;
uchar t;
uchar k;
uchar code tabledu[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x67};//0-9十个数
uchar code tablewe[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};//位选,第一个数码管亮,第二个亮.......
void delay(uint x)//延时函数
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void display()//显示函数
{
for(k=0;k<6;k++)
{
switch(k)
{
case(0): //第一个数码管显示秒的十位
{
P0=tablewe[k];
P1=tabledu[miao/10];
delay(2);
P1=0xff;//消隐
}
case(1): //第二个数码管显示秒的个位
{
P0=tablewe[k];
P1=tabledu[miao%10];
delay(2);
P1=0xff;
}
case(2)://第三个数码管显示分的十位
{
P0=tablewe[k];
P1=tabledu[fen/10];
delay(2);
P1=0xff;
}
case(3)://第四个数码管显示分的个位
{
P0=tablewe[k];
P1=tabledu[fen%10];
delay(2);
P1=0xff;
}
case(4)://第五个数码管显示时的十位
{
P0=tablewe[k];
P1=tabledu[shi/10];
delay(2);
P1=0xff;
}
case(5): //第六个数码管显示时的个位
{
P0=tablewe[k];
P1=tabledu[shi%10];
delay(2);
P1=0xff;
}
}
}
}
void time() interrupt 1 //定时中断函数
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(t==2)
{
t=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
}
}
}
}
}
void main() //主函数
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
display();
}
}