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

📄 key.lst

📁 采用反正法扫描方法对4X4矩阵式按键进行扫描
💻 LST
字号:
C51 COMPILER V8.02   KEY                                                                   03/25/2009 20:03:51 PAGE 1   


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

line level    source

   1          #include<reg51.h>                               //头文件
   2          #include<stdio.h>
   3          
   4          int hang;                                               //定义行号
   5          int lie;                                                //定义列号
   6          
   7          int KeyScan();                                  //子函数声明
   8          void Delay();
   9          
  10          void main()                                             //主函数
  11          {
  12   1              int Key;
  13   1              while(1){                                               //开始循环扫描键盘
  14   2                      Key=KeyScan();                          //键盘扫描子函数
  15   2                      if(Key==1){                                     //如果扫描到按键按下
  16   3                              P2=0x80;                                //点亮发光二极管
  17   3                      }
  18   2                      Delay();                                        //延时
  19   2                      P2=0x00;                                        //熄灭发光二级管
  20   2              }
  21   1      }
  22          
  23          void Delay()                                    //延时子函数
  24          {
  25   1              long i;
  26   1              for(i=10000;i>0;i--);                   //可以根据系统的时钟频率来调整
  27   1      }
  28          
  29          int KeyScan()                                   //键盘扫描子函数
  30          {
  31   1              P1=0xF0;                                                //列输出全0
  32   1              if((P1&0xF0)!=0xF0){                    //扫描行,如果不全为0,则进入
  33   2                      switch(P1)                                      //获得行号
  34   2                      {
  35   3                              case 0x70:
  36   3                                      hang=1;
  37   3                                      break;
  38   3                              case 0xB0:
  39   3                                      hang=2;
  40   3                                      break;
  41   3                              case 0xD0:
  42   3                                      hang=3;
  43   3                                      break;
  44   3                              case 0xE0:
  45   3                                      hang=4;
  46   3                                      break;
  47   3                              default:
  48   3                                      break;
  49   3                      }
  50   2                      Delay();                                        //延时去抖动
  51   2                      P1=0x0F;                                        //行输出全0
  52   2                      if((P1&0x0F)!=0x0F){                    //扫描列,如果不全为0,则确认按键按下
  53   3                              switch(P1)                              //获得列号
  54   3                              {
  55   4                                      case 0x07:
C51 COMPILER V8.02   KEY                                                                   03/25/2009 20:03:51 PAGE 2   

  56   4                                              lie=1;
  57   4                                              break;
  58   4                                      case 0x0B:
  59   4                                              lie=2;
  60   4                                              break;
  61   4                                      case 0x0D:
  62   4                                              lie=3;
  63   4                                              break;
  64   4                                      case 0x0E:
  65   4                                              lie=4;
  66   4                                              break;
  67   4                                      default:
  68   4                                              break;
  69   4                              }
  70   3                              return 1;                               //扫描到按键按下,返回1
  71   3                      }
  72   2              }
  73   1              else{
  74   2                      return 0;                                       //未扫描到按键按下,返回0
  75   2              }
  76   1      }


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