#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code wu[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; // 数码管位选
uchar code du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; //数码管段选
uchar buf[]={0,0,11,0,0,11,0,0}; //控制时钟显示
uint num;
/******** 显示函数 *********/
void main()
{
uchar num1,num2,num3; //时钟 秒 分 时
ET0=1; //中断初始化
TR0=1;
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
TR0=1;
buf[0]=num3/10; //显示
buf[1]=num3%10;
buf[3]=num2/10;
buf[4]=num2%10;
buf[6]=num1/10;
buf[7]=num1%10;
while(1)
{
if(num>50)
{
num1++;
num=0;
}
if(num1>59)
{
num2++;
num1=0;
}
if(num2>59)
{
num3++;
num2=0;
}
if(num3>23)
{
num3=0;
}
}
}
/******** 中断函数 *********/
void time() interrupt 1
{
static char cnt=0;
num++;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
if(++cnt>7) cnt=0; //动态扫描
P0=du[10];
P1=wu[cnt];
P0=du[buf[cnt]];
}
|