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

📄 ap_message2.lst

📁 action mp3 devo,eki e,eikf, kdife l
💻 LST
📖 第 1 页 / 共 3 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       12/Apr/106  09:56:14 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d35f\ap\common\ap_message2.c              #
#       List file     =  d:\case_i_d35f\ap\ap_main\list\ap_message2.lst      #
#       Object file   =  d:\case_i_d35f\ap\ap_main\release\obj\ap_message2.r01#
#       Command line  =  -v0 -mb -OD:\case_i_d35f\ap\ap_main\release\Obj\    #
#                        -e -K -w -gA -s9 -RCODE -r0 -DNAPDEBUG              #
#                        -LD:\case_i_d35f\ap\ap_main\List\ -q -t8 -X         #
#                        -Id:\sdk_i_35f\inc\ -Id:\case_i_d35f\inc\           #
#                        d:\case_i_d35f\AP\COMMON\ap_message2.c              #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    ap_message2(17)
   \   0000                    RSEG    COM_MSG(0)
   \   0000                    RSEG    IDATA0(0)
   \   0000                    RSEG    CDATA0(0)
   \   0000                    PUBLIC  ap_del_event
   \   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_ap_event
   \   0000                    PUBLIC  g_light_time
   \   0000                    PUBLIC  g_rtc_counter
   \   0000                    PUBLIC  g_sleep_time
   \   0000                    PUBLIC  g_standby_time
   \   0000                    EXTERN  sKY_CloseBacklight
   \   0000                    EXTERN  sKY_OpenBacklight
   \   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            ap_message_init:
      1          /*
      2          *******************************************************************************
      3          *                ACTOS AP
      4          *        ap common lib message file
      5          *
      6          *        (c) Copyright, Actions Co,Ld.
      7          *             All Right Reserved
      8          *
      9          *******************************************************************************
     10          */
     11          #pragma codeseg(COM_MSG)
     12          
     13          #include "ap_common.h"
     14          
     15          BYTE g_light_time=0;    //关背光时间,0.5秒为单位
     16          WORD g_sleep_time=0;    //睡眠时间,0.5秒为单位
     17          WORD g_standby_time=0;    //自动关机时间,0.5秒为单位
     18          WORD g_rtc_counter=0;    //rtc 消息计数
     19          
     20          WORD g_ap_event=0;    //事件标志
     21          /*
     22          char g_ap_message[4]={0, 0, 0, 0};    //ap 消息队列
     23          char g_ap_message_index=0;        //ap 消息队列的读写指针
     24          */
     25          
     26          /*
     27            * 对于普通按键的处理存在隐患,如果os把普通按键的值定义到0x20 以上,
     28            * ap_get_message() 将不能正确处理, 正确的做法是用9个case, 不用default
     29            */
     30          #if  Msg_KeyEQ > 0x20  || Msg_KeyMenu > 0x20 || \
     31              Msg_KeyNext > 0x20 || Msg_KeyLast > 0x20 || \
     32              Msg_KeyVolAdd > 0x20 || Msg_KeyVolSub > 0x20 || \
     33              Msg_KeyPlayPause > 0x20 || Msg_KeyREC > 0x20 || Msg_KeyLoop > 0x20
     34          
     35          #error os define key greater than 0x20
     36          #endif
     37          
     38          /*
     39          ********************************************************************************
     40          * Description : 初始化消息处理
     41          *
     42          * Arguments   : comval, 系统设定值, =null 表示只初始化内部计数器
     43          *
     44          * Returns     :
     45          *
     46          * Notes       :
     47          *
     48          ********************************************************************************
     49          */
     50          void ap_message_init(const comval_t *comval)
     51          {
   \   0000  C5                PUSH    BC
   \   0001  DDE5              PUSH    IX
   \   0003  D5                PUSH    DE
   \   0004  DDE1              POP     IX
     52          
     53              if(comval != NULL)
   \   0006  7B                LD      A,E
   \   0007  B2                OR      D
   \   0008  281F              JR      Z,?0005
   \   000A            ?0004:
     54              {
     55                  g_light_time = comval->LightTime * 2;
   \   000A  DD7E09            LD      A,(IX+9)
   \   000D  87                ADD     A,A
   \   000E  320000            LD      (g_light_time),A
     56          
     57                  g_sleep_time = comval->SleepTime * 60 * 2;
   \   0011  DD4E0B            LD      C,(IX+11)
   \   0014  0600              LD      B,0
   \   0016  113C00            LD      DE,60
   \   0019  CD0000            CALL    LWRD ?S_MUL_L02
   \   001C  EB                EX      DE,HL
   \   001D  29                ADD     HL,HL
   \   001E  220100            LD      (g_sleep_time),HL
     58          
     59                  g_standby_time = comval->StandbyTime * 2;
   \   0021  DD6E0A            LD      L,(IX+10)
   \   0024  60                LD      H,B
   \   0025  29                ADD     HL,HL
   \   0026  220300            LD      (g_standby_time),HL
   \   0029            ?0005:
     60              }
     61          
     62              g_rtc_counter = 0;
   \   0029  210000            LD      HL,0
   \   002C  220500            LD      (g_rtc_counter),HL
     63          }
   \   002F  DDE1              POP     IX
   \   0031  C1                POP     BC
   \   0032  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   0035            ap_get_message_core:
     64          
     65          
     66          /*
     67          ********************************************************************************
     68          * Description : 处理系统消息, 返回按键消息, 同时负责开/关背光
     69          *
     70          * Arguments   : key, 系统消息
     71          *
     72          * Returns     : 返回ap能够识别的消息, 如果没有系统消息, 返回 AP_KEY_NULL
     73          *
     74          * Notes       :
     75          
     76          * 按键时序:
     77           *  0.....1.2....1.5........... (s)
     78           *  key    long   hold    up    (>1.2s)
     79           *  key  up            (<1.2s)
     80           *
     81           * key rate: 0.3s
     82          *
     83          ********************************************************************************
     84          */
     85          char ap_get_message_core(char key)
     86          {
   \   0035  C5                PUSH    BC
   \   0036  DDE5              PUSH    IX
   \   0038  DD210000          LD      IX,0
   \   003C  DD39              ADD     IX,SP
   \   003E  D5                PUSH    DE
     87              static WORD key_count=0;        //当前按键消息发生的次数
     88              static char key_value=Msg_KeyNull;        //当前按键的值
     89              //char key;
     90          /*
     91              //检查ap消息队列
     92              key = g_ap_message[g_ap_message_index];
     93              if(key != 0)
     94              {
     95                  g_ap_message_index++;
     96          
     97                  //check if exeeds tail
     98                  if( g_ap_message_index >= sizeof(g_ap_message)) g_ap_message_index = 0;
     99          
    100                  return key;
    101              }
    102          */
    103              //获取按键,没有即返回
    104              //key = GetSysMsg();
    105              //if(key == Msg_KeyNull) return AP_KEY_NULL;
    106          
    107              //和上次的一样
    108              if(key == key_value)
   \   003F  3A0B00            LD      A,(?0007)
   \   0042  47                LD      B,A
   \   0043  7B                LD      A,E
   \   0044  B8                CP      B
   \   0045  2034              JR      NZ,?0009
   \   0047            ?0008:
    109              {
    110                  //开背光
    111                  if(g_light_time != 0) sKY_OpenBacklight();
   \   0047  3A0000            LD      A,(g_light_time)
   \   004A  B7                OR      A
   \   004B  2803              JR      Z,?0011
   \   004D            ?0010:
   \   004D  CD0000            CALL    LWRD sKY_OpenBacklight
   \   0050            ?0011:
    112          
    113                  g_rtc_counter = 0;
   \   0050  210000            LD      HL,0
   \   0053  220500            LD      (g_rtc_counter),HL
    114                  key_count++;
   \   0056  2A0900            LD      HL,(?0006)
   \   0059  23                INC     HL
   \   005A  220900            LD      (?0006),HL
    115                  //key rate: ...0.3...0.3...0.3...0.3
    116                  if(key_count == 4) key |= AP_KEY_LONG;    //=1.2s
   \   005D  3E04              LD      A,4
   \   005F  AD                XOR     L
   \   0060  B4                OR      H
   \   0061  2007              JR      NZ,?0013
   \   0063            ?0012:
   \   0063  DDCBFEFE          SET     7,(IX-2)
   \   0067  C36901            JP      LWRD ?0047
   \   006A            ?0013:
    117                  else if(key_count > 4) key |= AP_KEY_HOLD;
   \   006A  4D                LD      C,L
   \   006B  44                LD      B,H
   \   006C  210400            LD      HL,4
   \   006F  ED42              SBC     HL,BC
   \   0071  D26901            JP      NC,?0047
   \   0074            ?0015:
   \   0074  DDCBFEF6          SET     6,(IX-2)
   \   0078            ?0016:
   \   0078            ?0014:
    118                  return key;
   \   0078  C36901            JP      LWRD ?0047
    119              }
   \   007B            ?0009:
    120          
    121              switch( key )
   \   007B  CD0000            CALL    LWRD ?C_V_SWITCH_L06
   \   007E  0C00              DEFW    12
   \   0080  00                DEFB    0
   \   0081  22                DEFB    34
   \   0082  24                DEFB    36
   \   0083  30                DEFB    48
   \   0084  31                DEFB    49
   \   0085  80                DEFB    128
   \   0086  81                DEFB    129
   \   0087  82                DEFB    130
   \   0088  91                DEFB    145
   \   0089  92                DEFB    146
   \   008A  B0                DEFB    176
   \   008B  B1                DEFB    177
   \   008C  5201              DEFW    ?0045
   \   008E  4C01              DEFW    ?0044
   \   0090  4601              DEFW    ?0043
   \   0092  2C01              DEFW    ?0041
   \   0094  1001              DEFW    ?0037
   \   0096  2601              DEFW    ?0040
   \   0098  B500              DEFW    ?0019
   \   009A  B500              DEFW    ?0019
   \   009C  A600              DEFW    ?0018
   \   009E  A600              DEFW    ?0018
   \   00A0  2C01              DEFW    ?0041
   \   00A2  3201              DEFW    ?0042
   \   00A4  2C01              DEFW    ?0041
   \   00A6            ?0018:
    122              {
    123              case Msg_KeyLongUp:
    124          /*
    125                  key_count = 0;
    126                  g_rtc_counter = 0;
    127          //        key  = key_value | AP_KEY_LONG;
    128                  //这个版本不长按抬起功能
    129                  key  = key_value | AP_KEY_UP;
    130                  break;
    131          */
    132          
    133              case Msg_KeyShortUp:
    134                  key_count = 0;
   \   00A6  210000            LD      HL,0
   \   00A9  220900            LD      (?0006),HL
    135                  g_rtc_counter = 0;
   \   00AC  220500            LD      (g_rtc_counter),HL
    136                  key = key_value | AP_KEY_UP;
   \   00AF  78                LD      A,B
   \   00B0  CBEF              SET     5,A
   \   00B2  C34101            JP      LWRD ?0085
    137                  break;
   \   00B5            ?0019:
    138          
    139          
    140              case MSG_RTC2HZ:        //rtc
    141              case MSG_BAT_V_CHG:        //charging & rtc
    142                  g_rtc_counter++;
   \   00B5  2A0500            LD      HL,(g_rtc_counter)
   \   00B8  23                INC     HL
   \   00B9  220500            LD      (g_rtc_counter),HL
    143          
    144                  if(g_light_time != 0 && g_rtc_counter == g_light_time)    //自动关背光
   \   00BC  3A0000            LD      A,(g_light_time)
   \   00BF  B7                OR      A
   \   00C0  280A              JR      Z,?0021
   \   00C2  4F                LD      C,A
   \   00C3  0600              LD      B,0

⌨️ 快捷键说明

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