#include <stc12c5a60s2.h>
#define uchar unsigned char
#define uint unsigned int
#define LongToBin(n) (((n>>21)&0x80)|((n>>18)&0x40)|((n>>15)&0x20)|((n>>12)&0x10)|((n>>9)&0x08)|((n>>6)&0x04)|((n>>3)&0x02)|((n)&0x01))
#define BIN(n) LongToBin(0x##n##)
sbit anjian=P4^5;
sbit P0_0=P0^0;//层
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
sbit P0_4=P0^4;
sbit P0_5=P0^5;
sbit P0_6=P0^6;
sbit P0_7=P0^7;
sbit P4_6=P4^6;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
sbit P3_0=P3^0;//竖
sbit P3_1=P3^1;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
sbit P2_6=P2^6;
sbit P2_7=P2^7;
sbit P4_4=P4^4;
char moshi=1;
char h=0,v=0;
int t=0;
char zy=0,sj=0,jz=0;
bit ly_flag=0; //成功接收标志
void delay_1ms(uint q)
{
uint i,j;
for(i=0;i<q;i++)
for(j=0;j<110;j++);
}
void key()
{
if(anjian==0)
{
delay_1ms(5);
if(anjian==0)
{
while(anjian==0);
jz++;
if(jz==2)jz=0;
if(jz==0){moshi=1;TR0=0;ET0=0;};
if(jz==1){moshi=0;ly_flag=1;TR0=1;ET0=1;}
}
}
}
void dh1()
{
char i,j;
P3_0=0;//J1
P3_1=0;//J2
P3_3=0;//J3
P3_4=0;//J4
P3_5=0;//J5
P3_6=0;//J6
P3_7=0;//J7
P2_0=0;//J8
P2_1=0;//J9
P2_2=0;//J10
P2_3=0;//J11
P2_4=0;//J12
P2_5=0;//J13
P2_6=0;//J14
P2_7=0;//J15
P4_4=0;//J16
P1_7=0;
P1_6=0;
P1_5=0;
P1_4=0;
P1_3=0;
P1_2=0;
P1_1=0;
P4_6=0;
P0=0X01;
delay_1ms(10);
for(j=0;j<7;j++)
{
P0=(P0<<1)|0x01;
delay_1ms(10);
}
P4_6=1;
delay_1ms(10);
P1_1=1;
delay_1ms(10);
P1_2=1;
delay_1ms(10);
P1_3=1;
delay_1ms(10);
P1_4=1;
delay_1ms(10);
P1_5=1;
delay_1ms(10);
P1_6=1;
delay_1ms(10);
P1_7=1;
for(i=0;i<2;i++)
{
P1_7=0;
P1_6=0;
P1_5=0;
P1_4=0;
P1_3=0;
P1_2=0;
P1_1=0;
P4_6=0;
P0=0X01;
delay_1ms(1000);
for(j=0;j<7;j++)
{
P0=(P0<<1)|0x01;
delay_1ms(700);
key();
if(ly_flag==1){ly_flag=0;break;}
}
P4_6=1;
delay_1ms(700);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P1_1=1;
delay_1ms(700);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P1_2=1;
delay_1ms(700);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P1_3=1;
delay_1ms(700);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P1_4=1;
delay_1ms(700);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P1_5=1;
delay_1ms(700);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P1_6=1;
delay_1ms(700);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P1_7=1;
delay_1ms(8000);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
delay_1ms(8000);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
delay_1ms(8000);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
delay_1ms(8000);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
delay_1ms(8000);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
delay_1ms(8000);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
}
}
void dh2()
{
char j;
P1_7=1;
P1_6=1;
P1_5=1;
P1_4=1;
P1_3=1;
P1_2=1;
P1_1=1;
P4_6=1;
P0_7=1;
P0_6=1;
P0_5=1;
P0_4=1;
P0_3=1;
P0_2=1;
P0_1=1;
P0_0=1;
for(j=0;j<12;j++)
{
P4_4=1;
P2_0=1;
P3_0=0;
P2_1=0;
delay_1ms(400);
P3_0=1;
P2_1=1;
P3_1=0;
P2_2=0;
delay_1ms(400);
P3_1=1;
P2_2=1;
P3_3=0;
P2_3=0;
delay_1ms(400);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P3_3=1;
P2_3=1;
P3_4=0;
P2_4=0;
delay_1ms(400);
P3_4=1;
P2_4=1;
P3_5=0;
P2_5=0;
delay_1ms(400);
P3_5=1;
P2_5=1;
P3_6=0;
P2_6=0;
delay_1ms(400);
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P3_6=1;
P2_6=1;
P3_7=0;
P2_7=0;
delay_1ms(400);
P3_7=1;
P2_7=1;
P4_4=0;
P2_0=0;
delay_1ms(400);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
}
}
void dh3()
{
char i,j;
int yanshi=400;
P3_0=0;//J1
P3_1=0;//J2
P3_3=0;//J3
P3_4=0;//J4
P3_5=0;//J5
P3_6=0;//J6
P3_7=0;//J7
P2_0=0;//J8
P2_1=0;//J9
P2_2=0;//J10
P2_3=0;//J11
P2_4=0;//J12
P2_5=0;//J13
P2_6=0;//J14
P2_7=0;//J15
P4_4=0;//J16
for(i=0;i<3;i++)
{
P1_7=0;
P1_6=0;
P1_5=0;
P1_4=0;
P1_3=0;
P1_2=0;
P1_1=0;
P4_6=0;
P0=0X01;
delay_1ms(yanshi);
for(j=0;j<7;j++)
{
P0=(P0<<1);
delay_1ms(yanshi);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
}
P0_7=0;
P4_6=1;
delay_1ms(yanshi);
P4_6=0;
P1_1=1;
delay_1ms(yanshi);
P1_1=0;
P1_2=1;
delay_1ms(yanshi);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P1_2=0;
P1_3=1;
delay_1ms(yanshi);
P1_3=0;
P1_4=1;
delay_1ms(yanshi);
P1_4=0;
P1_5=1;
delay_1ms(yanshi);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P1_5=0;
P1_6=1;
delay_1ms(yanshi);
P1_6=0;
P1_7=1;
delay_1ms(yanshi);
P1_6=1;
P1_7=0;
delay_1ms(yanshi);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P1_5=1;
P1_6=0;
delay_1ms(yanshi);
P1_4=1;
P1_5=0;
delay_1ms(yanshi);
P1_3=1;
P1_4=0;
delay_1ms(yanshi);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P1_2=1;
P1_3=0;
delay_1ms(yanshi);
P1_1=1;
P1_2=0;
delay_1ms(yanshi);
P1_1=0;
P0_7=1;
delay_1ms(yanshi);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P0_6=1;
P0_7=0;
delay_1ms(yanshi);
P0_5=1;
P0_6=0;
delay_1ms(yanshi);
P0_4=1;
P0_5=0;
delay_1ms(yanshi);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P0_3=1;
P0_4=0;
delay_1ms(yanshi);
P0_2=1;
P0_3=0;
delay_1ms(yanshi);
P0_1=1;
P0_2=0;
delay_1ms(yanshi);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
}
}
void dh4()
{
char j;
P3_0=0;//J1
P3_1=0;//J2
P3_3=0;//J3
P3_4=0;//J4
P3_5=0;//J5
P3_6=0;//J6
P3_7=0;//J7
P2_0=0;//J8
P2_1=0;//J9
P2_2=0;//J10
P2_3=0;//J11
P2_4=0;//J12
P2_5=0;//J13
P2_6=0;//J14
P2_7=0;//J15
P4_4=0;//J16
P1_7=0;
P1_6=0;
P1_5=0;
P1_4=0;
P1_3=0;
P1_2=0;
P1_1=0;
P4_6=0;
P0_7=0;
P0_6=0;
P0_5=0;
P0_4=0;
P0_3=0;
P0_2=0;
P0_1=0;
P0_1=0;
P0_0=0;
for(j=0;j<3;j++)
{
P1_7=0;
P0_0=0;
P4_6=1;
P0_7=1;
delay_1ms(500);
P4_6=0;
P0_7=0;
P1_1=1;
P0_6=1;
delay_1ms(500);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P1_2=1;
P0_5=1;
P1_1=0;
P0_6=0;
delay_1ms(500);
P1_3=1;
P0_4=1;
P1_2=0;
P0_5=0;
delay_1ms(500);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P1_4=1;
P0_3=1;
P1_3=0;
P0_4=0;
delay_1ms(500);
P1_5=1;
P0_2=1;
P1_4=0;
P0_3=0;
delay_1ms(500);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P1_6=1;
P0_1=1;
P1_5=0;
P0_2=0;
delay_1ms(500);
P1_7=1;
P0_0=1;
P1_6=0;
P0_1=0;
delay_1ms(500);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
}
}
void dh5()
{
char i;
P1_7=1;
P1_6=1;
P1_5=1;
P1_4=1;
P1_3=1;
P1_2=1;
P1_1=1;
P4_6=1;
P0_7=1;
P0_6=1;
P0_5=1;
P0_4=1;
P0_3=1;
P0_2=1;
P0_1=1;
P0_1=1;
P0_0=1;
for(i=0;i<3;i++)
{
P3_0=0;
delay_1ms(400);
P3_1=0;
delay_1ms(400);
P3_3=0;
delay_1ms(400);
P3_4=0;
delay_1ms(400);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P3_5=0;
delay_1ms(400);
P3_6=0;
delay_1ms(400);
P3_7=0;
delay_1ms(400);
P2_0=0;
delay_1ms(400);
key();
if(ly_flag==1){moshi=0;ly_flag=0;break;}
P2_1=0;
delay_1ms(400);
P2_2=0;
delay_1ms(400);
P2_3=0;
delay_1ms(400);
P2_4=0;
delay_1ms(4