|
#include"reg52.h"
#include"absacc.h"
#define uint unsigned int
#define uchar unsigned char
sfr AUXR = 0x8E;
code uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
uchar dspbuf[8]={10,10,10,10,10,10,10,10};
uchar dspcom=0;
uint num=0,k=0;
bit flag=0;
void display();
void cls_led()
{
XBYTE[0X8000]=0Xff;
}
void cls_buzz()
{
XBYTE[0xa000]=0x00;
}
//void Delay10ms() //@11.0592MHz
//{
// uchar i, j;
// i = 108;
// j = 145;
// do
// {
// while (--j);
// } while (--i);
//}
void main()
{
cls_buzz();cls_led();
AUXR |= 0x80;
TMOD &= 0xF0;
TL0 = 0xCD;
TH0 = 0xD4;
TF0 = 0;
TR0 = 1;
ET0=1;
EA=1;
while(1)
{
if(flag==1)
{
if(k==1000) k=0;
flag=0;
(k>=100)?(dspbuf[5]=k/100%10):(dspbuf[5]=10);
(k>=10)?(dspbuf[6]=k/10%10):(dspbuf[5]=10);
dspbuf[7]=k%10;
}
}
}
void T0_time() interrupt 1
{
TL0 = 0xCD;
TH0 = 0xD4;
display();
num++;
if(num==50)
{
num=0;
flag=1;
k++;
}
}
void display()
{
XBYTE[0xe000]=0xff;
XBYTE[0xc000]=(1<<dspcom); //位選
XBYTE[0xe000]=tab[dspbuf[dspcom]];//段選輸出數(shù)字
dspcom++;
if(dspcom==8) dspcom=0;
}
|
|