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

📄 5 4x4 key.lst

📁 很好的51单片机仿真模板。
💻 LST
字号:
C51 COMPILER V8.08   5_4X4_KEY                                                             10/28/2008 16:11:59 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE 5_4X4_KEY
OBJECT MODULE PLACED IN 5 4X4 KEY.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 5 4X4 KEY.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //4*4 键盘检测程序,按下键后相应的代码显示在数码管上 
   2          #include<reg51.h> 
   3          sbit beep=P2^3;    //蜂鸣器接口 
   4          sbit dula=P2^6;    //控制数码管段选的锁存器锁存端 
   5          sbit wela=P2^7;    //控制数码管位选的锁存器锁存端 
   6          unsigned char i=100; 
   7          unsigned char j,k,temp,key; 
   8          void delay(unsigned char i)    //可自定义延时长短的延时函数 
   9          {         //当 i=10 时大约为 10 毫秒 
  10   1              for(j=i;j>0;j--) 
  11   1              for(k=125;k>0;k--); 
  12   1      } 
  13          unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 
  14                                                                  0x6d,0x7d,0x07,0x7f,0x6f,
  15                                                                  0x77,0x7c,0x39,0x5e,0x79,0x71}; // 0-F编码 
  16          display(unsigned char num)    //  显示子函数 
  17          { 
  18   1              P0=table[num];   //将第 num 个显示编码送 P0 口 
  19   1              dula=1;          //一个下降沿将数据锁存 
  20   1              dula=0; 
  21   1              P0=0xc0;         //位选通全部的数码管 
  22   1              wela=1;          //一个下降沿将数据锁存 
  23   1              wela=0; 
  24   1                                        
  25   1      
  26   1      
  27   1      } 
  28          void main() 
  29          {       dula=0;                //先关闭两个锁存器 
  30   1              wela=0; 
  31   1              while(1)                //进入检测总循环 
  32   1              {       P3=0xfe;             //给 P3.0 送低电平,其余为高电平 
  33   2                      temp=P3;            //把 P3 口数据读回来 
  34   2                      temp=temp&0xf0;     //把 P3 口与 11110000 相与 
  35   2                      if(temp!=0xf0)        //如果有键按下刚一定不相等,于是进入下一步检测 
  36   2                      {       delay(10);           //延时去抖动 
  37   3                              if(temp!=0xf0)       //再次判断是否有键按下 
  38   3                              {       temp=P3;         //判断为有,再次读 P3 口数据 
  39   4                                      switch(temp)      //因为我们刚才是将第一行置的低 
  40   4                                      {                //在这里再判断是第几列 
  41   5                                              case 0xee:      //如果 temp=0xee 则为第一行和第一列 
  42   5                                                      key=0;    //的交叉点,由此我们知道是矩阵键盘 
  43   5                                                      break;    //上的第一个键被按下,我们给 key=0。 
  44   5                                              case 0xde:      //以后依此类推 
  45   5                                                      key=1; 
  46   5                                                      break; 
  47   5                                              case 0xbe: 
  48   5                                                      key=2; 
  49   5                                                      break; 
  50   5                                              case 0x7e: 
  51   5                                                      key=3; 
  52   5                                                      break; 
  53   5                                      } 
  54   4                                      while(temp!=0xf0)    //这段程序是检测按键是否被释放 
  55   4                                      {       temp=P3;         //如果没有释放就一直等待并且 
C51 COMPILER V8.08   5_4X4_KEY                                                             10/28/2008 16:11:59 PAGE 2   

  56   5                                              temp=temp&0xf0; 
  57   5                                              beep=0;           //蜂鸣器一直响 
  58   5                                      } 
  59   4                                      beep=1;             //释放后关闭蜂鸣器 
  60   4                                      display(key);          //显示按下相应键值的数据 
  61   4                                      P1=0xfe;            //将第一个发光二极管点亮(我写 
  62   4                              }                     //程序的时候测试用的) 
  63   3                      } 
  64   2                      P3=0xfd; 
  65   2                      temp=P3; 
  66   2                      temp=temp&0xf0; 
  67   2                      if(temp!=0xf0) 
  68   2                      { 
  69   3                              delay(10); 
  70   3                              if(temp!=0xf0) 
  71   3                              { 
  72   4                              temp=P3; 
  73   4                              switch(temp) 
  74   4                              { 
  75   5                                      case 0xed: 
  76   5                                              key=4; 
  77   5                                              break;
  78   5                                      case 0xdd: 
  79   5                                              key=5; 
  80   5                                              break; 
  81   5                                      case 0xbd: 
  82   5                                              key=6; 
  83   5                                              break; 
  84   5                                      case 0x7d: 
  85   5                                              key=7; 
  86   5                                              break; 
  87   5                              } 
  88   4                              while(temp!=0xf0) 
  89   4                              { 
  90   5                                      temp=P3; 
  91   5                                      temp=temp&0xf0; 
  92   5                                      beep=0; 
  93   5                              } 
  94   4                              beep=1; 
  95   4                              display(key); 
  96   4                              P1=0xfc; 
  97   4                              } 
  98   3                      } 
  99   2                      P3=0xfb; 
 100   2                      temp=P3; 
 101   2                      temp=temp&0xf0; 
 102   2                      if(temp!=0xf0) 
 103   2                      { 
 104   3                              delay(10); 
 105   3                              if(temp!=0xf0) 
 106   3                              { 
 107   4                                      temp=P3; 
 108   4                                      switch(temp) 
 109   4                                      { 
 110   5                                              case 0xeb: 
 111   5                                                      key=8; 
 112   5                                                      break; 
 113   5                                              case 0xdb: 
 114   5                                                      key=9; 
 115   5                                                      break; 
 116   5                                              case 0xbb: 
 117   5                                                      key=10; 
C51 COMPILER V8.08   5_4X4_KEY                                                             10/28/2008 16:11:59 PAGE 3   

 118   5                                                      break; 
 119   5                                              case 0x7b: 
 120   5                                                      key=11; 
 121   5                                                      break; 
 122   5                                      } 
 123   4                                      while(temp!=0xf0) 
 124   4                                      { 
 125   5                                              temp=P3; 
 126   5                                              temp=temp&0xf0; 
 127   5                                              beep=0; 
 128   5                                      } 
 129   4                                      beep=1; 
 130   4                                      display(key); 
 131   4                                      P1=0xf8; 
 132   4                              } 
 133   3                      } 
 134   2                      P3=0xf7; 
 135   2                      temp=P3; 
 136   2                      temp=temp&0xf0; 
 137   2                      if(temp!=0xf0) 
 138   2                      { 
 139   3                              delay(10); 
 140   3                              if(temp!=0xf0) 
 141   3                              { 
 142   4                                      temp=P3; 
 143   4                                      switch(temp) 
 144   4                                      { 
 145   5                                              case 0xe7: 
 146   5                                                      key=12; 
 147   5                                                      break; 
 148   5                                              case 0xd7: 
 149   5                                                      key=13; 
 150   5                                                      break; 
 151   5                                              case 0xb7: 
 152   5                                                      key=14; 
 153   5                                                      break; 
 154   5                                              case 0x77: 
 155   5                                                      key=15; 
 156   5                                                      break; 
 157   5                                      } 
 158   4                                      while(temp!=0xf0) 
 159   4                                      { 
 160   5                                              temp=P3; 
 161   5                                              temp=temp&0xf0; 
 162   5                                              beep=0; 
 163   5                                      } 
 164   4                                      beep=1; 
 165   4                                      display(key); 
 166   4                                      P1=0xf0; 
 167   4                              } 
 168   3                      } 
 169   2              } 
 170   1      } 
 171           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    404    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5    ----
C51 COMPILER V8.08   5_4X4_KEY                                                             10/28/2008 16:11:59 PAGE 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 + -