|
#include<reg51.h>
bit int_flag;
unsigned char volatile T0Count;
unsigned char volatile T1Count;
unsigned char code table[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char code temp[] = {0xfe,0xfd,0xfb,0xf7};
unsigned long sum;
unsigned char Led[4];
void delay(unsigned int num )
{
while(--num);
}
void init(void)
{
TMOD=0x15;//TMOD=0x51; //T1定時,T0計數(shù)
TH1=(65536-50000)/256;//TH0=(65536-50000)/256; //定時50ms
TL1=(65536-50000)%256;// TL0=(65536-50000)%256;
TH0=0x00; //TH1=0x00;
TL0=0x00;//TL1=0x00;
}
void disp(void)
{
unsigned char i;
for(i=0;i<4;i++)
{
P2=temp[i];//片選
P0=table[Led[i]]; //取數(shù)據(jù)顯示
delay(100); //延時1毫秒
}
}
void main(void)
{
EA=1;
init();
TR0=1;
TR1=1;
ET1=1;
ET0=1;
while(1)
{
if(int_flag==1)
{
int_flag=0;
sum=TL0+TH0*256+T0Count*65536; //計算脈沖個數(shù)
Led[3]=sum%10000/1000;//顯示千位
Led[2]=sum%1000/100;//顯示百位
Led[1]=sum%100/10;//顯示十位
Led[0]=sum%10;//顯示個位
T1Count=0x00;
T0Count=0;
TH0=0x00;
TL0=0x00;
TR0=1;
}
disp();
}
}
void int_t1(void) interrupt 3
{
TH1=(65535-50000)/256;
TL1=(65536-50000)%256;
T1Count++;
if(T1Count==20)
{
TR0=0;
int_flag=1;
T1Count=0x00;
}
}
void int_T0(void) interrupt 1
{
T0Count++;
}
|
|