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

📄 ap_message2.lst

📁 炬力方案176*132软件源码,适用于AK1025
💻 LST
📖 第 1 页 / 共 4 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       27/Sep/107  17:31:00 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d913f\ap\common\ap_message2.c             #
#       List file     =  d:\case_i_d913f\ap\ap_fmrecord\list\ap_message2.lst #
#       Object file   =  d:\case_i_d913f\ap\ap_fmrecord\obj\ap_message2.r01  #
#       Command line  =  -v0 -mb -OD:\case_i_d913f\ap\ap_fmrecord\Obj\ -e    #
#                        -K -w -gA -s9 -RCODE -r0 -DNAPDEBUG                 #
#                        -LD:\case_i_d913f\ap\ap_fmrecord\List\ -q -t8 -X    #
#                        -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\         #
#                        d:\case_i_d913f\AP\COMMON\ap_message2.c             #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    ap_message2(17)
   \   0000                    RSEG    COM_MSG(0)
   \   0000                    RSEG    UDATA0(0)
   \   0000                    RSEG    IDATA0(0)
   \   0000                    RSEG    CDATA0(0)
   \   0000                    PUBLIC  EarProtectThreshold
   \   0000                    EXTERN  LightOnOff
   \   0000                    PUBLIC  Lightmodeset
   \   0000                    EXTERN  SetContrast
   \   0000                    PUBLIC  ap_get_event
   \   0000                    EXTERN  ap_get_message
   \   0000                    PUBLIC  ap_get_message_core
   \   0000                    EXTERN  ap_handle_hotkey
   \   0000                    PUBLIC  ap_handle_hotkey_core
   \   0000                    PUBLIC  ap_message_init
   \   0000                    PUBLIC  ap_set_event
   \   0000                    PUBLIC  ap_sleep
   \   0000                    PUBLIC  g_EarProtect_flag
   \   0000                    PUBLIC  g_autoswitch_counter
   \   0000                    PUBLIC  g_autoswitch_time
   \   0000                    EXTERN  g_comval
   \   0000                    PUBLIC  g_contrast_num
   \   0000                    PUBLIC  g_decrease_time
   \   0000                    PUBLIC  g_half_hour_counter
   \   0000                    PUBLIC  g_light_flag
   \   0000                    PUBLIC  g_light_mode
   \   0000                    PUBLIC  g_light_time
   \   0000                    PUBLIC  g_rtc_counter
   \   0000                    PUBLIC  g_sleep_time
   \   0000                    PUBLIC  g_standby_time
   \   0000                    EXTERN  sKY_Beep
   \   0000                    EXTERN  ui_run_realtime
   \   0000                    EXTERN  ui_show_lock
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?S_MUL_L02
   \   0000                    EXTERN  ?C_V_SWITCH_L06
   \   0000                    EXTERN  ?BANK_CALL_DIRECT_L08
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    RSEG    COM_MSG
   \   0000            Lightmodeset:
      1          /*
      2          *******************************************************************************
      3          *                ACTOS AP
      4          *        ap common lib message file
      5          *
      6          *        (c) Copyright, Actions Co,Ld.
      7          *             All Right Reserved
      8          *
      9          *  $Id: ap_message2.c,v 1.1.1.1 2006/05/22 03:23:59 selina Exp $
     10          *******************************************************************************
     11          */
     12          #pragma codeseg(COM_MSG)
     13          
     14          #include "ap_common.h"
     15          //#define DEBUG
     16          
     17          #ifdef EAR_PROTECT
     18              #define     EarProctetTimeTick     60    //30 seconds
     19              byte g_decrease_time = 0;
     20              int g_half_hour_counter = 0;
     21              int g_autoswitch_counter = 0;
     22              byte g_EarProtect_flag;
     23              byte EarProtectThreshold;
     24              int g_autoswitch_time;
     25          #endif
     26          BYTE g_light_time=0;    //关背光时间,0.5秒为单位
     27          BYTE g_light_mode=0;    //关亮度模式,0:变暗,1:变黑
     28          BYTE g_contrast_num=0;  //对比度
     29          WORD g_sleep_time=0;    //睡眠时间,0.5秒为单位
     30          WORD g_standby_time=0;    //自动关机时间,0.5秒为单位
     31          WORD g_rtc_counter=0;    //rtc 消息计数
     32          //BYTE charge_flag;
     33          extern  int DealPlayKey(void);
     34          extern bool g_Pausetostop;
     35          extern comval_t g_comval;
     36          //WORD g_ap_event=0;    //事件标志
     37          bool g_light_flag = TRUE;//背景灯开关标志。
     38          /*
     39            * 对于普通按键的处理存在隐患,如果os把普通按键的值定义到0x20 以上,
     40            * ap_get_message() 将不能正确处理, 正确的做法是用9个case, 不用default
     41            */
     42          #if  Msg_KeyEQ > 0x20  || Msg_KeyMenu > 0x20 || \
     43              Msg_KeyNext > 0x20 || Msg_KeyLast > 0x20 || \
     44              Msg_KeyVolAdd > 0x20 || Msg_KeyVolSub > 0x20 || \
     45              Msg_KeyPlayPause > 0x20 || Msg_KeyREC > 0x20 || \
     46              Msg_KeyLoop > 0x20 || Msg_KeyVol > 0x20
     47          
     48          #error os define key greater than 0x20
     49          #endif
     50          void Lightmodeset(bool OnOff)
     51          {
   \   0000  D5                PUSH    DE
     52          
     53              if(g_light_mode==1)
   \   0001  3A0600            LD      A,(g_light_mode)
   \   0004  3D                DEC     A
   \   0005  2005              JR      NZ,?0005
   \   0007            ?0004:
     54              {
     55                  LightOnOff(OnOff);
   \   0007  CD0000            CALL    LWRD LightOnOff
     56              }
     57              else
   \   000A  180B              JR      ?0009
   \   000C            ?0005:
     58              {
     59                  if(!OnOff)SetContrast(0);
   \   000C  AF                XOR     A
   \   000D  B3                OR      E
   \   000E  2804              JR      Z,?0104
   \   0010            ?0007:
     60                  else
   \   0010            ?0008:
     61                      SetContrast(g_contrast_num);
   \   0010  ED5B0700          LD      DE,(g_contrast_num)
   \   0014            ?0104:
   \   0014  CD0000            CALL    LWRD SetContrast
   \   0017            ?0009:
   \   0017            ?0006:
     62          
     63              }
     64          
     65          }
   \   0017  E1                POP     HL
   \   0018  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   001B            ap_message_init:
     66          
     67          /*
     68          ********************************************************************************
     69          * Description : 初始化消息处理
     70          *
     71          * Arguments   : comval, 系统设定值, =null 表示只初始化内部计数器
     72          *
     73          * Returns     :
     74          *
     75          * Notes       :
     76          *
     77          ********************************************************************************
     78          */
     79          void ap_message_init(const comval_t *comval)
     80          {
   \   001B  C5                PUSH    BC
   \   001C  DDE5              PUSH    IX
   \   001E  D5                PUSH    DE
   \   001F  DDE1              POP     IX
     81          
     82              if(comval != NULL)
   \   0021  7B                LD      A,E
   \   0022  B2                OR      D
   \   0023  2848              JR      Z,?0011
   \   0025            ?0010:
     83              {
     84                  g_light_time = comval->LightTime * 2;
   \   0025  DD7E09            LD      A,(IX+9)
   \   0028  87                ADD     A,A
   \   0029  320500            LD      (g_light_time),A
     85                  g_light_mode = comval->Lightmode;
   \   002C  DD7E14            LD      A,(IX+20)
   \   002F  320600            LD      (g_light_mode),A
     86                  g_sleep_time = comval->SleepTime * 60 * 2;
   \   0032  DD4E0B            LD      C,(IX+11)
   \   0035  0600              LD      B,0
   \   0037  113C00            LD      DE,60
   \   003A  CD0000            CALL    LWRD ?S_MUL_L02
   \   003D  EB                EX      DE,HL
   \   003E  29                ADD     HL,HL
   \   003F  220800            LD      (g_sleep_time),HL
     87          
     88                  g_standby_time = comval->StandbyTime * 2;
   \   0042  DD6E0A            LD      L,(IX+10)
   \   0045  60                LD      H,B
   \   0046  29                ADD     HL,HL
   \   0047  220A00            LD      (g_standby_time),HL
     89                  g_contrast_num =  comval->DisplayContrast;
   \   004A  DD7E08            LD      A,(IX+8)
   \   004D  320700            LD      (g_contrast_num),A
     90                  #ifdef EAR_PROTECT
     91                  g_EarProtect_flag = comval->EarProtect_flag;
   \   0050  DD7E18            LD      A,(IX+24)
   \   0053  320000            LD      (g_EarProtect_flag),A
     92                  EarProtectThreshold = comval->EarProtectThreshold;
   \   0056  DD7E19            LD      A,(IX+25)
   \   0059  320100            LD      (EarProtectThreshold),A
     93                  g_autoswitch_time = comval->auto_switchoff_time * 60 * 2;
   \   005C  DD4E1B            LD      C,(IX+27)
   \   005F  DD461C            LD      B,(IX+28)
   \   0062  113C00            LD      DE,60
   \   0065  CD0000            CALL    LWRD ?S_MUL_L02
   \   0068  EB                EX      DE,HL
   \   0069  29                ADD     HL,HL
   \   006A  220200            LD      (g_autoswitch_time),HL
   \   006D            ?0011:
     94                  #endif
     95              }
     96          
     97              g_rtc_counter = 0;
   \   006D  210000            LD      HL,0
   \   0070  220C00            LD      (g_rtc_counter),HL
     98          //    g_light_flag = TRUE;
     99          }
   \   0073  DDE1              POP     IX
   \   0075  C1                POP     BC
   \   0076  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   0079            ap_get_message_core:
    100          
    101          
    102          /*
    103          ********************************************************************************
    104          * Description : 处理系统消息, 返回按键消息, 同时负责开/关背光
    105          *
    106          * Arguments   : key, 系统消息
    107          *
    108          * Returns     : 返回ap能够识别的消息, 如果没有系统消息, 返回 AP_KEY_NULL
    109          *
    110          * Notes       :
    111          
    112          * 按键时序:
    113           *  0.....1.2....1.5........... (s)
    114           *  key    long   hold    up    (>1.2s)
    115           *  key  up            (<1.2s)
    116           *
    117           * key rate: 0.3s
    118          *
    119          ********************************************************************************
    120          */
    121          char ap_get_message_core(char key)
    122          {
   \   0079  C5                PUSH    BC
   \   007A  DDE5              PUSH    IX
   \   007C  DD210000          LD      IX,0
   \   0080  DD39              ADD     IX,SP
   \   0082  D5                PUSH    DE
   \   0083  F5                PUSH    AF
    123              static WORD key_count=0;        //当前按键消息发生的次数
    124              static char key_value=Msg_KeyNull;        //当前按键的值
    125              #ifdef EAR_PROTECT
    126                  char tempVolume;
    127                  bool counter_flag = FALSE;
    128                  
    129                  tempVolume = input8(0x87)&0x1f;
   \   0084  DB87              IN      A,(135)
   \   0086  E61F              AND     31
   \   0088  DD77FC            LD      (IX-4),A
    130                  if (tempVolume > EarProtectThreshold)
   \   008B  47                LD      B,A
   \   008C  3A0100            LD      A,(EarProtectThreshold)
   \   008F  B8                CP      B
   \   0090  3006              JR      NC,?0015
   \   0092            ?0014:
    131                  {                  
    132                             counter_flag = TRUE;
   \   0092  DD36FD01          LD      (IX-3),1

⌨️ 快捷键说明

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