📄 clock.c
字号:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar code dispcode[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00};
uchar dispbitcode[]={0x01,0x02,0x04,0x08,0x10,0x20};
uchar dispbuf[]={1,2,0,0,0,0};
uchar dispbitcnt,second,minute,hour,mstcnt;
uint tcnt;
sbit K1=P3^2;
sbit K2=P3^3;
sbit K3=P3^4;
uchar i,j;
void delay (uint );
void main(void)
{
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
hour=12;
while(1)
{
if(K1==0)
{
delay(1);
if(K1==0)
{
second++;
if(second==60)
second=0;
dispbuf[5]=second%10;
dispbuf[4]=second/10;
while(K1==0);
}
}
if(K2==0)
{
delay(1);
if(K2==0)
{
minute++;
if(minute==60)
minute=0;
dispbuf[3]=minute%10;
dispbuf[2]=minute/10;
while(K2==0);
}
}
if(K3==0)
{
delay(1);
if(K3==0)
{
hour++;
if(hour==24)
hour=0;
dispbuf[1]=hour%10;
dispbuf[0]=hour/10;
while(K3==0);
}
}
}
}
void t0(void) interrupt 1
{
mstcnt++;
if(mstcnt==8)
{
mstcnt=0;
P0=dispcode[dispbuf[dispbitcnt]];
P2=dispbitcode[dispbitcnt];
dispbitcnt++;
if(dispbitcnt==6)
{
dispbitcnt=0;
}
}
tcnt++;
if(tcnt==4000)
{
tcnt=0;
second++;
if(second==60)
{
second=0;
minute++;
if(minute==60)
{
minute=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
dispbuf[5]=second%10;
dispbuf[4]=second/10;
dispbuf[3]=minute%10;
dispbuf[2]=minute/10;
dispbuf[1]=hour%10;
dispbuf[0]=hour/10;
}
}void delay (uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -