#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); //延迟函数声明
void display(int d); //显示函数声明
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); //调用显示子函数
}
}
void keyscanf()
{
if(X==0)//开启定时器,开始计数
{
delay(5);
if(X==0)
{
TR0=1;
}
}
if(Y==0)//关闭定时器,暂停计数
{
delay(5);
if(Y==0)
{
TR0=0;
}
}
if(Z==0)//清零计数器
{
delay(5);
if(Z==0)
{
temp=0;
}
}
}
/*******************************************************************************/
/*******************************************************************************/
void delay(int m) //延迟子函数
{
int i,j;
for(i=m;i>0;i--)
for(j=110;j>0;j--);
}
/*******************************************************************************/
/*******************************************************************************/
void display(int d) //显示子函数
{
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;
}
}
|