main.lst

来自「stc15单片机测试程序V1.0版」· LST 代码 · 共 113 行

LST
113
字号
C51 COMPILER V9.01   MAIN                                                                  07/28/2012 10:19:13 PAGE 1   


C51 COMPILER V9.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /***********************************************************
   2          实验名称:矩阵按键
   3          程序说明:本程序测试了矩阵按键
   4          实验平台:stc15单片机开发板v1.0版
   5          日期:2012-05-27
   6          QQ:     259902530
   7          www.stcstudy.com    61mcu.taobao.com  版权所有 
   8          ***********************************************************/
   9          //矩阵按键测试程序, 输出结果用串口传输到上位机显示,可采用STC下载软件自带串口调试助手观察
  10          #include "STC15F2K.H"
  11          #include "UART.H"
  12          #include <intrins.h>
  13          
  14          #define uchar unsigned char
  15          #define uint  unsigned int 
  16          
  17          char SMG[]="0123456789";
  18          
  19          void delay_ms(uchar t);    //11.0592M晶振下 延时 t ms;
  20          uchar ScanKey(void);       //返回按键的码值(按下按键12时,返回12,否则返回0)
  21                                                             //只有松手后才返回码值
  22          void main(void)
  23          {
  24   1         uchar New,L[3];
  25   1         InitUART();
  26   1         while(1)
  27   1         {
  28   2           New= ScanKey();     //获取新按键信息
  29   2               if(New)
  30   2               {
  31   3                 SendString("按键编码为 : ");
  32   3                 L[0] = SMG[New/10];
  33   3                 L[1] = SMG[New%10];
  34   3                 L[2] = '\0';
  35   3                 SendString(L);
  36   3                 SendData('\r');
  37   3                 SendData('\n');
  38   3               }
  39   2                
  40   2         }   
  41   1      }
  42          
  43          
  44          void delay_ms(uchar t)
  45          {
  46   1          unsigned char a,b;
  47   1              while(t--)
  48   1          for(b=178;b>0;b--)
  49   1              for(a=14;a>0;a--);
  50   1      }
  51          
  52          uchar ScanKey(void)
  53          {
  54   1        uchar Tmp,Tmp2,KeyNum;
  55   1        P3=0x0f;
C51 COMPILER V9.01   MAIN                                                                  07/28/2012 10:19:13 PAGE 2   

  56   1        if(P3!=0x0f) 
  57   1        {
  58   2         delay_ms(8);
  59   2         if(P3!=0x0f)
  60   2         {
  61   3           Tmp=P3;
  62   3               P3 =0xF0;
  63   3               _nop_();_nop_();_nop_();_nop_();
  64   3               Tmp2=P3;
  65   3               Tmp=Tmp+Tmp2;
  66   3               while(P3!=0xF0) ;
  67   3               switch(Tmp&0xF0)
  68   3               {
  69   4                 case 0xE0:KeyNum=0;break;
  70   4                 case 0xD0:KeyNum=4;break;
  71   4                 case 0xB0:KeyNum=8;break;
  72   4                 case 0x70:KeyNum=12;break;
  73   4               }
  74   3               switch(Tmp&0x0F)
  75   3               {
  76   4                 case 0x0E:KeyNum+=1;break;
  77   4                 case 0x0D:KeyNum+=2;break;
  78   4                 case 0x0B:KeyNum+=3;break;
  79   4                 case 0x07:KeyNum+=4;break;
  80   4      
  81   4               } 
  82   3                P3|=0x03;       //此句必须,否则影响 串口输出
  83   3               return KeyNum;
  84   3          }
  85   2        }
  86   1        return 0;
  87   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    215    ----
   CONSTANT SIZE    =     14    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     11       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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