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

📄 keyscan.lst

📁 单片机键盘扫描的一种程序实现方法。比起组行扫描逐列置零节省很多的空间。
💻 LST
字号:
C51 COMPILER V7.20   KEYSCAN                                                               04/28/2009 22:37:35 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE KEYSCAN
OBJECT MODULE PLACED IN keyscan.OBJ
COMPILER INVOKED BY: D:\Program Files\C51\BIN\C51.EXE keyscan.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #define uint unsigned int
   3          #define uchar unsigned char
   4          uchar keynum;
   5          uchar b,a;
   6          uint k;
   7          uchar num;
   8          uint keyscan();
   9          void delay_ms(uint );
  10          void main()
  11          {
  12   1              P0=0xff;        
  13   1              while(1)
  14   1              {
  15   2                      keynum=keyscan();
  16   2                      P0=~keynum;
  17   2              }       
  18   1      }
  19          
  20          uint keyscan() 
  21          {
  22   1              P1=0x0f;
  23   1              b=P1;
  24   1              b&=0x0f;
  25   1              if(b!=0x0f)
  26   1              {
  27   2                      delay_ms(75);
  28   2                      b=P1;
  29   2                      b&=0x0f;
  30   2                      if(b!=0x0f)
  31   2                      {
  32   3                               
  33   3                              P1=0xf0;
  34   3                              a=P1;
  35   3                              a&=0xf0;
  36   3                              a|=b;   
  37   3                              switch(a)
  38   3                              {
  39   4                                      case(0xee):     k=1;break;
  40   4                                      case(0xed): k=2;break;
  41   4                                      case(0xeb):     k=3;break;
  42   4                                      case(0xe7):     k=4;break;
  43   4                                      case(0xde):     k=5;break;
  44   4                                      case(0xdd):     k=6;break;
  45   4                                      case(0xdb):     k=7;break;
  46   4                                      case(0xd7):     k=8;break;
  47   4                                      case(0xbe):     k=9;break;
  48   4                                      case(0xbd): k=10;break;
  49   4                                      case(0xbb):     k=11;break;
  50   4                                      case(0xb7):     k=12;break;
  51   4                                      case(0x7e):     k=13;break;
  52   4                                      case(0x7d):     k=14;break;
  53   4                                      case(0x7b):     k=15;break;
  54   4                                      case(0x77):     k=16;break;
  55   4                              }
C51 COMPILER V7.20   KEYSCAN                                                               04/28/2009 22:37:35 PAGE 2   

  56   3      //                P1=0x0f;
  57   3      //                while ((P1&0x0f)!=0x0f);     //松手检测                       
  58   3                      }                               
  59   2              }
  60   1              return k;       
  61   1      }
  62               
  63          //延时子程序,参数z为所需的 ms 数
  64          void delay_ms(uint z)
  65          {
  66   1              uint x,y;
  67   1              for(x=z;x>0;x--)
  68   1                      for(y=110;y>0;y--);
  69   1      }


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