📄 版本1.0.txt
字号:
#include<reg52.h>
void time0(void);
void time1(void);
void charge_buffer_1(void);
void charge_buffer_2(void);
void charge_buffer_3(void);
//void change(void);
void init_buffer_1(void);
void init_buffer_2(void);
void init_buffer_3(void);
//sbit P25=P2^5;
//void which_row_key_down();
void which_line_key_down();
void delay_10ms();
void delay_100ms();
unsigned char if_keydown();
unsigned char line,displace_1,displace_3;//,x
bit start_1,start_2,start_3,flag;
//unsigned char b;
//unsigned char cycle;
unsigned char timer,tim,lighting,a;
unsigned char buff,buffer_1[6],buffer_2[6],buffer_3[6];
unsigned char code tab_1[10]={0x3f,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0x07,0x7f,0x6f};
unsigned char code tab_2[7]={0X01,0X02,0X04,0x08,0X10,0X20,0x40};
//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_buffer_1();
init_buffer_2();
init_buffer_3();
buff=1;
start_1=0;
start_2=0;
flag=1;
displace_1=0;
displace_3=0;
lighting=250;
TMOD=1;
IE=0X8a;
TCON=0X11;
PT0=1;
tim=7;
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()
//{
if(start_1&&buff==1)
{
if(line==2)
{
displace_1++;
delay_100ms();
delay_100ms();
}
if(displace_1>2) displace_1=displace_1-3;
if(line==3)
{
switch(displace_1)
{
case 2:if(buffer_1[4]<3){buffer_1[5]=0;buffer_1[4]=0;}else{buffer_1[5]=0;buffer_1[4]=0;buffer_1[3]++;charge_buffer_1();}break;
case 1:buffer_1[3]++;charge_buffer_1();delay_100ms();break;
case 0:buffer_1[1]++;charge_buffer_1();delay_100ms();break;
}
}
}
if(start_3&&buff==3)
{
if(line==2)
{
displace_3++;
delay_100ms();
delay_100ms();
}
if(displace_3>2) displace_3=displace_3-3;
if(line==3)
{
switch(displace_3)
{
case 2:buffer_3[5]++;charge_buffer_3();delay_100ms();break;
case 1:buffer_3[3]++;charge_buffer_3();delay_100ms();break;
case 0:buffer_3[1]++;charge_buffer_3();delay_100ms();break;
}
}
}
// if(!buff)
//{
if(start_2)
{
delay_10ms(); //计数
}
else if(!start_2&&line==2)
{
init_buffer_2();
}
// }
//}
line=4;
}while(1);
}
void time0(void) interrupt 1 using 0
{
if(!timer)
{
buffer_1[5]=buffer_1[5]+1;
charge_buffer_1();
TH0=0Xbd;
TL0=0Xc0;
timer=15;
}
else{timer--;}
TR0=1;
//TH0=0Xff;
//TL0=0Xf1;
}
void time1(void) interrupt 3 using 0
{
// if(tim)
// {
a=7-tim;
P1=tab_2[a];
if(buff==1)
{
/* if(start_1)
{
if(lighting&&flag)
{ //if(a==5)
if(a=1+2*displace)
{ P1=tab_2[6];
}
}
lighting--;
if(!lighting)
{ lighting=250;
flag=!flag;
}
}*/
P2=tab_1[buffer_1[a]];
}
if(buff==2)
{
P2=tab_1[buffer_2[a]];
}
if(buff==3)
{
//charge_buffer_3();
P2=tab_1[buffer_3[a]];
}
tim--;
if(tim==0)
{
tim=7;
}
// }
// while(--tim);
TR1=1;
TH1=0Xf0;
TL1=0Xff;
}
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;if(buff==1){start_1=!start_1;}if(buff==2){start_2=!start_2;}if(buff==3){start_3=!start_3;}delay_100ms();delay_100ms();break;
case 0x0e:line=0,buff++;if(buff>3){buff=buff-3;}delay_100ms();delay_100ms();break;
}
}
void charge_buffer_1(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;
if(!start_1)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;
if(!start_1)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(!start_1)buffer_3[5]=buffer_3[5]+1;
}//}
} //if(!buff){
void charge_buffer_2(void)
{
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;
}//}
}
void charge_buffer_3(void)
{
unsigned char i=0,j=0,m,n;
//unsigned char ;
if(!((buffer_3[0]*10+buffer_3[1])%4)) {i=1;}
//else {i=0;}
//m=buffer_3[2]*10+buffer_3[3];
if(buffer_3[2]==0)
{
if(buffer_3[3]==1||buffer_3[3]==3||buffer_3[3]==5||buffer_3[3]==7||buffer_3[3]==8)
{j=1;}
}
if(buffer_3[2]==1)
{
if(buffer_3[3]==0||buffer_3[3]==2)
{j=1;}
}
n=j+1;
m=8+i+1;
if((buffer_3[2]==0)&&(buffer_3[3]==2))
{
if(buffer_3[5]==10&&buffer_3[4]!=2)
{
buffer_3[5]=0;
buffer_3[4]=buffer_3[4]+1;
}
if((buffer_3[4]>=2)&&(buffer_3[5]==m))
{
buffer_3[5]=1;
buffer_3[4]=0;
if(!start_3)
buffer_3[3]=buffer_3[3]+1;
}
}
else
{
if(buffer_3[5]==10&&buffer_3[4]!=3)
{
buffer_3[5]=0;
buffer_3[4]++;
}
if((buffer_3[4]>=3)&&(buffer_3[5]==n))
{
buffer_3[5]=1;
buffer_3[4]=0;
if(!start_3)
buffer_3[3]=buffer_3[3]+1;
}
}
if(buffer_3[3]==10&&buffer_3[2]!=1)
{
buffer_3[3]=0;
buffer_3[2]++;
}
if((buffer_3[2]>=1)&&(buffer_3[3]==3))
{
buffer_3[3]=1;
buffer_3[2]=0;
if(!start_3)
buffer_3[1]=buffer_3[1]+1;
}
if(buffer_3[1]==10)
{
buffer_3[1]=0;
buffer_3[0]++;
}
if(buffer_3[0]==10)
{
buffer_3[0]=0;
}
}
void delay_10ms()
{
unsigned char i,j;
for(i=0;i<119;i++)
for(j=0;j<20;j++)
;
if(start_2)
{
buffer_2[5]++;
charge_buffer_2();
}
}
void delay_100ms()
{
unsigned char i,j;
for(i=0;i<119;i++)
for(j=0;j<200;j++)
;
/*if(start)
{
buffer_2[5]++;
charge();
}*/
}
void init_buffer_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_buffer_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;
}
void init_buffer_3()
{
buffer_3[0]=0;
buffer_3[1]=6;
buffer_3[2]=0;
buffer_3[3]=9;
buffer_3[4]=0;
buffer_3[5]=7;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -