#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint temp,tt,qian,bai,shi,ge;
sbit key2 = P1^1;
sbit key3 = P1^2;
sbit deng1=P1^3;
sbit deng2=P1^4;
sbit guang=P1^5;
sbit beepIO=P1^6;
int t1=(65536-10000)/256;
int t2=(65536-10000)%256;
uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void keyscan();
void display();
void init();
void delay(uint z);
void shengyin();
/**************************************************************
Ö÷oˉêy
******************************************************************/
void main()
{
init();//3õê¼»ˉ×ó3ìDò
while(1)
{
if(tt==1)
{
tt=0;
if(++temp>=9999)
{
ET0=0;
shengyin (); //μ÷óÃéùòô
}
qian=temp/1000;
bai=temp%1000/100;
shi=temp%100/10;
ge=temp%10;
}
keyscan();
display();
}
}
/*********************************************************************
shengyin
***********************************************************************/
void shengyin()
{
uchar i,j;
for(j=5;j>0;j--)
{
for(i=0;i<50;i++)
{
beepIO=~beepIO;
delay(2);
}
}
}
/*********************************************************************
°′¼ü¿ØÖÆ
***********************************************************************/
void keyscan()
{
if(key2==0||guang==1) //ÔYí£¼Æê±
{
deng1=1;
deng2=0;
TR0=0;
}
if(key3==0||guang==0) //¿aê¼¼Æê±
{
deng2=1;
deng1=0;
TR0=1;
}
}
/*********************************************************************
ÏÔê¾
***********************************************************************/
void display()
{
P2=0x08;
P0=table[qian];
delay(1);
P2=0x04;
P0=table[bai]+0x80;
delay(1);
P2=0x02;
P0=table[shi];
delay(1);
P2=0x01;
P0=table[ge];
delay(1);
}
/*********************************************************************
Ñóê±
***********************************************************************/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/*********************************************************************
3õê¼»ˉ
***********************************************************************/
void init()
{
P2=0x00;
P0=0xc0;
temp=0;
TMOD=0x01;
TH0=t1;
TL0=t2;
EA=1;
ET0=1;
TR0=1;
}
/*********************************************************************
ÖD¶Ï
***********************************************************************/
void t0() interrupt 1
{
TH0=t1;
TL0=t2;
tt++;
}
|