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

📄 key.lst

📁 4×4矩阵式键盘的protuse阅读您的文件包然后写出其
💻 LST
字号:
C51 COMPILER V7.00  KEY                                                                    01/03/2007 15:13:29 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: G:\单片机学习\单片机软件\new-keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg51.h>
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          uchar buff,times,j;
   5          unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f, //0,1,2,3
   6                                         0x66,0x6d,0x7d,0x07, //4,5,6,7
   7                                         0x7f,0x6f,0x77,0x7c, //8,9,A,B
   8                                         0x39,0x5e,0x79,0x71,0x00}; //C,D,E,F,null
   9          unsigned char idata value[8];
  10          
  11          void delay1ms(void)  //消抖动
  12          { uchar i;
  13   1        for(i=200;i>0;i--);
  14   1      }
  15          
  16          void delay5ms(void)  //延时5ms
  17          {
  18   1        unsigned char i,j;
  19   1        for(i=5;i>0;i--)
  20   1        for(j=248;j>0;j--);
  21   1      }
  22          
  23          void key_scan(void)   //键盘输入扫描函数
  24          { uchar hang,lie,key;
  25   1        P3=0xf0;
  26   1        if((P3&0xf0)!=0xf0)   //行码为0,列码为1
  27   1         { delay1ms();
  28   2           if((P3&0xf0)!=0xf0)  //有键按下,列码变为0
  29   2            { hang=0xfe;     //逐行扫描
  30   3              times++;
  31   3                    if(times==9)
  32   3                      times=1;
  33   3              while((hang&0x10)!=0)  //扫描完4行后跳出
  34   3               { P3=hang;
  35   4                 if((P3&0xf0)!=0xf0)  //本行有键按下
  36   4                  { lie=(P3&0xf0)|0x0f;
  37   5                    buff=((~hang)+(~lie));
  38   5                    switch(buff)
  39   5                     { case 0x28: key=0;break;
  40   6                       case 0x14: key=1;break;
  41   6                       case 0x24: key=2;break;
  42   6                       case 0x44: key=3;break;
  43   6                       case 0x12: key=4;break;
  44   6                       case 0x22: key=5;break;
  45   6                       case 0x42: key=6;break;
  46   6                       case 0x11: key=7;break;
  47   6                       case 0x21: key=8;break;
  48   6                       case 0x41: key=9;break;
  49   6                       case 0x81: key=10;break;
  50   6                       case 0x82: key=11;break;
  51   6                       case 0x84: key=12;break;
  52   6                       case 0x88: key=13;break;
  53   6                       case 0x48: key=14;break;
  54   6                       case 0x18: key=15;break;
  55   6                     }
C51 COMPILER V7.00  KEY                                                                    01/03/2007 15:13:29 PAGE 2   

  56   5                  value[times-1]=key;  //按下的键值
  57   5                  }
  58   4                 else hang=(hang<<1)|0x01; //下一行扫描
  59   4      
  60   4               }
  61   3            }
  62   2         }
  63   1      }
  64          
  65          void main(void)
  66          { uchar key;
  67   1        while(1)
  68   1         { key_scan();
  69   2           P0=0;
  70   2           for(j=times;j>0;j--) //74LS138扫描

⌨️ 快捷键说明

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