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

📄 ic165.lst

📁 p89lpc915程序
💻 LST
字号:
C51 COMPILER V8.08   IC165                                                                 03/06/2008 13:48:04 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE IC165
OBJECT MODULE PLACED IN .\obj\IC165.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SRC\IC165.C BROWSE DEBUG OBJECTEXTEND PRINT(.\lst\IC165.lst) OBJECT(.\obj\I
                    -C165.obj)

line level    source

   1          #if 1
   2          #include "ic165.h"
   3          #include "debug.h"
   4          #include "comm.h"
   5          #include "Key_process.h"
   6          
   7          #define KEY_NONE 0
   8          #define KEY_PRESS 1
   9          #define KEY_HOLD 2
  10          #define KEY_UP 3
  11          
  12          #define _NEW_KEY_PRESS_TIME 1
  13          #define _KEY_HOLD_TIME 12
  14          
  15          //#define _SHORT_KEY_HOLD_TIME 10
  16          #define _LONG_KEY_HOLD_TIME 10
  17          
  18          extern uchar user_key;
  19          static void proc_key_press(unsigned char key_value);
  20          static void proc_key_hold(unsigned char key_value,unsigned int hold_time);
  21          static void proc_key_up(unsigned char key_value,unsigned int hold_time);
  22          
  23          typedef struct {
  24          unsigned char key_value;
  25          unsigned char key_mode;
  26          }_PANEL_KEY,*_pPANEL_KEY;
  27          
  28          enum
  29          {
  30                  DECT_EXIT_KEY = 1,//    ENTER_KEY,      /*1*/   /*p 0.4 * p0.1*/
  31                  DECT_VOLUME_UP_KEY,
  32                  DECT_LEFT_KEY,///*      VOLUME_DN_KEY,*/        /*3*/   /*p 0.4 * p0.3*/DOWN_KEY,
  33                  DECT_UP_KEY,///*        VOLUME_UP_KEY,*/        /*4*/   /*p 0.5 * p0.1 */EXIT_KEY,
  34                  DECT_DOWN_KEY,//_POWER_KEY,     /*5*/   /*p 0.5 * p0.2 */
  35                  DECT_RIGHT_KEY,///*     UP_KEY,*/       /*6*/   /*p 0.5 * p0.3 */LEFT_KEY,
  36                 DECT_VOLUME_DN_KEY,
  37                 DECT__POWER_KEY,///*     LEFT_KEY,*/     /*8*/   /*p 1.0 * p0.2*/UP_KEY,
  38                  DECT_ENTER_KEY,//RIGHT_KEY,     /*9*/   /*p 1.0 * p0.2*/
  39                  DECT_EXTERN_KEY, /*JIAN ADD IN 08-03-06*/
  40          };
  41          
  42          #ifdef PANEL_KEY_4_2
              
              #define key_init_state 0x3c 
              #define key1_effect (key_init_state&(~0x04))
              #define key2_effect (key_init_state&(~0x08)) 
              #define key3_effect (key_init_state&(~0x10)) 
              #define key4_effect (key_init_state&(~0x20)) 
              
              
              /******************************************************************
              8个前控按键扫描
              
              2×4
C51 COMPILER V8.08   IC165                                                                 03/06/2008 13:48:04 PAGE 2   

              
               ******************************************************************/
              unsigned char Scan_Panel_Key()
              {
              unsigned char port_vaule;
              unsigned char key_vaule;
              unsigned char scan_cnt;
              
              
              for(scan_cnt = 0;scan_cnt<2;scan_cnt++)
              {
                 if(scan_cnt == 0)
                      {
                      PORT_ROM1 = 0;
                      PORT_ROM2 = 1;
                      }
                 else
                      {
                      PORT_ROM1 = 1;
                      PORT_ROM2 = 0;
                      }
                      port_vaule =  (P0&key_init_state);  /*读p0口的四个IO口*/
                      if(port_vaule != key_init_state) /*当IO口有变化的时候*/
                              {
                           /*发现有两个键以上同时按下时,不做处理*/
                              if(key_vaule > 0)
                                      {
                                      key_vaule  = 0;
                                      break;
                                      }
                              }
                      else
                              {
                               if(scan_cnt == 1)
                                      key_vaule  = 4;
                              }
              
                 switch(port_vaule&0xff)
                      {
                              case key1_effect:               
                                      key_vaule += 1;
                              break;
                              
                              case key2_effect:
                                           key_vaule += 2;
                                     break;
                              
                              case key3_effect:
                                          key_vaule += 3;
                                      break;
                              
                              case key4_effect:
                                            key_vaule += 4;
                                      break;
              
                              default:  /**/
                                      key_vaule = 0;
                                      break;
                      }
              }
              
              
C51 COMPILER V8.08   IC165                                                                 03/06/2008 13:48:04 PAGE 3   

              //   Scan_Key_init();
                 return key_vaule;
              
              
              }
              
              #else
 124          
 125          /*
 126             p 0.1 
 127             p 0.2 
 128             p 0.3
 129             */
 130          #define key_init_state 0x1c 
 131          #define key1_effect (key_init_state&(~0x04))  /*p0.2*/
 132          #define key2_effect (key_init_state&(~0x08))   /*p0.3*/
 133          #define key3_effect (key_init_state&(~0x10))   /*p0.4*/
 134          //#define key4_effect (key_init_state&(~0x20)) 
 135          /******************************************************************
 136          8个前控按键扫描
 137          
 138          3  * 3
 139          
 140           ******************************************************************/
 141          unsigned char Scan_Panel_Key()
 142          {
 143   1      unsigned char port_vaule;
 144   1      unsigned char key_vaule;
 145   1      unsigned char scan_cnt;
 146   1      //static int cnt;
 147   1      //  PORT_LINE1 = 0;
 148   1      #if 0
              if(cnt != 500)
              {
              cnt ++;
              }
              else
              {
                 cnt = 0;
                 return 0;            
              }
              #endif
 159   1      PORT_LINE1 = 1;
 160   1      PORT_LINE2 = 1;
 161   1      PORT_LINE3 = 1;
 162   1      
 163   1      for(scan_cnt = 0;scan_cnt <  3; scan_cnt++)
 164   1      {
 165   2                      //PORT_LINE2 = 1;
 166   2      
 167   2      //    tvbox_printf(" scan_cnt:", scan_cnt, 1);  
 168   2              if(scan_cnt  == 0)
 169   2                      {
 170   3                      //PORT_LINE2 = 1;
 171   3                     PORT_ROM1 = 0;
 172   3                      PORT_ROM2 = 1;
 173   3                      PORT_ROM3 = 1;
 174   3      
 175   3                      }       
 176   2              else if(scan_cnt  == 1)
 177   2                      {
 178   3                      PORT_ROM1 = 1;
C51 COMPILER V8.08   IC165                                                                 03/06/2008 13:48:04 PAGE 4   

 179   3                      PORT_ROM2 = 0;
 180   3                      PORT_ROM3 = 1;
 181   3              //      PORT_LINE2 = 0;
 182   3                      }
 183   2              else if(scan_cnt  == 2)         
 184   2                      {
 185   3      
 186   3                      PORT_ROM2 = 1;
 187   3                      PORT_ROM3 = 0;
 188   3                      PORT_ROM1 = 1;
 189   3                      }
 190   2        
 191   2      //      if(PORT_LINE2 == 0) 
 192   2      //              {
 193   2      //              STANDBY_LED = ~STANDBY_LED;
 194   2      //              }
 195   2              port_vaule =  (P0&key_init_state);  /*读p0口的四个IO口*/
 196   2      //      tvbox_printf("port_vaule:", port_vaule, 1);
 197   2            if(port_vaule != key_init_state) /*当IO口有变化的时候*/
 198   2                      {
 199   3                   /*发现有两个键以上同时按下时,不做处理*/
 200   3      
 201   3                               /*当发现有两个按键,下键和上键同时按下的时候产生第十个键值*/
 202   3                      if(key_vaule > 0)
 203   3                              {
 204   4                            if(key_vaule == DECT_UP_KEY)  /*检测到有第二个键按下的时候,前一个键是方向上键或是下
             -键 ,再判断此时的按键是否是这两个键的另一个
 205   4                                                      如果条件满足就产生第十个键值,否则就不做处理
 206   4                                                  dect_up_key

⌨️ 快捷键说明

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