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

📄 keypad.lst

📁 使用于克隆器
💻 LST
字号:
C51 COMPILER V7.50   KEYPAD                                                                07/03/2006 14:17:08 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE KEYPAD
OBJECT MODULE PLACED IN ..\..\OUTPUT\NTSC_SOUTH\Keypad.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ..\..\KERNEL\Keypad.c OPTIMIZE(9,SIZE) BROWSE ORDER INCDIR(..\..\INC\;..\..
                    -\UI\NTSC_SOUTH\) DEFINE(PABLO,MCU_MTV412M,OLGA) DEBUG OBJECTEXTEND PRINT(..\..\OUTPUT\NTSC_SOUTH\Keypad.lst) OBJECT(..\.
                    -.\OUTPUT\NTSC_SOUTH\Keypad.obj)

line level    source

   1          /******************************************************************************
   2           Copyright (c) 2003 MStar Semiconductor, Inc.
   3           All rights reserved.
   4          
   5           [Module Name]: Keypad.c
   6           [Date]:        31-Dec-2003
   7           [Comment]:
   8             Keypad control subroutines.
   9           [Reversion History]:
  10          *******************************************************************************/
  11          
  12          #define _KEYPAD_C_
  13          
  14          // System
  15          #include <intrins.h>
  16          
  17          // Common
  18          #include "define.h"
  19          #include "mcu.h"
  20          #include "global.h"
  21          
  22          // External
  23          #include "common.h"
  24          #include "uart.h"
  25          #include "userpref.h"
  26          #include "ir.h"
  27          
  28          // Internal
  29          #include "keypad.h"
  30          
  31          ///////////////////////////////////////////////////////////////////////////////
  32          // <Function>: keyScanStatus
  33          //
  34          // <Description>: Scan key status.
  35          //
  36          // <Returns> : Key Status.
  37          ///////////////////////////////////////////////////////////////////////////////
  38          #define KeyRange 15
  39          
  40          
  41          XDATA BYTE g_ucKeyCode;
  42          XDATA BYTE g_ucPreKeyCode;
  43          bit g_bKeyScanEnable = 0;
  44          void keyScanStatus(BYTE KeyPad)
  45          {
  46   1          BYTE tmp;
  47   1      
  48   1          if (!g_bKeyScanEnable)
  49   1              return;
  50   1      
  51   1          tmp = MADC;
  52   1      
  53   1          if (KeyPad == Key_AD0)
C51 COMPILER V7.50   KEYPAD                                                                07/03/2006 14:17:08 PAGE 2   

  54   1          {
  55   2              //g_ucKeyCode=IRMAX;
  56   2              if ((0x88 - KeyRange) < tmp && tmp < (0x88 + KeyRange)) // AD0 OK
  57   2              {
  58   3                  g_ucKeyCode = IRKEY_VOL_UP;
  59   3                  g_bKeyDetect = TRUE;
  60   3                  return ;
  61   3              }
  62   2              else if ((0x59 - KeyRange) < tmp && tmp < (0x59 + KeyRange)) // AD0 OK
  63   2              {
  64   3                  g_ucKeyCode = IRKEY_VOL_DOWN;
  65   3                  g_bKeyDetect = TRUE;
  66   3                  return ;
  67   3              }
  68   2              else if ((0xC7 - KeyRange) < tmp && tmp < (0xC7 + KeyRange)) // AD0 OK
  69   2              {
  70   3                  g_ucKeyCode = IRKEY_INPUT;
  71   3                  g_bKeyDetect = TRUE;
  72   3                  return ;
  73   3              }
  74   2          }
  75   1          else//Key_AD1
  76   1          {
  77   2              if  ((0xE3 - KeyRange) < tmp && tmp < (0xE3 + KeyRange)) // AD1 OK
  78   2              {
  79   3                  g_ucKeyCode = IRKEY_POWER;
  80   3                  g_bKeyDetect = TRUE;
  81   3                  return ;
  82   3              }
  83   2              else if ((0x24 - KeyRange) < tmp && tmp < (0x24 + KeyRange)) // AD1 OK
  84   2              {
  85   3                  g_ucKeyCode = IRKEY_CH_UP;
  86   3                  g_bKeyDetect = TRUE;
  87   3                  return ;
  88   3              }
  89   2              else if ((0x64 - KeyRange) < tmp && tmp < (0x64 + KeyRange)) // AD1 OK
  90   2              {
  91   3                  g_ucKeyCode = IRKEY_CH_DOWN;
  92   3                  g_bKeyDetect = TRUE;
  93   3                  return ;
  94   3              }
  95   2              else if ((0xAC - KeyRange) < tmp && tmp < (0xAC + KeyRange)) // AD1 OK
  96   2              {
  97   3                  g_ucKeyCode = IRKEY_TVMENU;
  98   3                  g_bKeyDetect = TRUE;
  99   3                  return ;
 100   3              }
 101   2          }
 102   1      }
 103          
 104          /////////////////////////////////////////
 105          // delay 10 microsecond.
 106          //
 107          // Arguments: wValue - delay counter
 108          ////////////////////////////////////////
 109          #ifdef DVDENABLE
              void Delay10us(WORD wValue)
              {
                  WORD wCount; // loop counter
              
                  while (wValue--)
                  {
C51 COMPILER V7.50   KEYPAD                                                                07/03/2006 14:17:08 PAGE 3   

                      wCount = DELAY_1MS_PERIOD / 100; // reset loop counter
                      while (wCount--) ;
                  } // while
              }
              #endif
 121          ///////////////////////////////////////////////////////////////////////////////
 122          // <Function>: keyDetectHandler
 123          //
 124          // <Description>:
 125          ///////////////////////////////////////////////////////////////////////////////
 126          void keyDetectHandler(void)
 127          {
 128   1          g_bKeyScanEnable = 1;
 129   1      
 130   1          if (!_testbit_(g_bKeyDetect))
 131   1          {
 132   2              g_ucPreKeyCode = IRMAX;
 133   2              g_ucKeyReleaseCounter = 0;
 134   2              g_bKeyScanEnable = 1;
 135   2              return;
 136   2          }
 137   1          else
 138   1          {
 139   2              //printf("\r\nKeyCode=%x",g_ucKeyCode);
 140   2              if (g_ucKeyReleaseCounter > 0xE000 && g_ucKeyReleaseCounter < 0xEE00)
 141   2              {// key successfully received before and repeat
 142   3                  //putstr(">");
 143   3                  g_bIrDetect = TRUE;
 144   3                  g_IrCodeParam[5] = TRUE;
 145   3                  g_ucIrCode = g_ucKeyCode;
 146   3                  if (g_ucIrCode == IRKEY_INPUT)
 147   3                      g_ucKeyReleaseCounter = 0xFFFF;
 148   3                  else if (g_ucIrCode == IRKEY_TVMENU)
 149   3                      g_ucKeyReleaseCounter = 0xFFFF;
 150   3                  else//volume channel
 151   3                      g_ucKeyReleaseCounter = 0xEE00;
 152   3              }
 153   2              else if (g_ucKeyReleaseCounter == 0)
 154   2              {// NEW KEY PRESSED
 155   3                  //putstr("-");
 156   3                  if (g_ucPreKeyCode == IRMAX)
 157   3                  {
 158   4                      g_bIrDetect = TRUE;
 159   4                      g_ucIrCode = g_ucKeyCode;
 160   4                      g_IrCodeParam[5] = TRUE;
 161   4                      if (g_ucKeyCode == IRKEY_POWER )
 162   4                          g_ucKeyReleaseCounter = 0x100;
 163   4                      else if (g_ucIrCode == IRKEY_TVMENU)
 164   4                          g_ucKeyReleaseCounter = 0xFFFF;
 165   4                      else if (g_ucIrCode == IRKEY_INPUT)
 166   4                          g_ucKeyReleaseCounter = 0xFFFF;
 167   4                      else//volume chanel input
 168   4                          g_ucKeyReleaseCounter = 0xEF80;
 169   4                  }
 170   3              }
 171   2              else if (g_ucKeyReleaseCounter > 0x200 && g_ucKeyReleaseCounter < 0xE000)
 172   2              {
 173   3                  g_ucPreKeyCode = IRMAX;
 174   3                  g_ucKeyReleaseCounter = 0;
 175   3                  g_bKeyScanEnable = 1;
 176   3              }
 177   2          }
C51 COMPILER V7.50   KEYPAD                                                                07/03/2006 14:17:08 PAGE 4   

 178   1          g_ucPreKeyCode = g_ucKeyCode;
 179   1          g_bKeyScanEnable = 1;
 180   1      }
 181          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    320    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      2    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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