#include<reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar time_num,time_1s,time_1sb,time_10ms=0,time_60s,time_60m;
uchar led_10ms,led_100ms,led_1s,led_10s,led_1m,led_10m,led_1h,led_10h;
void delay(uint i);
sbit ls138_a=P2^2;
sbit ls138_b=P2^3;
sbit ls138_c=P2^4;
sbit led_en=P1^1;
uchar code led_dis[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
void main()
{
uchar i;
uchar led[8];
TMOD=0x01;
TH0=(65536-9216)/256;
TL0=(65536-9216)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
///////////////////////////////////////////////////////
if(time_10ms==100)
{
time_10ms=0;
time_1s++;
if(time_1s==100) time_1s=0;
if(time_1sb==60)
{
time_1sb=0;
time_60s++;
if(time_60s==60)
time_60m++;
}
}
led_100ms=led_dis[time_10ms/10];
led_10ms =led_dis[time_10ms%10];
led_10s =led_dis[time_1s/10];
led_1s =led_dis[time_1s%10];
led_1m =led_dis[time_60s%10];
led_10m =led_dis[time_60s/10];
led_1h =led_dis[time_60m%10];
led_10h =led_dis[time_60m/10];
//////////////////////////////////////////////////////////
led[2]=led_100ms;
led[3]=led_10ms;
led[0]=led_10s;
led[1]=led_1s;
led[4]=led_1m;
led[5]=led_10m;
led[6]=led_1h;
led[7]=led_10h;
for(i=0;i<4;i++)
{
P0=led[i];
switch (i)
{
case 0: ls138_a=0;ls138_b=0;ls138_c=0;led_en=1;break;
case 1: ls138_a=1;ls138_b=0;ls138_c=0;led_en=1;break;
case 2: ls138_a=0;ls138_b=1;ls138_c=0;led_en=1;break;
case 3: ls138_a=1;ls138_b=1;ls138_c=0;led_en=1;break;
case 4: ls138_a=0;ls138_b=0;ls138_c=1;led_en=1;break;
case 5: ls138_a=1;ls138_b=0;ls138_c=1;led_en=1;break;
case 6: ls138_a=0;ls138_b=1;ls138_c=1;led_en=1;break;
case 7: ls138_a=1;ls138_b=1;ls138_c=1;led_en=1;break;
}
delay(10);
}
}
}
void time_50ms() interrupt 1
{
TH0=(65536-9216)/256;
TL0=(65536-9216)%256; //10ms
time_10ms++;
/*if(time_10ms==100)
{
time_10ms=0;
time_1s++;
time_1sb=time_1s;
if(time_1s==100) time_1s=0;
if(time_1sb==60)
{
time_1sb=0;
time_60s++;
if(time_60s==60)
time_60m++;
}
}
led_100ms=led_dis[time_10ms/10];
led_10ms =led_dis[time_10ms%10];
led_10s =led_dis[time_1s/10];
led_1s =led_dis[time_1s%10];
led_1m =led_dis[time_60s%10];
led_10m =led_dis[time_60s/10];
led_1h =led_dis[time_60m%10];
led_10h =led_dis[time_60m/10]; */
}
void delay(uint i)
{
uchar j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}