📄 1797 04main_t
字号:
#include <head.c>
#include<order.h>
bit scan_on,last_f;
unsigned char data last_key;
extern unsigned char data delay_count,send_delay,count;
unsigned char bdata clu;
sbit clu0=clu^0;
//按键位置定义,18行8列
unsigned char code kb_mark[18][8]={
_NULL,_NULL,_NULL,_LGUI,_NULL,_NULL,_NULL,_NULL,
_NULL,_NULL,_NULL,_NULL,_RGUI,_NULL,_NULL,_NULL,
_LCTRL,_F5,_PAUSE,_NULL,_NULL,_NULL,_NULL,_RCTRL,
_WAVE,_1,_Q,_TAB,_A,_ESC,_NULL,_Z,
_F1,_2,_W,_CAPS,_S,_NULL,_NULL,_X,
_F2,_3,_E,_F3,_D,_F4,_NULL,_C,
_5,_4,_R,_T,_F,_G,_B,_V,
_6,_7,_U,_Y,_J,_H,_N,_M,
_C_ADD,_8,_I,_R_BRACE,_K,_F6,_NULL,_C_CAMMA,
_F8,_9,_O,_F7,_L,_NULL,_APPS,_C_PERIOD,
_C_SUB,_0,_P,_L_BRACE,_C_SEMICOLON,_C_QUOTATION,_C_QUESTION,_NULL,
_NULL,_PRINTSCRN,_SCROLL,_NULL,_NULL,_LALT,_RALT,_NULL,
_F9,_F10,_NULL,_BKSPACE,_C_OBLIQUE_LINE,_F11,_F12,_ENTER,
_DELETE,_NULL,_KP7,_KP4,_KP1,_SPACE,_DOWN,_NUM,
_INSE,_NULL,_KP8,_KP5,_KP2,_KP0,_RIGHT,_KP_D,
_PGUP,_PGDN,_KP9,_KP6,_KP3,_KP_DEL,_KP_S,_KP_M,
_HOME,_END,_KP_A,_NULL,_KPENTER,_UP,_LEFT,_NULL,
_NULL,_NULL,_NULL,_LSHIFT,_RSHIFT,_NULL,_NULL,_NULL
};
unsigned char scankb(unsigned char row)
{
unsigned char i,j;
i=row/8;
switch(i)
{
case 0:
j=1;
j=j<<row;
P1=0xff;
P0=~j;
P2=0xff;
Row16=1;
Row17=1;
break;
case 1:
j=0x80;
j=j>>(row-8);
P1=0xff;
P0=0xff;
P2=~j;
Row16=1;
Row17=1;
break;
case 2:
P0=P2=P1=0xff;
if(row==16) {Row16=0;Row17=1;}
else {Row16=1;Row17=0;}
}
return P1;
}
void scan(void)
{
unsigned char data dire,kb_code;
unsigned char data i=0,j=0;
bit l_bit;
for(i=0;i<18;i++)
{
set_timer1();
clu=scankb(i);
if(clu==0xff)continue;
while(delay_count<XIAODOU_DELAY)
if(command_s())
return ;//receive_process();
clu=scankb(i);
if(clu==0xff)continue;
for(j=0;j<8;j++)
{
l_bit=clu0;
clu=clu>>1;
if(l_bit==1) continue;
kb_code=kb_mark[i][j];
if(kb_code==_NULL)
continue;
dire=exist(kb_code);
if(dire==255) //第一次按下
{
last_key=kb_code;
last_f=1;
send_delay=0;
insert(kb_code,1);
}
else set_flag(dire);
}
}
}
bit secret_f;
extern unsigned char data S_No;
void main()
{
//定时01初始化
IP=0;
IE=0;
EA=1;
if(bat())
send(0xfd);
else send(0xaa);
set_default();
ini_timer01();
scan_on=1;
secret_f=0;
S_No=0;
while(1)
{
if(command_s())
receive_process();
if(scan_on)
scan();
send_buf();
if(secret_f)
{
if(count==100)
{
if(S_No)
set_led(S_No);
else set_led(2);
}
else if(count==200)
{
if(S_No)
set_led(0);
else
set_led(5);
count=0;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -