#include "reg52.h"
#include "intrins.h"
#include <stdio.h>
sbit j=P3^0;
sbit s1=P3^2;
sbit s2=P3^3;
sbit s3=P3^4;
sbit s4=P3^5;
void Timer0Init();
void Delay10ms();
void shumaguan();
void shijianxianshi();
void naozhongxianshi();
void bao();
void tiao();
unsigned char code xu[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xbf};
unsigned char zhongjian[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
int i,shi,fen,miao,n,nmia,nshi=0,nfen=0,nmiao=10,t,a;
void main()
{
Timer0Init();
while(1)
{
shumaguan();
tiao();
if(t==0) shijianxianshi();
if(t==1) naozhongxianshi();
bao();
}
}
void tiao()
{
if(s1==0)
{
Delay10ms();
if(s1==0)
{
t++;
if(t==2) t=0;
}
while(!s1);
}
if(s2==0)
{
Delay10ms();
if(s2==0)
{
a++;
if(a>2) a=0;
}
while(!s2);
}
if(s3==0)
{
Delay10ms();
if(s3==0)
{
if(a==0)
{
nmiao++;
if(nmiao>59) nmiao=0;
}
if(a==1)
{
nfen++;
if(nfen>59) nfen=0;
}
if(a==2)
{
nshi++;
if(nshi>23) nshi=0;
}
}
while(!s3);
}
if(s4==0)
{
Delay10ms();
if(s4==0)
{
if(a==0)
{
nmiao--;
if(nmiao<0) nmiao=59;
}
if(a==1)
{
nfen--;
if(nfen<0) nfen=59;
}
if(a==2)
{
nshi--;
if(nshi<0) nshi=23;
}
}
while(!s4);
}
}
void bao()
{
nmia=nmiao+1;
if(shi==nfen&fen==nfen&miao==nmiao) j=0;
if(shi==nfen&fen==nfen&miao==nmia) j=1;
}
void naozhongxianshi()
{
zhongjian[0]=xu[nshi/10];
zhongjian[1]=xu[nshi%10];
zhongjian[2]=0xbf;
zhongjian[3]=xu[nfen/10];
zhongjian[4]=xu[nfen%10];
zhongjian[5]=0xbf;
zhongjian[6]=xu[nmiao/10];
zhongjian[7]=xu[nmiao%10];
}
void shijianxianshi()
{
zhongjian[0]=xu[shi/10];
zhongjian[1]=xu[shi%10];
zhongjian[2]=0xbf;
zhongjian[3]=xu[fen/10];
zhongjian[4]=xu[fen%10];
zhongjian[5]=0xbf;
zhongjian[6]=xu[miao/10];
zhongjian[7]=xu[miao%10];
}
void Timer0Init() //5毫秒@11.0592MHz
{
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x00; //设置定时初值
TH0 = 0x28; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
EA=1;ET0=1;
}
void Timer0() interrupt 1
{
n++;
if(n>200)
{
miao++;
n=0;
}
if(miao>59)
{
fen++;
miao=0;
}
if(fen>59)
{
shi++;
fen=0;
}
if(shi>23)
{
shi=0;
}
}
void shumaguan()
{
P2=0x00;
P1=0xff;
P2=1<<i;
P1=zhongjian[i];
i++;
if(i>7)
i=0;
}
void Delay10ms() //@11.0592MHz
{
unsigned char i, j;
i = 108;
j = 145;
do
{
while (--j);
} while (--i);
}
评论0