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

📄 scankey.lst

📁 PS/2接口转矩阵键盘,51单片机编程实现
💻 LST
字号:
C51 COMPILER V7.50   SCANKEY                                                               04/07/2006 12:47:44 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE SCANKEY
OBJECT MODULE PLACED IN ScanKey.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE ScanKey.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "includekey.h"
   2          
   3          /*
   4          row val
   5          */
   6          sbit row0=P0^0;
   7          sbit row1=P0^1;
   8          sbit row2=P0^2;
   9          sbit row3=P0^3;
  10          sbit row4=P0^4;
  11          sbit row5=P0^4;
  12          sbit row6=P0^5;
  13          sbit row7=P0^6;
  14          
  15          /*
  16          col val
  17          */
  18          sbit col0=P2^7;
  19          sbit col1=P2^6;
  20          sbit col2=P2^5;
  21          sbit col3=P2^4;
  22          sbit col4=P2^3;
  23          sbit col5=P2^2;
  24          sbit col6=P2^1;
  25          sbit col7=P2^0;
  26          
  27          sbit col9=P1^4;
  28          sbit col10=P1^3;
  29          sbit col11=P1^2;
  30          sbit col12=P1^1;
  31          
  32          
  33          sfr rowline = 0x80;
  34          sfr port1 = 0x90;
  35          sfr colline = 0xA0;
  36          sfr port3 = 0xB0;
  37          
  38          #define BIT0 0x01
  39          #define BIT1 0x02
  40          #define BIT2 0x04
  41          #define BIT3 0x08
  42          #define BIT4 0x10
  43          #define BIT5 0x20
  44          #define BIT6 0x40
  45          #define BIT7 0x80
  46          
  47          unsigned char code UnShifted[59][2] = {
  48                  0x1C, 'a',
  49                  0x32, 'b',
  50                  0x21, 'c',
  51                  0x23, 'd',
  52                  0x24, 'e',
  53                  0x2B, 'f',
  54                  0x34, 'g',
  55                  0x33, 'h',
C51 COMPILER V7.50   SCANKEY                                                               04/07/2006 12:47:44 PAGE 2   

  56                  0x43, 'i',
  57                  0x3B, 'j',
  58                  0x42, 'k',
  59                  0x4B, 'l',
  60                  0x3A, 'm',
  61                  0x31, 'n',
  62                  0x44, 'o',
  63                  0x4D, 'p',
  64                  0x15, 'q',
  65                  0x2D, 'r',
  66                  0x1B, 's',
  67                  0x2C, 't',
  68                  0x3C, 'u',
  69                  0x2A, 'v',
  70                  0x1D, 'w',
  71                  0x22, 'x',
  72                  0x35, 'y',
  73                  0x1A, 'z',
  74                  0x45, '0',
  75                  0x16, '1',
  76                  0x1E, '2',
  77                  0x26, '3',
  78                  0x25, '4',
  79                  0x2E, '5',
  80                  0x36, '6',
  81                  0x3D, '7',
  82                  0x3E, '8',
  83                  0x46, '9',
  84                  0x0E, '`',
  85                  0x4E, '-',
  86                  0x55, '=',
  87                  0x5D, '\\',
  88                  0x29, ' ',
  89                  0x54, '[',
  90                  0x5B, ']',
  91                  0x4C, ';',
  92                  0x52, '\'',
  93                  0x41, ',',
  94                  0x49, '.',
  95                  0x4A, '/',
  96                  0x71, '.',
  97                  0x70, '0',
  98                  0x69, '1',
  99                  0x72, '2',
 100                  0x7A, '3',
 101                  0x6B, '4',
 102                  0x73, '5',
 103                  0x74, '6',
 104                  0x6C, '7',
 105                  0x75, '8',
 106                  0x7D, '9',
 107          };
 108          /*
 109          key vakue
 110          */
 111          unsigned char code wh_keyvalue[5][8]={0x1c,0x32,0x21,0x23,0x24,0x2b,0x34,0x33,\
 112          0x43,0x3b,0x42,0x4b,0x3a,0x31,0x44,0x4d,\
 113          0x15,0x2d,0x1b,0x2c,0x3c,0x2a,0x1d,0x22,\
 114          0x35,0x1a,0x45,0x16,0x1e,0x26,0x25,0x5a,\
 115          0x2e,0x36,0x3d,0x5a,0x46,0x29,0x66,0x5a};
 116          
 117          
C51 COMPILER V7.50   SCANKEY                                                               04/07/2006 12:47:44 PAGE 3   

 118          //////////////////////////////////////////////////////
 119          /*
 120          get key value
 121          row out
 122          col in
 123          */
 124          unsigned char getkey(void)
 125          {
 126   1              unsigned char keyvalue=0,temp=0,row=0,col=0,count=0,i;
 127   1              rowline = 0xFF;
 128   1              colline = 0x00;
 129   1              while(rowline == 0xff)
 130   1              {
 131   2                      //wait for key down;
 132   2              }
 133   1              dmsec(50);
 134   1              if (rowline != 0xff)    // if a key is still down 
 135   1              {
 136   2                      //row check
 137   2                      rowline = 0xff;
 138   2                      for(i=0; i < 8; i++)
 139   2                      {
 140   3                              temp = rowline & (BIT0 << i);
 141   3                              if (temp == 0) 
 142   3                              {
 143   4                                      row = i;
 144   4                                      break;
 145   4                              }
 146   3                      }
 147   2                      //col check
 148   2                      rowline = 0xff;
 149   2                      for(i=0; i < 8; i++)
 150   2                      {
 151   3                              colline = ~(BIT0 << i);
 152   3                              if (rowline != 0xff)
 153   3                              {
 154   4                                      col = 7 - i;
 155   4                                      break;
 156   4                              }
 157   3                      }
 158   2      
 159   2                      keyvalue = wh_keyvalue[row][col];
 160   2              }
 161   1              else
 162   1              {
 163   2                      keyvalue = NOKEY;
 164   2              }
 165   1      //      while(rowline != 0xff)
 166   1      //      {
 167   1      //              //wait for key up;
 168   1      //      }
 169   1              return keyvalue;
 170   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    137    ----
   CONSTANT SIZE    =    158    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       5
   IDATA SIZE       =   ----    ----
C51 COMPILER V7.50   SCANKEY                                                               04/07/2006 12:47:44 PAGE 4   

   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 + -