#include <reg52.h>
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
unsigned char code LedChar[] = {
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};
unsigned char LedBuff[6] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
unsigned char i = 0;
unsigned int cnt = 0;
unsigned char flag1s = 0;
void main()
{
char j; //Ñ-»·±äá¿
unsigned long sec = 170665;
unsigned char buf[6];
EA = 1;
ENLED = 0;
ADDR3 = 1;
TMOD = 0x10;
TH1 = 0xFC;
TL1 = 0x67;
ET1 = 1;
TR1 = 1;
while (1)
{
if (flag1s == 1)
{
flag1s = 0;
sec--;
buf[0] = sec%10;
buf[1] = sec/10%10;
buf[2] = sec/100%10;
buf[3] = sec/1000%10;
buf[4] = sec/10000%10;
buf[5] = sec/100000%10;
for (j=5; j>=1; j--)
{
if (buf[j] == 0)
LedBuff[j] = 0xFF;
else
break;
}
for ( ; j>=0; j--)
{
LedBuff[j] = LedChar[buf[j]];
}
}
}
}
void InterruptTimer1() interrupt 3
{
TH1 = 0xFC;
TL1 = 0x67;
cnt++;
if (cnt >= 500)
{
cnt = 0;
flag1s = 1;
}
P0 = 0xFF;
switch (i)
{
case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=LedBuff[0]; break;
case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=LedBuff[1]; break;
case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=LedBuff[2]; break;
case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=LedBuff[3]; break;
case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=LedBuff[4]; break;
case 5: ADDR2=1; ADDR1=0; ADDR0=1; i=0; P0=LedBuff[5]; break;
default: break;
}
}
|