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

📄 jianpan.lst

📁 这是51单片机驱动键盘的源码。采用4*4矩阵键盘。
💻 LST
字号:
C51 COMPILER V8.05a   JIANPAN                                                              02/23/2009 09:31:33 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE JIANPAN
OBJECT MODULE PLACED IN jianpan.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE jianpan.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #define uchar unsigned char
   3          #define uint  unsigned int
   4          uchar temp;
   5          uchar code table[]=
   6          
   7          {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0xf1,0x80,0xa0,0x90,0x86,0xcc,0x83,0x8c,0x9c};
   8          int num;
   9          void delay(uint z)
  10          {
  11   1        uint x,y;
  12   1        for(x=z;x>0;x--)
  13   1           for(y=110;y>0;y--);
  14   1      }
  15          
  16          void main()
  17          
  18          {
  19   1      P1=0xff;
  20   1      while(1)
  21   1      {
  22   2       P1=0xff;
  23   2      /*检测第一行*/
  24   2      P3=0xfe;
  25   2      temp=P3;
  26   2      temp=temp&0xf0;
  27   2          while(temp!=0xf0)//第二个while循环
  28   2          {
  29   3               delay(5);
  30   3               temp=P3;
  31   3               temp=temp&0xf0;//消除抖动
  32   3               while(temp!=0xf0)
  33   3               {
  34   4                 temp=P3;//必须加这一句,否则跳不出while()循环
  35   4                 switch(temp)
  36   4                     {
  37   5                     case 0xee:num=1;break;//1110
  38   5                     case 0xde:num=2;break;//1101
  39   5                     case 0xbe:num=3;break;//1011
  40   5                     case 0x7e:num=4;break;//0111
  41   5                     }
  42   4               }
  43   3            while(temp!=0xf0)
  44   3               {
  45   4                temp=P3;
  46   4                temp=temp&0xf0;
  47   4                }//等待按键松下,不加这个将跳不出第二个while()循环,
  48   3      /*键盘检测后的程序*/
  49   3      
  50   3         P1=table[num];//写检测键盘后执行的程序
  51   3         delay(200)  ;
  52   3           }
  53   2      /*检测第二行*/
  54   2      P3=0xfd;//11111101
  55   2      temp=P3;
C51 COMPILER V8.05a   JIANPAN                                                              02/23/2009 09:31:33 PAGE 2   

  56   2      temp=temp&0xf0;//获得高四位的值
  57   2          while(temp!=0xf0)
  58   2          {
  59   3             delay(5);
  60   3             temp=P3;
  61   3             temp=temp&0xf0;
  62   3             while(temp!=0xf0)
  63   3              {
  64   4                temp=P3;
  65   4                switch(temp)
  66   4                    {
  67   5                      case 0xed:num=5;break;
  68   5                      case 0xdd:num=6;break;
  69   5                      case 0xbd:num=7;break;
  70   5                      case 0x7d:num=8;break;
  71   5                    }
  72   4              }
  73   3      while(temp!=0xf0)
  74   3               {
  75   4                temp=P3;
  76   4                temp=temp&0xf0;
  77   4                }//等待按键松下
  78   3      /*键盘检测后的程序*/
  79   3        P0=table[num];
  80   3            }        
  81   2      /*检测第三行*/
  82   2      P3=0xfb;//11111011
  83   2      temp=P3;
  84   2      temp=temp&0xf0;//获得高四位的值
  85   2          while(temp!=0xf0)
  86   2          {
  87   3             delay(5);
  88   3             temp=P3;
  89   3             temp=temp&0xf0;
  90   3             while(temp!=0xf0)
  91   3              {
  92   4                temp=P3;
  93   4                switch(temp)
  94   4                    {
  95   5                      case 0xeb:num=9;break;
  96   5                      case 0xdb:num=10;break;
  97   5                      case 0xbb:num=11;break;
  98   5                      case 0x7b:num=12;break;
  99   5                    }
 100   4              }
 101   3      while(temp!=0xf0)
 102   3               {
 103   4                temp=P3;
 104   4                temp=temp&0xf0;
 105   4                }//等待按键松下
 106   3      /*键盘检测后的程序*/
 107   3        P0=table[num];
 108   3            } 
 109   2      /*检测第四行*/       
 110   2      P3=0xf7;//11110111
 111   2      temp=P3;
 112   2      temp=temp&0xf0;//获得高四位的值
 113   2          while(temp!=0xf0)
 114   2          {
 115   3             delay(5);
 116   3             temp=P3;
 117   3             temp=temp&0xf0;
C51 COMPILER V8.05a   JIANPAN                                                              02/23/2009 09:31:33 PAGE 3   

 118   3             while(temp!=0xf0)
 119   3              {
 120   4                temp=P3;
 121   4                switch(temp)
 122   4                    {
 123   5                      case 0xe7:num=13;break;
 124   5                      case 0xd7:num=14;break;
 125   5                      case 0xb7:num=15;break;
 126   5                      case 0x77:num=16;break;
 127   5                    }
 128   4              }
 129   3      while(temp!=0xf0)
 130   3               {
 131   4                temp=P3;
 132   4                temp=temp&0xf0;
 133   4                }//等待按键松下
 134   3      /*键盘检测后的程序*/
 135   3        P0=table[num];
 136   3            }        
 137   2      
 138   2      }
 139   1      }


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