scankey.lst

来自「C8051ucos源码」· LST 代码 · 共 107 行

LST
107
字号
C51 COMPILER V8.02   SCANKEY                                                               01/09/2009 16:21:00 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE SCANKEY
OBJECT MODULE PLACED IN ScanKey.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE program\ScanKey.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\ScanKey.lst) OBJE
                    -CT(ScanKey.obj)

line level    source

   1          
   2          #include "C8051F020.h" 
   3          #include "CM240128.H"
   4          
   5          
   6          idata unsigned char Shift;//0英文/1数值 切换 
   7          
   8          code unsigned char KEYVAL[4][2][10]=
   9                  {
  10                          {
  11                                  "\x04., \x05\x06\x07\x08\x02\x03",
  12                                  "\x04:, \x05\x06\x07\x08\x02\x03",
  13                          },
  14                          {
  15                                  ",MNBVCXZ\n\x01",
  16                                  ":0987)(`\n\x01",
  17                          },
  18                          {
  19                                  "KJHGFDSA\xfL",
  20                                  "!#654+@\"\xf\0",
  21                          },
  22                          {
  23                                  "IUYTREWQPO",
  24                                  "/*321-&|?=",
  25                          },
  26                  };
  27          
  28          unsigned char ScanKey(void)
  29          {
  30   1      idata unsigned int val[4];
  31   1      static  idata  unsigned int oldval[4];
  32   1      static  idata unsigned char sw;
  33   1      unsigned char scanLoc;
  34   1      unsigned char i,j;
  35   1              P74OUT=0x00;
  36   1              scanLoc=0x01;
  37   1              for(i=0;i<4;i++)
  38   1              {
  39   2                      P6=0xff;P5=0xff;
  40   2                      P5&=(~scanLoc);
  41   2                      scanLoc<<=1;
  42   2                      val[i] = ((P5<<2)&0x0300)+P6;
  43   2                      val[i]=~val[i];
  44   2                      val[i]&=0x03ff;
  45   2                      P6=0xff;P5=0xff;
  46   2                      j=200;while(j--);
  47   2              }
  48   1              if(val[0]==0&&val[1]==0&&val[2]==0&&val[3]==0)
  49   1              {
  50   2                      oldval[0]=val[0];                       
  51   2                      oldval[1]=val[1];                       
  52   2                      oldval[2]=val[2];                       
  53   2                      oldval[3]=val[3];
  54   2                      sw=0;
C51 COMPILER V8.02   SCANKEY                                                               01/09/2009 16:21:00 PAGE 2   

  55   2                      return 0;
  56   2              }
  57   1              if(val[0]==oldval[0]&&val[1]==oldval[1]&&val[2]==oldval[2]&&val[3]==oldval[3])
  58   1              {
  59   2                      if(sw==0)
  60   2                      {
  61   3                      sw=1;
  62   3                              for(j=0;j<4;j++)
  63   3                              {
  64   4                                      for(i=0;i<10;i++)
  65   4                                      {
  66   5                                              if(val[j]&0x0001)break;
  67   5                                              val[j]>>=1;     
  68   5                                      }
  69   4                                      if(i<10)
  70   4                                              return KEYVAL[j][Shift][i];
  71   4                              }
  72   3                      }
  73   2                      return 0;
  74   2              }
  75   1              oldval[0]=val[0];                       
  76   1              oldval[1]=val[1];                       
  77   1              oldval[2]=val[2];                       
  78   1              oldval[3]=val[3];
  79   1      return 0;                               
  80   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    452    ----
   CONSTANT SIZE    =     80    ----
   XDATA SIZE       =   ----       2
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =     10       8
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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