?? 1.2.c
字號:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uint a,b,c,c1,d,x,y,xi,n,n0,
ke,ke0,kex,ke1,ke2,ke3,ke4,
ry,ry0,ry1,hf,hf0,hf1,hf2,
bian,ge,shi,bai,qian,q1,q2,
q3,q4,t,f,ke12,dian;
uchar code table[]={
0xa0,0xbb,0x62,0x2a,0x39,
0x2c,0x24,0xba,0x20,0x28};
void into()
{
TMOD=0x22;
EA=1;
ET0=1;
TR0=1;
TH0=56;
TL0=56;
a=0;
b=0;
c=0;
d=0;
q1=0xf7;
q2=0xfd;
q3=0xfb;
q4=0xfe;
f=0xff;
ke1=1;
ke2=0;
ke3=1;
ke4=1;
ry=280;
hf=1290;
xi=0;
n=2008;
}
void delay(uint b)
{
for(x=b;x>0;x--)
for(y=30;y>0;y--);
}
void display()
{
ge=xi%10;
P0=q1;
P2=table[ge];
delay(10);
shi=xi%100/10;
P0=q2;
P2=table[shi];
delay(10);
bai=xi/100%10;
P0=q3;
P2=table[bai];
delay(10);
qian=xi/1000;
P0=q4;
P2=table[qian];
delay(10);
if (dian)
{
if (c%2)
{
P0=0xf5;
P2=0xdf;
}
else
P2=0xff;
}
dian=0;
}
void key()
{
ke=P0&0xf0;
if (ke==0xe0||ke==0xd0||ke==0xb0||ke==0x70)
{
delay(10);
if (ke==0xe0||ke==0xd0||ke==0xb0||ke==0x70)
{
kex=ke;
delay(500);
ke0=P0&0xf0;
}
}
switch(kex)
{
case 0xb0: if (ke!=ke0)ke1++;break;
case 0x70: if (ke!=ke0)ke2++;break;
case 0xd0: if (ke!=ke0)ke3++;break;
case 0xe0: if (ke!=ke0)ke4++;break;
}
kex=0;
if (ke1>4)
ke1=1;
if (ke2>4)
ke2=0;
switch(ke1)
{
case 1:xi=c1;break;
case 2:xi=hf1,dian=1;break;
case 3:xi=ry1;break;
case 4:xi=n;break;
}
if (ke2>0)
{
switch(ke2)
{
case 1: if (c%2)t=f,f=q1,q1=t;
if (ke!=ke0&&ke==0xb0)ge++;
if (ke!=ke0&&ke==0x70)ge--;break;
case 2: if (c%2)t=f,f=q2,q2=t;
if (ke!=ke0&&ke==0xb0)shi++;
if (ke!=ke0&&ke==0x70)shi--;break;
case 3: if (c%2)t=f,f=q3,q3=t;
if (ke!=ke0&&ke==0xb0)bai++;
if (ke!=ke0&&ke==0x70)bai--;break;
case 4: if (c%2)t=f,f=q4,q4=t;
if (ke!=ke0&&ke==0xb0)qian++;
if (ke!=ke0&&ke==0x70)qian--;break;
}
d=ge+shi*10+bai*100+qian*1000;
xi=d;
if (ke1!=0)
{
ke12=ke1+5;
switch(ke12)
{
case 7:hf0=d;break;
case 8:ry0=d;break;
case 9:n0=d;break;
}
ke12=ke1-5;
}
if (ke1!=0&&P1^3==0xf7)
{
ke12=ke1+5;
switch(ke12)
{
case 6:c=d;break;
case 7:hf=d;break;
case 8:ry=d;break;
case 9:n=d;break;
}
ke12=ke1-5;
}
ke1=0;
}
}
void year()
{
if(c==3600)
c=0;
if (!(c%60))
hf++;
if(hf==24*60)
{
ry++;
hf=0;
}
switch(ry/30)
{
case 1: if (ry%60==32)ry=ry+28;break;
case 2: if (ry%60==30)ry=ry+30;break;
case 3: if (ry%60==32)ry=ry+28;break;
case 4: if (ry%60==31)ry=ry+29;break;
case 5: if (ry%60==32)ry=ry+28;break;
case 6: if (ry%60==31)ry=ry+29;break;
case 7: if (ry%60==32)ry=ry+28;break;
case 8: if (ry%60==32)ry=ry+28;break;
case 9: if (ry%60==31)ry=ry+29;break;
case 10: if (ry%60==32)ry=ry+28;break;
case 11: if (ry%60==31)ry=ry+29;break;
case 12: if (ry%60==32)ry=ry+28;break;
default : ;
}
if (ry==365)
n++;
}
void time()
{
if (n==n0&&ry1==ry0&&hf1==hf0)
{
P1=0xfe;
}
if (hf1!=hf0)
P1=0xff;
}
void transfrom ()
{
hf1=hf%10+hf%60/10*10+hf/60%10*100+hf/60/10*1000;
c1=c%10+c%60/10*10+c/60%10*100+c/60/10*1000;
ry1=ry%10+ry%60/10*10+ry/60%10*100+ry/60/10*1000;
}
void main()
{
into();
while(1)
{
year();
key();
transfrom ();
display();
time();
}
}
void exter0() interrupt 1
{
a++;
if(a==4608)
{
c++;
a=0;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -