|
#include"reg51.h"
#define uint unsigned int
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
unsigned int addNum;
unsigned char Nums,Numm,Numh;
#define SEGNUM P0
#define WEI P2
unsigned char code table[]={0x3f ,0x06 ,0x5b ,0x4f ,0x66 ,0x6d ,
0x7d ,0x07 ,0x7f ,0x6f ,0x77 ,0x7c ,
0x39 ,0x5e ,0x79 ,0x71 ,0x00};
void delay(unsigned int num)
{
unsigned i,j;
for(i=num;i>0;i--)
for(j=120;j>0;j--);
}
void main()
{
TMOD=0X02;
TL0=TH0=6;
ET0=1; //中斷允許位
EA=1;
TR0=1; //TR0置1,開啟計時
IT0=1; //中斷0的中斷方式
EX0=1; //開通允許位
IT1=1; //中斷方式
EX1=1;
TR0=1; //啟動
while(1)
{
if(!key1)
{
delay(10) ;
if(!key1)
{
Numh++; while(!key1) ;
}
}
if(!key2)
{
delay(10) ;
if(!key2)
{
Numm++; while(!key2) ;
}
}
if(!key3)
{
delay(10) ;
if(!key3)
{
Nums++; while(!key3) ;
}
}
WEI=0Xef;
SEGNUM=table[Nums/10]; //對10取整
delay(5);
WEI=0Xdf;
SEGNUM=table[Nums%10];
delay(5);
WEI=0xfb;
SEGNUM=table[Numm/10];
delay(5);
WEI=0xf7;
SEGNUM=table[Numm%10];
delay(5);
if(Numm==60)
{
Numm=0;
}
WEI=0xfe;
SEGNUM=table[Numh/10];
delay(5);
WEI=0xfd;
SEGNUM=table[Numh%10];
delay(5);
}
}
void timer0() interrupt 1
{
addNum++;
if(addNum==4000)
{
Nums++;
addNum=0;
}
if(Nums==60)
{
Numm++;
Nums=0;
}
if(Numm==60)
{
Numh++;
Numm=0;
}
if(Numh==24)
{
Numh=0;
}
}
|
|