📄 时钟.c
字号:
#include<reg51.h>
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
unsigned char code table[]={3,243,37,13,153,73,65,31,1,9,2,242,36,12,152,72,65,30,0,8,255};
unsigned char code month[]={00,31,28,31,30,31,30,31,31,30,31,30,31};
unsigned char hour=00,min=00,sec=50,t025=0,t10=0,day=01,mon=01,year=00,week;
bit bdata flag0=1,flag1=1,flag2=1,flag3=1,flag4=1;
void delay()
{
unsigned char i1,i2,i3; for (i1=0;i1<5;i1++) { for(i2=0;i2<15;i2++) { for(i3=0;i3<15;i3++) {} } }}
void screen(unsigned char w,unsigned char v){
switch (w) { case 1:P2=1;break; case 2: P2=2;break; case 3:P2=4;break; case 4:P2=8;break;
} P0=table[v]; delay();}
main()
{ void showtime();
void showdate();
void showyear();
void showweek();
unsigned char xuanze=0;
TMOD=2;
TL0=0;
TH0=6;
ET0=1;
EA=1;
TR0=1;
while(1)
{
if(P14!=flag4)
{
if(!flag4)
{
if(++xuanze==4)
{
xuanze=0;
}
}
flag4=P14;
}
switch(xuanze)
{
case 0:showtime();break;
case 1:showdate();break;
case 2:showyear();break;
case 3:showweek();break;
}
}
}
void time()
interrupt 1 using 2
{
if(++t025>=40)
{
t025=0;
if(++t10>=100)
{
t10=0;
if (++sec>=60)
{
sec=0;
if(++min==60)
{
min=0;
if(++hour==24)
{
hour=0;
if(++day>month[mon])
{
if(year%4==0 && mon==2)
{
if(day==month[mon]+1)
{
return;
}
}
day=1;
if(++mon==13)
{
mon=1;
if(++year==100)
{
year=0;
}
}
}
}
}
}
}
}
return ;
}
void showtime()
{
if(P10!=flag0) { if(!flag0) { if(++hour==24) { hour=0; } } flag0=P10; } if(P11!=flag1) { if(!flag1) { if(--hour==255) { hour=23; } } flag1=P11; }
if(P12!=flag2) { if(!flag2) { if(++min==60) { min =0; } } flag2=P12; } if(P13!=flag3) { if(!flag3) { if(--min ==255) { min=59; } } flag3=P13; }
screen(4,hour/10); screen(3,hour%10); screen(2,min/10+10); screen(1,min%10);}void showdate(){ if(P10!=flag0) { if(!flag0) { if(++mon==13) { mon=1; } if (day>month[mon]) day=month[mon]; } flag0=P10; } if(P11!=flag1) { if(!flag1) { if(--mon==00) { mon=12; } if (day>month[mon]) day=month[mon]; } flag1=P11; }
if(P12!=flag2) { if(!flag2) { if(++day>month[mon]) { if(year%4==0 && mon==2) { if(day>month[mon]+1) { day=1; } } else {day =1;} } } flag2=P12; } if(P13!=flag3) { if(!flag3) { if(--day ==00) { if(year%4==0 && mon==2) { day=month[mon]+1; } else {day=month[mon];} } } flag3=P13; } screen(4,mon/10); screen(3,mon%10+10); screen(2,day/10); screen(1,day%10);}void showyear(){ if(P10!=flag0) { if(!flag0) { if(++year==100) { year=0; } } flag0=P10; } if(P11!=flag1) { if(!flag1) { if(--year==255) { year=99; } } flag1=P11; }
screen(4,12); screen(3,0); screen(2,year/10); screen(1,year%10);}void showweek(){ unsigned char days=5; unsigned char i1;
days=days+year+year/4; for(i1=1;i1<mon;i1++) { days=days+month[i1]%7; } days=days+day; if (year>0||mon>2){days++;} week=days%7; screen(4,20); screen(3,20); screen(2,20); screen(1,week+10);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -