📄 ps2_keyboard.h
字号:
//#define PS2_CLK PORTD.0
#define PS2_DATA_OUT PORTD.1
#define PS2_DATA_DDR DDRD.1
#define PS2_DATA_IN PIND.1
byte in_temp,in_word=0x30;
byte bit_state=0;
bit check_bit=1,release=0;
interrupt [EXT_INT0] void ext_int0_isr(void)
{
byte temp;
PS2_DATA_DDR=0;
switch (bit_state)
{
case 0:
if (PS2_DATA_IN==0)
{
bit_state++;
in_temp=0x00;
check_bit=1;
}
break;
case 1: case 2:case 3:case 4:case 5:case 6:case 7:case 8:
in_temp=in_temp>>1;
temp=PS2_DATA_IN;
temp=temp<<7;
in_temp=in_temp|temp;
if (PS2_DATA_IN==1)
check_bit=~check_bit;
bit_state++;
break;
case 9:
{
bit_state++;
if (PS2_DATA_IN!=check_bit)
in_temp=0x00;
}
break;
case 10:
if (PS2_DATA_IN==1)
{
if (release==1) {in_temp=0;release=0;}
else
if (in_temp==0xf0) release=1;
//in_word=in_temp;
switch (in_temp)
{
case 0 : in_word= 0x20;break;
case 22: in_word= 49;break;// { 1 }
case 30: in_word= 50;break;// { 2 }
case 38: in_word= 51;break;// { 3 }
case 37: in_word= 52;break;// { 4 }
case 46: in_word= 53;break;// { 5 }
case 54: in_word= 54;break;// { 6 }
case 61: in_word= 55;break;// { 7 }
case 62: in_word= 56;break;// { 8 }
case 70: in_word= 57;break;// { 9 }
case 69: in_word= 48;break;// { 0 }
case 28: in_word= 97;break;// { a }
case 50: in_word= 98;break;// { b }
case 33: in_word= 99;break;// { c }
case 35: in_word= 100;break;// { d }
case 36: in_word= 101;break;// { e }
case 43: in_word= 102;break;// { f }
case 52: in_word= 103;break;// { g }
case 51: in_word= 104;break;// { h }
case 67: in_word= 105;break;// { i }
case 59: in_word= 106;break;// { j }
case 66: in_word= 107;break;// { k }
case 75: in_word= 108;break;// { l }
case 58: in_word= 109;break;// { m }
case 49: in_word= 110;break;// { n }
case 68: in_word= 111;break;// { o }
case 77: in_word= 112;break;// { p }
case 21: in_word= 113;break;// { q }
case 45: in_word= 114;break;// { r }
case 27: in_word= 115;break;// { s }
case 44: in_word= 116;break;// { t }
case 60: in_word= 117;break;// { u }
case 42: in_word= 118;break;// { v }
case 29: in_word= 119;break;// { w }
case 34: in_word= 120;break;// { x }
case 53: in_word= 121;break;// { y }
case 26: in_word= 122;break;// { z }
case 84: in_word= 91;break;// { [ }
case 91: in_word= 93;break;// { ] }
case 76: in_word= 59;break;// { ; }
case 82: in_word= 39;break;// { ' }
case 65: in_word= 44;break;// {: in_word= }
case 73: in_word= 46;break;// { . }
case 74: in_word= 47;break;// { / }
case 78: in_word= 45;break;// { - }
case 85: in_word= 61;break;// { = }
case 93: in_word= 92;break;// { \ }
case 14: in_word= 96;break;// { ` }
case 90: in_word= 32;break;// { enter }
case 5: in_word= 0;break;// { f1 }
case 6: in_word= 1;break;// { f2 }
case 4: in_word= 2;break;// { f3 }
case 12: in_word= 3;break;// { f4 }
case 3: in_word= 4;break;// { f5 }
case 11: in_word= 5;break;// { f6 }
case 131: in_word= 6;break;// { f7 }
case 10: in_word= 7;break;// { f8 }
case 1: in_word= 8;break;// { f9 }
case 9: in_word= 9;break;// { f10 }
case 120: in_word= 10;break;// { f11 }
case 7: in_word= 11;break;// { f12 }
case 102: in_word= 12;break;// { back }
case 224: in_word= 13;break;// { home }
case 105: in_word= 14;break;// { end }
case 125: in_word= 15;break;// { pageup }
case 122: in_word= 16;break;// { pagedown }
case 117: in_word= 17;break;// { up }
case 114: in_word= 18;break;// { down }
case 107: in_word= 19;break;// { left }
case 116: in_word= 20;break;// { right }
case 113: in_word= 21;break;// { del }
case 112: in_word= 22;break;// { insert }
case 225: in_word= 23;break;// { pause }
case 118: in_word= 24;break;// { esc }
case 13: in_word= 25;break;// { tab }
case 88: in_word= 26;break;// { caps }
case 20: in_word= 27;break;// { ctrl }
case 17: in_word= 28;break;// { alt }
case 41: in_word= 29;break;// { space }
case 31: in_word= 30;break;// { win }
case 47: in_word= 31;break;// { winright }
}//end switch;
bit_state=0;
}
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -