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

📄 key.lst

📁 键盘处理
💻 LST
字号:
C51 COMPILER V7.02a   KEY                                                                  03/24/2004 21:27:28 PAGE 1   


C51 COMPILER V7.02a, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN KEY.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE KEY.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /***************************************************************
   2          功能:实现16只按键的识别,并在数码管上显示对应的按下的那只键                             
   3          作者:SG                                                         
   4          时间:2004-03-15                                                 
   5          版本:V1.0                                                       
   6          ***************************************************************/
   7          
   8          /*-------------------------------------------------------------
   9          #define 分别定义按键key1 --- key16对应的数值
  10          -------------------------------------------------------------*/
  11          #define key1 1    
  12          #define key2 2    
  13          #define key3 3    
  14          #define key4 4    
  15          #define key5 5    
  16          #define key6 6    
  17          #define key7 7    
  18          #define key8 8    
  19          #define key9 9    
  20          #define key10 0   
  21          #define key11 0x0a
  22          #define key12 0x0b
  23          #define key13 0x0c
  24          #define key14 0x0d
  25          #define key15 0x0e
  26          #define key16 0x0f
  27          
  28          /*-------------------------------------------------------------
  29          sbit分别定义CPU 管脚对应的硬件连接
  30          -------------------------------------------------------------*/
  31          sfr  KeyPort    = 0x80;
  32          sbit  _ReadKey  = 0xa5;
  33          sbit  row1              = 0xa6;
  34          sbit  row2              = 0xa7;
  35          sbit KD0 = 0x80;
  36          sbit KD1 = 0x81;
  37          sbit KD2 = 0x82;
  38          sbit KD3 = 0x83;
  39          sbit KD4 = 0x84;
  40          sbit KD5 = 0x85;
  41          sbit KD6 = 0x86;
  42          sbit KD7 = 0x87;
  43          
  44          void Delay_xMs(unsigned int x);
  45          void Hc164(unsigned char  temp );
  46          
  47          /*-------------------------------------------------
  48          功能:判别有无按键,并返回按下的是哪个键
  49          -------------------------------------------------*/
  50          bit ReadKeyVal(unsigned char *key)
  51          {
  52   1             unsigned char i,temp[2];
  53   1             _ReadKey = 0;
  54   1             KeyPort = 0xFF;
  55   1             row1 = 0;
C51 COMPILER V7.02a   KEY                                                                  03/24/2004 21:27:28 PAGE 2   

  56   1             row2 = 0;
  57   1             temp[0] = KeyPort ;
  58   1             if( temp[0] == 0xFF )
  59   1             {
  60   2                 _ReadKey = 1;
  61   2                 return(1);
  62   2             }
  63   1             temp[0] = 0xFF;
  64   1             temp[1] = 0xFF;
  65   1             for( i = 0;i < 2;i++ )
  66   1             {
  67   2                 row1 = 0;
  68   2                 row2 = 1;
  69   2                 if ( !KD0 )
  70   2                     temp[i] = key1;
  71   2                 else if ( !KD1 )
  72   2                     temp[i] = key3;
  73   2                 else if ( !KD2 )
  74   2                     temp[i] = key5;
  75   2                 else if ( !KD3 )
  76   2                     temp[i] = key7;
  77   2                  else if ( !KD4 )
  78   2                     temp[i] = key9;
  79   2                 else if ( !KD5 )
  80   2                     temp[i] = key11;
  81   2                 else if ( !KD6 )
  82   2                     temp[i] = key13;
  83   2                 else if ( !KD7 )
  84   2                     temp[i] = key15;
  85   2                 row1 = 1;
  86   2                 row2 = 0;
  87   2                 if ( !KD0 )
  88   2                     temp[i] = key2;
  89   2                 else if ( !KD1 )
  90   2                     temp[i] = key4;
  91   2                 else if ( !KD2 )
  92   2                     temp[i] = key6;
  93   2                 else if ( !KD3 )
  94   2                     temp[i] = key8;
  95   2                  else if ( !KD4 )
  96   2                     temp[i] = key10;
  97   2                 else if ( !KD5 )
  98   2                     temp[i] = key12;
  99   2                 else if ( !KD6 )
 100   2                     temp[i] = key14;
 101   2                 else if ( !KD7 )
 102   2                     temp[i] = key16;
 103   2                 Delay_xMs(10);
 104   2             }
 105   1             if ( temp[0] != 0xFF && temp[0] == temp[1] )
 106   1             {
 107   2                      *key = temp[0];
 108   2                      _ReadKey = 1;
 109   2                      return(0);
 110   2             }
 111   1             _ReadKey = 1;
 112   1             return(1);
 113   1      }
 114          
 115          /*-------------------------------------------------
 116          主程序
 117          功能:实现16只按键的识别,并在数码管上显示
C51 COMPILER V7.02a   KEY                                                                  03/24/2004 21:27:28 PAGE 3   

 118            对应的按下的那只键 
 119          -------------------------------------------------*/
 120          void main()
 121          {
 122   1            unsigned char key;
 123   1            Hc164(16);                                                //关闭显示
 124   1            while(1)
 125   1            {
 126   2                 if ( !ReadKeyVal(&key))              //识别有无按键
 127   2                 {
 128   3                      Hc164(key);                             //显示按下的键
 129   3                 }
 130   2            }
 131   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    300    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       7
   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 + -