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

📄 keyboard.lst

📁 单片机键盘扫描程序(在proteus6.9下)仿真通过
💻 LST
字号:
C51 COMPILER V8.02   KEYBOARD                                                              07/27/2007 22:23:38 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN keyboard.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE keyboard.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include"timer.h"
   3          #include"keyboard.h"
   4          
   5          
   6          bit FLAG0;
   7          
   8          unsigned char ptr,m;
   9          extern unsigned char dispcode[6];
  10          //----------------------------------------------------------------------------------
  11          //键盘码数组
  12           unsigned  char tab[16]=  {0x01,0x02,0x03,0x04,
  13                                     0x05,0x06,0x07,0x08,
  14                                                             0x09,0x0a,0x0b,0x0c,
  15                                                             0x0d,0x0e,0x0f,0x10
  16                                                             };
  17          
  18          
  19          /*-----------------------------------------------------------------------------------
  20          功能:键盘扫描程序 
  21          名称:Scan_Key  
  22          输入:无
  23          输出:无
  24          返回:无
  25          -------------------------------------------------------------------------------------*/
  26          void Scan_Key(void)
  27          {
  28   1              char a1,i;
  29   1      
  30   1              FLAG0=0;
  31   1      
  32   1              a1=0xf7;                //列扫描初值
  33   1      
  34   1              ptr=0;
  35   1      
  36   1              for(i=0;i<4;i++)        //键盘4个扫描列
  37   1              {
  38   2                      P1=a1;
  39   2                      Delay(10);
  40   2                      m=P1;
  41   2                      switch( m & 0xf0 )      //取行的高4位,侦测那一行被按
  42   2                      {
  43   3                              case 0x70:
  44   3                                                ptr=i*4;      //第一行被按否? 如有则是tab[i*4]键
  45   3                                                FLAG0=1;  //表示有按键
  46   3                                                break;
  47   3                              case 0xb0:
  48   3                                       ptr=i*4+1; //第二行被按否?     如有则是tab[i*4+1]键
  49   3                                               FLAG0=1;
  50   3                                               break;
  51   3                              case 0xd0:
  52   3                                       ptr=i*4+2;     //第三行被按否? 如有则是tab[i*4+2]键
  53   3                                               FLAG0=1;
  54   3                                               break;
  55   3                              case 0xe0:
C51 COMPILER V8.02   KEYBOARD                                                              07/27/2007 22:23:38 PAGE 2   

  56   3                                       ptr=i*4+3; //第四行被按否?如有则是tab[i*4+3]键
  57   3                                               FLAG0=1;
  58   3                                               break;
  59   3                              default:
  60   3                                      break;
  61   3                      }
  62   2      
  63   2                      if( FLAG0 ) 
  64   2                      {
  65   3      //----------------------------------------------------------------------------------
  66   3      ////将键盘编码转换成显示编码
  67   3                        dispcode[0]=tab[ptr] % 10;    //个数 
  68   3                        dispcode[1]=tab[ptr] / 10;    //十数
  69   3                        BEEP(200);
  70   3                        break;        //有按键,则退出扫描
  71   3                      }
  72   2      
  73   2                      a1=a1>>1 | 0x80;        //高位补1,由于P1.7~4末接+5V,而是由指令加载高电平
  74   2      
  75   2      
  76   2              }
  77   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    134    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     18       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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