📄 clock.c
字号:
#include<reg51.h>
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^4;
sbit k4=P3^5;
sbit kk=P1^7;
sbit sb1=P3^2;
sbit sb2=P3^3;
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
unsigned char code table1[]={0xc0,0xcf,0xa4,0x86,0x8b,0x92,0x90,0xc7,0x80,0x82};
unsigned char a,b,sec,min,hour,dian,flage,flage1,nhour,nmin;
void delay(int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=63;y>0;y--);
}
void timer0 () interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
if(a<5)
{
dian=1;
kk=1;
}
else
{
dian=0;
kk=0;
}
if(a==10)
{
a=0;
sec++;
if(sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==24)
hour=0;
}
}
}
}
void display(char i,j)
{
if(dian==1)
P1=table[i/10];
else P1=table[i/10]+0x80;
k1=1;
delay(5);
k1=0;
if(dian==1)
P1=table[i%10];
else P1=table[i%10]+0x80;
k2=1;
delay(5);
k2=0;
if(dian==1)
P1=table1[j/10];
else P1=table1[j/10]+0x80;
k3=1;
delay(5);
k3=0;
if(dian==1)
P1=table[j%10];
else P1=table[j%10]+0x80;
k4=1;
delay(5);
k4=0;
}
void keysplay()
{
if(sb1==0)
{
while(sb1==0);
TR0=0;
flage++;
while(1)
{
display(hour,min);
if(sb2==0)
{
while(sb2==0);
if(flage==1)
hour++;
else min++;
if(hour==24)
hour=0;
if(min==60)
min=0;
}
if(sb1==0)
break;
}
if(flage==2)
{
flage=0;
while(sb1==0);
TR0=1;
}
}
if(sb2==0)
{
while(sb2==0);
flage1++;
while(1)
{
display(nhour,nmin);
if(sb1==0)
{
while(sb1==0);
if(flage1==1)
nhour++;
else nmin++;
if(nhour==24)
nhour=0;
if(nmin==60)
nmin=0;
}
if(sb2==0)
break;
}
if(flage1==2)
{
flage1=0;
while(sb2==0);
}
}
}
void speaker()
{
b=10;
wi: sb2=0;
delay(5);
sb2=1;
b--;
if(b!=0)
goto wi;
}
void beep()
{
if(min==0&&sec==0)
speaker();
if((min==nmin)&&(hour==nhour)&&(sec<30))
speaker();
else if(dian==0)
speaker();
if((hour>21)&&(hour<7))
{
delay(100);
}
}
void main()
{
EA=1;
ET0=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
P3=0x7e;
while(1)
{
display(hour,min);
keysplay();
beep();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -