📄 数字钟2.txt
字号:
#include<reg52.h>
void time0(void);
void time1(void);
void charge(void);
//void change(void);
void init_1(void);
void init_2(void);
//sbit P25=P2^5;
//void which_row_key_down();
void which_line_key_down();
void delay_10ms();
unsigned char if_keydown();
unsigned char line,displace;//,x
unsigned char buff,start;
//unsigned char b;
//unsigned char cycle;
unsigned char timer,tim,a;
unsigned char buffer_1[6],buffer_2[6];
unsigned char code tab_1[10]={0x3f,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0x07,0x7f,0x6f};
unsigned char code tab_2[6]={0X01,0X02,0X04,0x08,0X10,0X20};
//unsigned char code b[16]={0x3f,0x06,0x5b,0x4f,0x67,0x66,0x6d,0x7d,0x7f,0x07,0x7f,0x6f,0x39,0x5c,0x79,0x71};
//unsigned char r1;
void main(void)
{ unsigned char i;
init_1();
init_2();
buff=1;
start=0;
displace=0;
TMOD=1;
IE=0X8a;
TCON=0X11;
PT0=1;
tim=6;
timer=15;
TH0=0Xbd;
TL0=0Xc0;
// TH1=0Xf8;
// TL1=0Xff;
TR0=1;
TR1=1;
do{
if(if_keydown())
{
//which_row_key_down();
which_line_key_down();
//x=line*4+row;
//P2=b[x];
}
if(start)
{
if(buff)
{
if(line==2)
{
i++;
}
displace=i/3;
if(line==3)
{
switch(displace)
{
case 0:buffer_1[5]=0;break;
case 1:buffer_1[3]++;break;
case 2:buffer_1[1]++;break;
}
}
}
if(!buff)
{
//delay_10ms();
if(line==2)
{
init_2();
}
}
}
line=4;
}while(1);
}
void time0(void) interrupt 1 using 0
{
if(!timer)
{
buffer_1[5]=buffer_1[5]+1;
charge();
TH0=0Xbd;
TL0=0Xc0;
timer=15;
}
else{timer--;}
TR0=1;
//TH0=0Xff;
//TL0=0Xf1;
}
void time1(void) interrupt 3 using 0
{
if(tim)
{
a=6-tim;
P1=tab_2[a];
if(buff)
{
P2=tab_1[buffer_1[a]];
}
else
{
P2=tab_1[buffer_2[a]];
}
tim--;
if(tim==0)
{
tim=6;
}
}
// while(--tim);
TR1=1;
TH1=0Xf8;
TL1=0Xff;
}
void charge(void)
{
//if(buff){
if(buffer_1[5]==10)
{
buffer_1[5]=0;
buffer_1[4]=buffer_1[4]+1;
}
if(buffer_1[4]==6)
{
buffer_1[4]=0;
buffer_1[3]=buffer_1[3]+1;
}
if(buffer_1[3]==10)
{
buffer_1[3]=0;
buffer_1[2]=buffer_1[2]+1;
}
if(buffer_1[2]==6)
{
buffer_1[2]=0;
buffer_1[1]=buffer_1[1]+1;
}
if(buffer_1[1]==10&&buffer_1[0]!=2)
{
buffer_1[1]=0;
buffer_1[0]=buffer_1[0]+1;
}
if(buffer_1[1]==4&&buffer_1[0]==2)
{
buffer_1[1]=0;
buffer_1[0]=0;
}//}
//if(!buff){
if(buffer_2[5]==10)
{
buffer_2[5]=0;
buffer_2[4]=buffer_2[4]+1;
}
if(buffer_2[4]==10)
{
buffer_2[4]=0;
buffer_2[3]=buffer_2[3]+1;
}
if(buffer_2[3]==10)
{
buffer_2[3]=0;
buffer_2[2]=buffer_2[2]+1;
}
if(buffer_2[2]==6)
{
buffer_2[2]=0;
buffer_2[1]=buffer_2[1]+1;
}
if(buffer_2[1]==10)
{
buffer_2[1]=0;
buffer_2[0]=buffer_2[0]+1;
}
if(buffer_2[1]==6)
{
//buffer_2[1]=0;
buffer_2[0]=0;
}//}
}
unsigned char if_keydown()
{
unsigned char i;
P0=0xf0;
//P0=0xf0;
i=P0;
if(i==0x70)
{
delay_10ms();
delay_10ms();
i=P0;
if(i==0x70)
{return 1;}
else return 0;
}
return 0;
}
void which_line_key_down()
{
unsigned char d;
P0=0x0f;
d=P0;
switch(d)
{
case 0x07:line=3;break;
case 0x0b:line=2;break;
case 0x0d:line=1;start=!start;break;
case 0x0e:line=0,buff=!buff;break;
}
}
void delay_10ms()
{
unsigned char i,j;
for(i=0;i<119;i++)
for(j=0;j<20;j++)
;
if(start)
{
buffer_2[5]++;
charge();
}
}
void init_1()
{
buffer_1[0]=0;
buffer_1[1]=0;
buffer_1[2]=0;
buffer_1[3]=0;
buffer_1[4]=0;
buffer_1[5]=0;
}
void init_2()
{
buffer_2[0]=0;
buffer_2[1]=0;
buffer_2[2]=0;
buffer_2[3]=0;
buffer_2[4]=0;
buffer_2[5]=0;
}
清零键无效,按键反应迟钝,+按键加的太快
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -