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

📄 404.lst

📁 行扫描法矩阵键盘
💻 LST
字号:
C51 COMPILER V6.12  404                                                                    09/02/2007 01:39:52 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE 404
OBJECT MODULE PLACED IN .\404.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\404.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "reg52.h"
   2          
   3          //数码管上显示的0-9的显示代码
   4          
   5          //共阴:
   6          //unsigned char code LEDCODE[]=
   7          //{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};   //共阴
   8          
   9          //共阳
  10          unsigned char code LEDCODE[]=
  11          {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};     //共阳
  12          
  13          void delay(void)  //好像是延时10MS
  14          {
  15   1        unsigned char i,j;
  16   1        for(i=20;i>0;i--)
  17   1        for(j=248;j>0;j--);
  18   1      }
  19          
  20          void main(void)
  21          {
  22   1        unsigned char key;
  23   1        P2=0X00;      //初始化数码管显示"8"
  24   1      while(1)
  25   1      {
  26   2      P3=0xef; //此举是为了方便在平凡老师提供的仿真附件上使用
  27   2      P1=0xef;//扫描第一列
  28   2            if ((P1 & 0x0f)!=0x0f)     //判断是该列是否有键按下
  29   2              {
  30   3                  delay();             //去抖动
  31   3                if ((P1 & 0x0f)!=0x0f) //再判断该列是否有键按下
  32   3                  {
  33   4                    switch(P1& 0x0f)   //读取行的代码,分析是哪一行有键按下
  34   4                      {
  35   5                        case 0x0e:
  36   5                          key=15;
  37   5                          break;
  38   5                        case 0x0d:
  39   5                          key=14;
  40   5                          break;
  41   5                        case 0x0b:
  42   5                          key=13;
  43   5                          break;
  44   5                        case 0x07:
  45   5                          key=12;
  46   5                          break;
  47   5                      }
  48   4                    P2=LEDCODE[key];//送出显示
  49   4                    while((P1&0x0f)!=0x0f);//等待按键释放
  50   4                  }
  51   3              }
  52   2      P3=0xdf;//扫描第二列     
  53   2      P1=0xdf;//扫描第二列
  54   2            if ((P1 & 0x0f)!=0x0f)
  55   2              {
C51 COMPILER V6.12  404                                                                    09/02/2007 01:39:52 PAGE 2   

  56   3                  delay();
  57   3                if ((P1 & 0x0f)!=0x0f)
  58   3                  {
  59   4                    switch(P1 & 0x0f)
  60   4                      {
  61   5                        case 0x0e:
  62   5                          key=11;
  63   5                          break;
  64   5                        case 0x0d:
  65   5                          key=10;
  66   5                          break;
  67   5                        case 0x0b:
  68   5                          key=9;
  69   5                          break;
  70   5                        case 0x07:
  71   5                          key=8;
  72   5                          break;
  73   5                      }
  74   4                    P2=LEDCODE[key];
  75   4                    while((P1 & 0x0f)!=0x0f);
  76   4                  }
  77   3              }
  78   2      P3=0xbf;//扫描第三列
  79   2      P1=0xbf;//扫描第三列
  80   2            if ((P1 & 0x0f)!=0x0f)
  81   2              {
  82   3                  delay();
  83   3                if ((P1 & 0x0f)!=0x0f)
  84   3                  {
  85   4                    switch(P1 & 0x0f)
  86   4                      {
  87   5                        case 0x0e:
  88   5                          key=7;
  89   5                          break;
  90   5                        case 0x0d:
  91   5                          key=6;
  92   5                          break;
  93   5                        case 0x0b:
  94   5                          key=5;
  95   5                          break;
  96   5                        case 0x07:
  97   5                          key=4;
  98   5                          break;
  99   5                      }
 100   4                    P2=LEDCODE[key];
 101   4                    while((P1&0x0f)!=0x0f);
 102   4                  }
 103   3              }
 104   2      P3=0x7f;//扫描第四列
 105   2      P1=0x7f;//扫描第四列
 106   2            if ((P1&0x0f)!=0x0f)
 107   2              {
 108   3                   delay();
 109   3                if ((P1&0x0f)!=0x0f)
 110   3                  {
 111   4                    switch(P1 & 0x0f)
 112   4                      {
 113   5                        case 0x0e:
 114   5                          key=3;
 115   5                          break;
 116   5                        case 0x0d:
 117   5                          key=2;
C51 COMPILER V6.12  404                                                                    09/02/2007 01:39:52 PAGE 3   

 118   5                          break;
 119   5                        case 0x0b:
 120   5                          key=1;
 121   5                          break;
 122   5                        case 0x07:
 123   5                          key=0;
 124   5                          break;
 125   5                      } 
 126   4                    P2=LEDCODE[key];
 127   4                   while((P1 & 0x0f)!=0x0f);
 128   4                  }
 129   3              }
 130   2                         
 131   2           }
 132   1      }  
 133          


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