#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit D1=P2^2;
sbit D2=P2^1;
sbit D3=P2^0;
sbit key1=P3^4; /定義鍵盤
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
uchar code table[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28};
uchar ge,shi,bai,qian,aa,temp;
void init();
void delay(z);
void display(uchar qian,uchar bai,uchar shi,uchar ge);
void main()
{
init(); /程序初始化
key1=1;
key2=1;
key3=1;
key4=1;
while(1)
{
if(key1==0) /鍵盤觸發程序
{
ge++;
while(!key1)
if(ge==10)
ge=0;
}
if(key2==0)
{
shi++;
while(!key2)
if(shi==6)
shi=0;
}
if(key3==0)
{
bai++;
while(!key3)
if(bai==10)
bai=0;
}
if(key4==0)
{
qian++;
while(!key4)
if(qian==3)
qian=0;
}
if(aa==20) /時鐘運行程序
{
aa=0;
temp++;
if(temp==60)
{
temp=0;
ge++;
if(ge==10)
{
ge=0;
shi++;
}
if(shi==6)
{
shi=0;
bai++;
}
if(bai==10)
{
bai=0;
qian++;
}
if(qian==3)
{
qian=0;
}
if(qian==2&&bai==4) /判斷如果到了24小時程序初始化
{
init();
}
}
}
display(qian,bai,shi,ge); /顯示子程序
}
}
void init()
{
ge=0;
shi=0;
bai=0;
qian=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
void delay(z)
{
int a,b;
for(a=0;a<z;a++)
for(b=0;b<114;b++);
}
void display(uchar qian,uchar bai,uchar shi,uchar ge)
{
P0=table[qian];
P2=0xbf;
delay(5);
P0=table[shi];
P2=0xef;
delay(5);
P0=table[ge];
P2=0x7f;
delay(5);
P0=table[bai];
P2=0xdf;
delay(5);
}
初學者自創,如有不足,請指出!
|