📄 数字时钟.c
字号:
#include <reg52.h>
unsigned char code ledp[4]={0xf1,0xf2,0xf4,0xf8};//{0x1f,0x2f,0x4f,0x8f};//
unsigned char code ledp1[10]={0x81,0xf3,0x49,0x61,0x33,0x25,0x05,0xf1,0x01,0x21};
unsigned char code ledp2[10]={0x80,0xf2,0x48,0x60,0x32,0x24,0x04,0xf0,0x00,0x20};
unsigned int A[6]={0,1,2,0,0,0};
unsigned int B1[6]={9,5,9,5,3,2};
unsigned int cc,cmd=2;
bit cond=0,m=0,soundcmd=0;
sbit sound=P2^0;
sbit K2=P3^2;
sbit P10=P1^0;
sbit K3=P3^3;
sbit K4=P3^4;
sbit K5=P3^5;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
void Add(unsigned int i);
void main(void)
{
unsigned int n;
RCAP2H=0xF7;
RCAP2L=0x00;
TR2=1;
ET2=1;
EA=1;
sound=1;
// K0=0;
// K1=1;
// K2=1;
while(1)
{
if(!K2)
{
for(n=0;n<1000;n++);
while(!K2);
cond=~cond;
for(n=0;n<1000;n++);
}
if(!K5)
{
for(n=0;n<1000;n++);
while(!K5);
soundcmd=~soundcmd;
for(n=0;n<1000;n++);
}
if(cond==1)
{
if(!K3)
{
for(n=0;n<1000;n++);
while(!K3);
if(cmd==2)
cmd=4;
else
cmd=2;
for(n=0;n<1000;n++);
}
if(!K4)
{
for(n=0;n<10000;n++);
while(!K4);
Add(cmd);
for(n=0;n<10000;n++);
}
}
}
}
timer2()interrupt 5
{
static unsigned int t;
TF2=0;
t++;
if(cc==0){P14=1;P15=0;P16=0;P17=0;}
if(cc==2){P14=0;P15=1;P16=0;P17=0;}
if(cc==2){P14=0;P15=0;P16=1;P17=0;}
if(cc==3){P14=0;P15=0;P16=0;P17=1;}
// P14=1;P15=1;P16=1;P17=1;
cc++;
cc%=4;
if( cond ==1)
{
cc%=2;
if( cmd==4)
cc+=2;
}
if( cc==2)
{
if( m==0)
P0=ledp1[A[cc+2]];
else
P0=ledp2[A[cc+2]];
}
else
P0=ledp1[A[cc+2]];
P1=ledp[cc];
if( t%200==0&&cond==0)
{
m=~m;
}
if( t==400)
{
sound=1;
t=0;
if( cond == 0)
{
Add(0);
}
}
}
void Add(unsigned int i)
{
if(i>5)
return;
if( cond==0&&i==4&&!soundcmd )
sound=0;
A[i]++;
if(i==4)
{
if(A[i]>9)
{
A[i]=0;
Add(i+1);
return;
}
if(A[5]>1&&A[i]>B1[i])
{ A[i]=0;
Add(i+1);
return;
}
}
else if(A[i]>B1[i])
{
A[i]=0;
Add(i+1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -