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

📄 key.lst

📁 初学者首选各种实验原代码
💻 LST
字号:
C51 COMPILER V7.02a   KEY                                                                  05/04/2004 08:16:37 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          #include "REG52.H"
  12          #define key1 1    
  13          #define key2 2    
  14          #define key3 3    
  15          #define key4 4    
  16           
  17          
  18          /*-------------------------------------------------------------
  19          sbit分别定义CPU 管脚对应的硬件连接
  20          -------------------------------------------------------------*/
  21          sfr  KeyPort    = 0x90;
  22          sbit  col1              = 0x96;
  23          sbit  col2              = 0x97;
  24          sbit  KD0               = 0x94;
  25          sbit  KD1       = 0x95;
  26          sbit led4               = 0x93;
  27          
  28          /*------------------------------------------------
  29          功能:对应0--F显示码.
  30          -------------------------------------------------*/
  31          unsigned char code Led_Show[]={0x50,0xf5,0x68,0x4a,0x47,0xc2,0xc0,0x5b,0x40,0x42,0x41,0xc4,0xf0,0x4c,0xe0,
             -0xe1,0xff};
  32          
  33          
  34          /*-------------------------------------------------
  35          功能:1MS延时子程序
  36          -------------------------------------------------*/
  37          void Delay_xMs(unsigned int x)
  38          {
  39   1          unsigned int i,j;
  40   1          for( i =0;i < x;i++ )
  41   1          {
  42   2              for( j =0;j<500;j++ );
  43   2          }
  44   1      }
  45          
  46          void LED_SHOW2(unsigned char dat)
  47          {
  48   1              led4=0;
  49   1              P0=Led_Show[dat];
  50   1      }
  51          
  52          /*-------------------------------------------------
  53          功能:判别有无按键,并返回按下的是哪个键
  54          -------------------------------------------------*/
C51 COMPILER V7.02a   KEY                                                                  05/04/2004 08:16:37 PAGE 2   

  55          bit ReadKeyVal(unsigned char *key)
  56          {
  57   1            unsigned char i,temp[2],temp2;
  58   1             KeyPort = 0xFF;
  59   1                 col1 = 0;                                            //扫描线置低
  60   1             col2 = 0;                                                //扫描线置低
  61   1             temp[0]= 0xFF;
  62   1             temp2 = KeyPort ;                                        //读键盘端口
  63   1             if( (temp2 & 0x30) == 0x30 )                             //等于FF表示没键按下
  64   1             {
  65   2                 return(0);                                   //无按键返回0
  66   2             }
  67   1                                              
  68   1             for( i = 0;i < 2;i++ )
  69   1             {
  70   2                 col1 = 0;
  71   2                 col2 = 1;
  72   2                 if ( !KD0 )
  73   2                     temp[i] = key1;
  74   2                 else if ( !KD1 )
  75   2                     temp[i] = key2;
  76   2                 col1 = 1;
  77   2                 col2 = 0;
  78   2                 if ( !KD0 )
  79   2                     temp[i] = key3;
  80   2                 else if ( !KD1 )
  81   2                     temp[i] = key4;
  82   2                 Delay_xMs(10);
  83   2             }
  84   1             if ( temp[0] != 0xFF && temp[0] == temp[1] )
  85   1             {
  86   2                      *key = temp[0];
  87   2                      return(0);
  88   2             }
  89   1             return(1);
  90   1      }
  91          
  92          /*-------------------------------------------------
  93          主程序
  94          功能:实现16只按键的识别,并在数码管上显示
  95            对应的按下的那只键 
  96          -------------------------------------------------*/
  97          void main()
  98          {
  99   1            unsigned char key;
 100   1            LED_SHOW2(16);                                            //关闭显示
 101   1            while(1)
 102   1            {
 103   2                 if ( !ReadKeyVal(&key))              //识别有无按键
 104   2                 {
 105   3                      LED_SHOW2(key);                         //显示按下的键
 106   3                 }
 107   2            }
 108   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    176    ----
   CONSTANT SIZE    =     17    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       6
C51 COMPILER V7.02a   KEY                                                                  05/04/2004 08:16:37 PAGE 3   

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