📄 main.c
字号:
#include <at89s52.h>
#include <stdio.h>
#include <per.h>
#include <intrins.h>
unsigned char MS[BUFFNUM+1]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
unsigned char *p;
unsigned char pointer;
unsigned char SendNum;
bit send_flag;
bit SomeKeyEnableFlag,SomeKeyKeepFlag;
unsigned char SomeKeyKeepTime;
bit ReadKeyOnceFlag;
unsigned char DatTemp1,DatTemp2,DatTemp11,DatTemp22;
unsigned char KeyWobbleTime;
bit NewKeyFlag;
bit TwoMcodeFlag;//双键码标志
unsigned char makecode=0;
bit RstFlag;
unsigned char KeyT;
unsigned int testtime;
main()
{
unsigned char i;
//unsigned char dattemp;
Project_Int();
for(i=0;i<16;i++)
MS[i]=0;
p=MS;
if(RstFlag==0)
{
LED1=1;
LED2=1;
LED3=1;
LED4=1;
RstFlag=1;
}
for(;;)
{
/* if(testtime==0) //for debug
{
LED4=!LED4;
testtime=1500;
}*/
WDT();
//===============键盘处理
//==========通码保存
if(ReadKeyOnceFlag)
{
KeyT=K_D_T;//俩次按键间隔
switch(DatTemp1)
{
case 0x3e://P1.0=0
if(!SomeKeyEnableFlag)
{
SomeKeyEnableFlag=1;
switch(DatTemp2)
{
case 0xfe://1
if(pointer<BUFFNUM)
{
makecode=_1_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xfd://6
if(pointer<BUFFNUM)
{
makecode=_6_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xfb://au
if(pointer<BUFFNUM)
{
makecode=_a_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xf7://fu
if(pointer<BUFFNUM)
{
makecode=_f_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xef://cd----f3
if(pointer<BUFFNUM)
{
makecode=_f3_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xdf://hd-----f8
if(pointer<BUFFNUM)
{
makecode=_f8_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xbf://cr
if(pointer<BUFFNUM)
{
makecode=_cr_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0x7f://f5----p
if(pointer<BUFFNUM)
{
makecode=_p_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
}
}
else if((DatTemp2==0xfb)||(DatTemp2==0xf7))//a.f
{
SomeKeyKeepFlag=1;
}
break;
case 0x3d://P1.1=0
if(!SomeKeyEnableFlag)
{
SomeKeyEnableFlag=1;
switch(DatTemp2)
{
case 0xfe://2
if(pointer<BUFFNUM)
{
makecode=_2_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xfd://7
if(pointer<BUFFNUM)
{
makecode=_7_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xfb://bu
if(pointer<BUFFNUM)
{
makecode=_b_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xf7://gu
if(pointer<BUFFNUM)
{
makecode=_g_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xef://dd----f4
if(pointer<BUFFNUM)
{
makecode=_f4_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xdf://dt-------小数点
if(pointer<BUFFNUM)
{
makecode=_dian_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xbf://f1-----w
if(pointer<BUFFNUM)
{
makecode=_w_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0x7f://f6-----l
if(pointer<BUFFNUM)
{
makecode=_l_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
}
}
else if((DatTemp2==0xfb)||(DatTemp2==0xf7))//b.g
{
SomeKeyKeepFlag=1;
}
break;
case 0x3b://P1.2=0
if(!SomeKeyEnableFlag)
{
SomeKeyEnableFlag=1;
switch(DatTemp2)
{
case 0xfe://3
if(pointer<BUFFNUM)
{
makecode=_3_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xfd://8
if(pointer<BUFFNUM)
{
makecode=_8_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xfb://cu
if(pointer<BUFFNUM)
{
makecode=_c_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xf7://hu
if(pointer<BUFFNUM)
{
makecode=_h_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xef://ed----f5
if(pointer<BUFFNUM)
{
makecode=_f5_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xdf://sel----space
if(pointer<BUFFNUM)
{
makecode=_spc_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0xbf://f2-------s
if(pointer<BUFFNUM)
{
makecode=_s_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
case 0x7f://f7--------+
if(pointer<BUFFNUM)
{
makecode=_jia_PS2;
MS[pointer]=makecode;
pointer++;
TwoMcodeFlag=0;
}
break;
}
}
else if((DatTemp2==0xfb)||(DatTemp2==0xf7))//c.h
{
SomeKeyKeepFlag=1;
}
break;
case 0x37://P1.3=0
if(!SomeKeyEnableFlag)
{
SomeKeyEnableFlag=1;
switch(DatTemp2)
{
case 0xfe://4
if(pointer<BUFFNUM)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -