⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ps2_keyboard.h

📁 AVR控制OCM12864-4液晶显示
💻 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 + -