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

📄 ps2kbd.lst

📁 USB_D12开发评估板实现USB键盘的全部源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 179   3                              case 0x59 :// Right SHIFT
 180   3                                      shift = 1;
 181   3                                      break;
 182   3                              
 183   3                              default:
 184   3                                      if(!shift)// If shift not pressed,
 185   3                                      { // do a table look-up
 186   4              //                              ComShowString(COM_1,"Chang Code to ASCII.");
 187   4                                              for(i = 0; (UnShifted[i][0] != sc) && UnShifted[i][0]; i++);
 188   4                                              if (UnShifted[i][0] == sc) 
 189   4                                              {
 190   5                              //                      ComShowString(COM_1,"Find Success.AsccII Code and usaged code is:");    
 191   5                              //                      ComSendText(COM_1,&UnShifted[i][1],1);
 192   5                              //                      ComSendText(COM_1,&UnShifted[i][2],1);
 193   5      
 194   5                                                      uiKeyCombCode = UnShifted[i][1]+ UnShifted[i][2]*0x100;
 195   5                                                      put_kbbuff(uiKeyCombCode);
 196   5              
 197   5                      
 198   5                                              }
 199   4                                      } 
 200   3                                      else 
 201   3                                      {// If shift pressed
 202   4              //                              ComShowString(COM_1,"Chang Code to ASCII+Shift.");
 203   4              
 204   4                                              for(i = 0; (Shifted[i][0] != sc) && Shifted[i][0]; i++);
 205   4                                              if (Shifted[i][0] == sc)
 206   4                                              {
 207   5                              //                      ComShowString(COM_1,"Find Success +Shift.AsccII Code and usaged code is:");     
 208   5                              //                      ComSendText(COM_1,&UnShifted[i][1],1);
 209   5                              //                      ComSendText(COM_1,&UnShifted[i][2],1);
 210   5      
 211   5                                                      uiKeyCombCode = UnShifted[i][1]+ UnShifted[i][2]*0x100;
 212   5                                                      put_kbbuff(uiKeyCombCode);
 213   5                      //                              ComShowString(COM_1,"Find Success.+Shift");
 214   5                      
 215   5                                              }
 216   4                                      }
 217   3                                      break;
 218   3                      }
 219   2              }
 220   1              else 
 221   1              {
 222   2                      is_up = 0;// Two 0xF0 in a row not allowed
 223   2                      switch (sc)
 224   2                      {
 225   3                              case 0x12 :// Left SHIFT
 226   3                                      shift = 0;
 227   3                                      break;
 228   3                              case 0x59 :// Right SHIFT
 229   3                                      shift = 0;
 230   3                                      break;
 231   3                              default:
 232   3                                      break;
 233   3                      }
 234   2              }
 235   1      }
 236          
 237          /**************************************************
 238          功能介绍:初始化键盘操作,清空键盘缓冲区
 239          入口参数: 无
 240          返回:    初始化是否成功。true 表示成功
C51 COMPILER V7.50   PS2KBD                                                                04/16/2007 15:23:02 PAGE 5   

 241          备注:     
 242          ***************************************************/
 243          bool InitKbd(void)
 244          {
 245   1      //      uchar ucPS2ReturnData;
 246   1      
 247   1              inpt = kb_buffer;// Initialize buffer
 248   1              outpt = kb_buffer;
 249   1              buffcnt = 0;
 250   1              return true;
 251   1      
 252   1      /*
 253   1              PS2_SendChar(0xEE);
 254   1              if(PS2_GetChar(&ucPS2ReturnData))
 255   1              {
 256   1                      ComShowString(COM_1,"Get KBD Echo Code is:");
 257   1                      ComSendText(COM_1,&ucPS2ReturnData,1);
 258   1                      return true;
 259   1              }
 260   1              else
 261   1              {
 262   1                      return false;
 263   1              }
 264   1      */
 265   1      }
 266          
 267          /**************************************************
 268          功能介绍:检查在PS2键盘上是否有按键发生
 269          入口参数: 无
 270          返回:   是否有键按下。true 表示有键按下等待读取。
 271          备注:     
 272          ***************************************************/
 273          bool PS2KbHit(void)
 274          {
 275   1              if(buffcnt > 0)
 276   1              {
 277   2                      return true;
 278   2              }
 279   1              else
 280   1              {
 281   2                      return false;
 282   2              }
 283   1      }
 284          
 285          /**************************************************
 286          功能介绍:获取PS2键盘的键值
 287          入口参数: 无
 288          返回:   键盘按键的二次编码值。
 289          备注:     返回为ASCII码+功能码
 290          ***************************************************/
 291          uint PS2GetChar(void)
 292          {
 293   1              uint uiKeyValue;
 294   1      
 295   1      //      while(buffcnt == 0);// Wait for data
 296   1              uiKeyValue = *outpt;// Get byte
 297   1              outpt++; // Increment pointer
 298   1              if (outpt >= kb_buffer + BUFF_SIZE)// Pointer wrapping
 299   1                      outpt = kb_buffer;
 300   1              buffcnt--; // Decrement buffer count
 301   1      
 302   1              return uiKeyValue;
C51 COMPILER V7.50   PS2KBD                                                                04/16/2007 15:23:02 PAGE 6   

 303   1      }
 304          
 305          /**************************************************
 306          功能介绍:扫描键盘
 307          入口参数: 无
 308          返回:   是否有键按下。True表示扫描到按键
 309          备注:    由主调函数循环调用
 310          ***************************************************/
 311          bool PS2KeyboardScan(void)
 312          {
 313   1              uchar ucPS2ReturnData;
 314   1      
 315   1              if(PS2_GetChar(&ucPS2ReturnData))
 316   1              {
 317   2                      Decode(ucPS2ReturnData);
 318   2              }
 319   1              if(PS2KbHit())
 320   1              {
 321   2                      return true;
 322   2              }
 323   1              else
 324   1              {
 325   2                      return false;
 326   2              }
 327   1      }
 328          
 329          /**************************************************
 330          功能介绍:设置键盘指示灯
 331          入口参数: 状态灯编码
 332          返回:   设置是否成功。
 333          备注:   
 334          ***************************************************/
 335          bool PS2KeyboardSetStatusLed(uchar ucLedValue)
 336          {
 337   1              uchar ucPS2ReturnData;
 338   1      
 339   1              PS2_SendChar(0xED);
 340   1              PS2_SendChar(ucLedValue & 0x07);
 341   1      
 342   1              if(PS2_GetChar(&ucPS2ReturnData))
 343   1              {
 344   2              //      ComShowString(COM_1,"Set Led Cmd Return Code is:");
 345   2              //      ComSendText(COM_1,&ucPS2ReturnData,1);
 346   2                      return true;
 347   2              }
 348   1              else
 349   1              {
 350   2                      return false;
 351   2              }
 352   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    811    ----
   CONSTANT SIZE    =    312    ----
   XDATA SIZE       =    137      11
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -