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

📄 ps2keybroad.lst

📁 基于51的LCD+PS2程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   PS2KEYBROAD                                                           06/24/2007 16:02:37 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE PS2KEYBROAD
OBJECT MODULE PLACED IN PS2Keybroad.OBJ
COMPILER INVOKED BY: D:\程序\keil\C51\BIN\C51.EXE PS2Keybroad.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include"PS2.H"
   2          
   3          sbit Key_Data = P0^0;//定义Keyboard数据端口引脚
   4          sbit Key_CLK  = P3^2;   //中断端口,时钟线
   5          
   6          
   7          static unsigned char KeyV=0X00; //键值
   8          static unsigned char BF = 0; //标识是否有字符被收到
   9          static unsigned char IntNum = 0; //中断次数计数
  10          
  11          unsigned char PS2count=0;
  12          bit dx=0;          //大小写标志 dx==1时大写状态
  13          bit KeyInFlag=0;
  14          unsigned char X,Y;
  15          
  16          void Decode( void );
  17          /*********************************************************** 
  18          函数名称: 
  19          函数功能: 
  20          入口参数: 
  21          出口参数: 
  22          备 注: 
  23          ***********************************************************/
  24          void Keyboard_out() interrupt 0//键盘中断处理 键值存储在 KeyV 中
  25          {       
  26   1              
  27   1                      
  28   1                      if ((IntNum>0) && (IntNum <9))
  29   1                      {                       
  30   2                              KeyV = KeyV >> 1;                 //因键盘数据是低>>高,结合上一句所以右移一位
  31   2                              if (Key_Data==1)                  //当键盘数据线为1时   
  32   2                                      {KeyV = KeyV | 0x80;} //存储一位
  33   2                      }
  34   1                      IntNum++;                                 //中断次数加一(中断一次接收一位数据)
  35   1      
  36   1                      if (IntNum>33)                    //中断33次后数据发送完毕,舍弃了通码和断码
  37   1                      {   
  38   2                              IntNum = 0; 
  39   2                              BF = 1;                                   //标识有字符输入完了
  40   2                              EA = 0; 
  41   2                      }
  42   1      
  43   1      }
  44          /*********************************************************** 
  45          函数名称: 
  46          函数功能: 
  47          入口参数: 
  48          出口参数: 
  49          备 注: 
  50          ***********************************************************/
  51          void Decode( void ) //键值处理
  52          {
  53   1              unsigned char KeyBoradInData = 200;
  54   1              unsigned char CharNumber;
  55   1              unsigned char CharBuffer[64];
C51 COMPILER V7.50   PS2KEYBROAD                                                           06/24/2007 16:02:37 PAGE 2   

  56   1      
  57   1              unsigned char TempCyc;
  58   1      //  unsigned char k;
  59   1              
  60   1          if(BF==1)   //接收完一个有效数据时  
  61   1              {       
  62   2                      TempCyc = KeyV;
  63   2                      BF = 0;  //准备下一次接收
  64   2                      if(dx)
  65   2                      {
  66   3                              switch ( TempCyc ) //键值与显示字符的对应关系
  67   3                              {   
  68   4                              case 0x8a: KeyBoradInData = '0'; break; //0
  69   4                              case 0x15: KeyBoradInData = '0'; break; //0
  70   4                              case 0x59: KeyBoradInData = '1'; break; //1
  71   4                              case 0x2c: KeyBoradInData = '1'; break; //1
  72   4                              case 0x3c: KeyBoradInData = '2'; break; //2
  73   4                              case 0x4c: KeyBoradInData = '3'; break; //3
  74   4                              case 0x99: KeyBoradInData = '3'; break; //3
  75   4                              case 0x4a: KeyBoradInData = '4'; break; //4
  76   4                              case 0x95: KeyBoradInData = '4'; break; //4
  77   4                              case 0xb9: KeyBoradInData = '5'; break; //5
  78   4                              case 0x5c: KeyBoradInData = '5'; break; //5
  79   4                              case 0x6c: KeyBoradInData = '6'; break; //6
  80   4                              case 0xd9: KeyBoradInData = '6'; break; //6
  81   4                              case 0x7a: KeyBoradInData = '7'; break; //7
  82   4                              case 0xf5: KeyBoradInData = '7'; break; //7
  83   4                              case 0x7c: KeyBoradInData = '8'; break; //8
  84   4                              case 0xf9: KeyBoradInData = '8'; break; //8
  85   4                              case 0x8c: KeyBoradInData = '9'; break; //9
  86   4                              case 0x19: KeyBoradInData = '9'; break; //9
  87   4                              case 0x38: KeyBoradInData = 'A'; break; //a
  88   4                              case 0x71: KeyBoradInData = 'A'; break; //a
  89   4                              case 0x64: KeyBoradInData = 'B'; break; //b
  90   4                              case 0xc9: KeyBoradInData = 'B'; break; //b
  91   4                              case 0x43: KeyBoradInData = 'C'; break; //c
  92   4                              case 0x85: KeyBoradInData = 'C'; break; //c
  93   4                              case 0x47: KeyBoradInData = 'D'; break; //d
  94   4                              case 0x8d: KeyBoradInData = 'D'; break; //d
  95   4                              case 0x48: KeyBoradInData = 'E'; break; //e
  96   4                              case 0x91: KeyBoradInData = 'E'; break; //e
  97   4                              case 0x57: KeyBoradInData = 'F'; break; //f
  98   4                              case 0xad: KeyBoradInData = 'F'; break; //f
  99   4                              case 0x68: KeyBoradInData = 'G'; break; //g
 100   4                              case 0xd1: KeyBoradInData = 'G'; break; //g
 101   4                              case 0x67: KeyBoradInData = 'H'; break; //h
 102   4                              case 0xcd: KeyBoradInData = 'H'; break; //h
 103   4                              case 0x87: KeyBoradInData = 'I'; break; //i
 104   4                              case 0x0d: KeyBoradInData = 'I'; break; //i
 105   4                              case 0x77: KeyBoradInData = 'J'; break; //j
 106   4                              case 0xed: KeyBoradInData = 'J'; break; //j
 107   4                              case 0x84: KeyBoradInData = 'K'; break; //k
 108   4                              case 0x09: KeyBoradInData = 'K'; break; //k
 109   4                              case 0x97: KeyBoradInData = 'L'; break; //l
 110   4                              case 0x2d: KeyBoradInData = 'L'; break; //l
 111   4                              case 0x74: KeyBoradInData = 'M'; break; //m
 112   4                              case 0xe9: KeyBoradInData = 'M'; break; //m
 113   4                              case 0x63: KeyBoradInData = 'N'; break; //n
 114   4                              case 0xc5: KeyBoradInData = 'N'; break; //n
 115   4                              case 0x88: KeyBoradInData = 'O'; break; //o
 116   4                              case 0x11: KeyBoradInData = 'O'; break; //o
 117   4                              case 0x9b: KeyBoradInData = 'P'; break; //p
C51 COMPILER V7.50   PS2KEYBROAD                                                           06/24/2007 16:02:37 PAGE 3   

 118   4                              case 0x35: KeyBoradInData = 'P'; break; //p 
 119   4                              case 0x2b: KeyBoradInData = 'Q'; break; //q
 120   4                              case 0x55: KeyBoradInData = 'Q'; break; //q
 121   4                              case 0x5b: KeyBoradInData = 'R'; break; //r
 122   4                              case 0xb5: KeyBoradInData = 'R'; break; //r
 123   4                              case 0x36: KeyBoradInData = 'S'; break; //s
 124   4                              case 0x58: KeyBoradInData = 'T'; break; //t
 125   4                              case 0xb1: KeyBoradInData = 'T'; break; //t
 126   4                              case 0x78: KeyBoradInData = 'U'; break; //u
 127   4                              case 0xf1: KeyBoradInData = 'U'; break; //u
 128   4                              case 0x54: KeyBoradInData = 'V'; break; //v
 129   4                              case 0xa9: KeyBoradInData = 'V'; break; //v

⌨️ 快捷键说明

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