📄 redcode2.c
字号:
#include <REG2051.H>
#define uchar unsigned char
#define uint unsigned int
#define end 0xee,0x6c,0xfd,0xd0,0xee,0x6c//end
uchar code bitdelay[2][4]={{0xfd,0xd0,0xfd,0xd0},{0xfd,0xd0,0xf9,0x66}},
keyacode[26]={1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1},
keycode[16][16]={{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0},{0,0,0,0,0,0,1,0,1,1,1,1,1,1,0,1},
{0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0},{0,0,0,0,0,1,0,0,1,1,1,1,1,0,1,1},
{0,0,0,0,0,1,0,1,1,1,1,1,1,0,1,0},{0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1},
{0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1},{0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0},
{0,0,0,0,1,0,0,0,1,1,1,1,0,1,1,1},{0,0,0,0,1,0,0,1,1,1,1,1,0,1,1,0},
{0,0,0,0,1,0,1,0,1,1,1,1,0,1,0,1},{0,0,0,0,1,0,1,1,1,1,1,1,0,1,0,0},
{0,0,0,0,1,1,0,0,1,1,1,1,0,0,1,1},{0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,0},
{0,0,0,0,1,1,1,0,1,1,1,1,0,0,0,1},{0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0}},
endcode[3][2]={{0xee,0x6c},{0xfd,0xd0},{0xee,0x6c}};
uchar *sendbuf,i,j=0,k=0,p=0,key,sc=0,st=0,sn=0;
uchar sd;
//------------------定时器0中断---------------
//--------------------------------------------
void t0(void) interrupt 1 using 2
{
P1=~P1;
P3_7=!P3_7;
}
//-----------------消颤程序-------------------
//--------------------------------------------
void mDelay(unsigned char j)
{
unsigned int i;
for(;j>0;j--)
for(i=0;i<125;i++);
}
//------------------主函数--------------------
//--------------------------------------------
void main()
{
TMOD=0X12;
ET0=1;
ET1=1;
EA=1;TH1=0xFD,TL1=0xD0;
TH0=0xf2,TL0=0xf2;
TR0=0;TR1=1;
while(1)
{ while(sn<4){
/*key=keyscan();
if(key)
{
mDelay(20);
if(key)
{
k=key-1;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][0];
TL1=bitdelay[sc][1];
TR1=1;
key=1;
}
}*/
if(P3_0==0)
{
mDelay(20);
if(P3_0==0)
{
k=0;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][st];
TL1=bitdelay[sc][st+1];
st+=2;
TR1=1;
P3_0=1;
}
}/*
else if(P3_1==0)
{
mDelay(20);
if(P3_1==0)
{
k=1;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][0];
TL1=bitdelay[sc][1];
TR1=1;
P3_1=1;
}
}
else if(key==3)
{mDelay(20);
if(P3_0==0)
{
k=0;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][0];
TL1=bitdelay[sc][1];
TR1=1;
P3_0=1;
}}
else if(key==4)
{mDelay(20);
if(P3_0==0)
{
k=0;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][0];
TL1=bitdelay[sc][1];
TR1=1;
P3_0=1;
}}
else if(key==5)
{mDelay(20);
if(P3_0==0)
{
k=0;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][0];
TL1=bitdelay[sc][1];
TR1=1;
P3_0=1;
}}
else if(key==6)
{mDelay(20);
if(P3_0==0)
{
k=0;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][0];
TL1=bitdelay[sc][1];
TR1=1;
P3_0=1;
}}
else if(key==7)
{mDelay(20);
if(P3_0==0)
{
k=0;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][0];
TL1=bitdelay[sc][1];
TR1=1;
P3_0=1;
}}
else if(key==8)
{mDelay(20);
if(P3_0==0)
{
k=0;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][0];
TL1=bitdelay[sc][1];
TR1=1;
P3_0=1;
}}
else if(key==9)
{mDelay(20);
if(P3_0==0)
{
k=0;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][0];
TL1=bitdelay[sc][1];
TR1=1;
P3_0=1;
}}
else if(key==10)
{mDelay(20);
if(P3_0==0)
{
k=0;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][0];
TL1=bitdelay[sc][1];
TR1=1;
P3_0=1;
}}
else if(key==11)
{mDelay(20);
if(P3_0==0)
{
k=0;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][0];
TL1=bitdelay[sc][1];
TR1=1;
P3_0=1;
}}
else if(key==12)
{mDelay(20);
if(P3_0==0)
{
k=0;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][0];
TL1=bitdelay[sc][1];
TR1=1;
P3_0=1;
}}
else if(key==13)
{mDelay(20);
if(P3_0==0)
{
k=0;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][0];
TL1=bitdelay[sc][1];
TR1=1;
P3_0=1;
}}
else if(key==14)
{mDelay(20);
if(P3_0==0)
{
k=0;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][0];
TL1=bitdelay[sc][1];
TR1=1;
P3_0=1;
}}
else if(key==15)
{mDelay(20);
if(P3_0==0)
{
k=0;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][0];
TL1=bitdelay[sc][1];
TR1=1;
P3_0=1;
}}
else
{mDelay(20);
if(P3_0==0)
{
k=0;
sendbuf=keyacode;
sd=0;
sc=sendbuf[sd];
TH1=bitdelay[sc][0];
TL1=bitdelay[sc][1];
TR1=1;
P3_0=1;
}}*/
}
}
}
//------------------键盘控制程序-----------------
//-----------------------------------------------
/*uchar keyscan(void) //控制矩阵键盘
{
uchar code_h;
uchar code_l,code_h1=0,code_l0=1;
if(flage==0)
P0=0xf0;
if((P0&0xf0)!=0xf0)
{
delay();
if((P0&0xf0)!=0xf0)
{
code_h=0xfe;
while(code_h1<4)
{
flage=1;
if(code_h1==0)P0=0xfe;
if(code_h1==1)P0=0xfd;
if(code_h1==2)P0=0xfb;
if(code_h1==3)P0=0xf7;
delay();
if((P0&0xf0)!=0xf0)
{
code_l=((P0&0xf0)|0x0f);
code_l=~code_l;
code_l>>=4;
if(code_l==1)code_l0=1;
else if(code_l==2)code_l0=2;
else if(code_l==4)code_l0=3;
else if(code_l==8)code_l0=4;
return((code_h1)*4+(code_l0));
}
else
code_h=(code_h<<1)|0x01;
code_h1++;
}
}
}
flage=0;
return(0);
} */
//------------------定时器1中断---------------
//--------------------------------------------
void timewide(void)interrupt 3 using 0
{
TR0=!TR0;
if(sd<26)
{
if(st==4)
{
sd++;
st=st-4;
}
if(sd<26){
sc=sendbuf[sd];
TH1=bitdelay[sc][st];
TL1=bitdelay[sc][st+1];
st+=2;}
}
else if(j<16)
{
if(st==4)
{
j++;
st=st-4;
}
if(j<16){
sc=keycode[k][j];
TH1=bitdelay[sc][st];
TL1=bitdelay[sc][st+1];
st+=2;}
}
else if(p<3)
{
TH1=endcode[p][0];
TL1=endcode[p][1];
p++;
}
else
{
TR1=0;
sd=0;j=0;p=0;sn++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -