#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit X=P3^0;//啟動按鈕
sbit Y=P3^1;//停止按鈕
sbit Z=P3^2;//清零按鈕
int aa,temp;
char table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰極
void delay(int m); //延遲函數(shù)聲明
void display(int d); //顯示函數(shù)聲明
void keyscanf();
/*******************************************************************************/
/*******************************************************************************/
void main()
{
temp=0;
TMOD=0x01;//設置定時器工作方式
TH0=(65536-922)/256;//1毫秒
TL0=(65536-922)%256;//定時器裝初始值
EA=1;//開總中斷
ET0=1;//開定時器 0 的中斷
while(1)
{
keyscanf();
display(temp); //調(diào)用顯示子函數(shù)
}
}
void keyscanf()
{
if(X==0)//開啟定時器,開始計數(shù)
{
delay(5);
if(X==0)
{
TR0=1;
}
}
if(Y==0)//關閉定時器,暫停計數(shù)
{
delay(5);
if(Y==0)
{
TR0=0;
}
}
if(Z==0)//清零計數(shù)器
{
delay(5);
if(Z==0)
{
temp=0;
}
}
}
/*******************************************************************************/
/*******************************************************************************/
void delay(int m) //延遲子函數(shù)
{
int i,j;
for(i=m;i>0;i--)
for(j=110;j>0;j--);
}
/*******************************************************************************/
/*******************************************************************************/
void display(int d) //顯示子函數(shù)
{
char shi,ge;
ge=d%10;
shi=d/10;
dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(5);
delay(5);
dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(5);
}
void T0_time() interrupt 1
{
TH0=(65536-922)/256;//1毫秒
TL0=(65536-922)%256;//定時器裝初始值
aa++;
if(aa==20)
{
aa=0;
temp++;
if(temp==60)
temp=0;
}
}
|