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

📄 ap_message2.lst

📁 炬力方案176*132软件源码,适用于AK1025
💻 LST
📖 第 1 页 / 共 4 页
字号:
    374          /*
    375          ********************************************************************************
    376          * Description : 睡眠指定的时间
    377          *
    378          * Arguments   : half_sec, 时间, 0.5秒为单位
    379          *
    380          * Returns     : 如果指定的时间内没有其他消息产生, 返回0
    381                  如果指定的时间内有其他消息产生, 返回该消息
    382          * Notes       : 如果指定的时间内有其他消息产生, 睡眠的时间将< 指定的时间
    383          *
    384          ********************************************************************************
    385          */
    386          char ap_sleep(int half_sec)
    387          {
   \   029B  C5                PUSH    BC
   \   029C  DDE5              PUSH    IX
   \   029E  F5                PUSH    AF
   \   029F  D5                PUSH    DE
   \   02A0  DDE1              POP     IX
    388              unsigned char n=0;    //rtc counter
   \   02A2  210100            LD      HL,1
   \   02A5  39                ADD     HL,SP
   \   02A6  3600              LD      (HL),0
   \   02A8            ?0078:
    389              char key;
    390          
    391              while(1)
    392              {
    393                  key = ap_get_message();
   \   02A8  CD0000            CALL    LWRD ap_get_message
   \   02AB  210000            LD      HL,0
   \   02AE  39                ADD     HL,SP
   \   02AF  77                LD      (HL),A
    394                  if(key == AP_MSG_RTC ||
    395                      key == AP_MSG_CHARGING ||
    396                      key == AP_MSG_WAIT_TIMEOUT)    //sleep 时不管timeout
   \   02B0  FE1C              CP      28
   \   02B2  2808              JR      Z,?0082
   \   02B4  FE1B              CP      27
   \   02B6  2804              JR      Z,?0082
   \   02B8  FE1E              CP      30
   \   02BA  2017              JR      NZ,?0081
   \   02BC            ?0082:
   \   02BC            ?0083:
   \   02BC            ?0080:
    397                  {
    398                      n++;
   \   02BC  23                INC     HL
   \   02BD  34                INC     (HL)
    399                      if(n >= half_sec) return 0;
   \   02BE  6E                LD      L,(HL)
   \   02BF  2600              LD      H,0
   \   02C1  DDE5              PUSH    IX
   \   02C3  C1                POP     BC
   \   02C4  F680              OR      128
   \   02C6  ED42              SBC     HL,BC
   \   02C8  E2CC02            JP      PO,?0111
   \   02CB  AC                XOR     H
   \   02CC            ?0111:
   \   02CC  FAA802            JP      M,?0078
   \   02CF            ?0084:
   \   02CF  2E00              LD      L,0
    400                  }
   \   02D1  1819              JR      ?0091
   \   02D3            ?0085:
   \   02D3            ?0081:
    401                  else if(key == AP_KEY_NULL ||
    402                      key == AP_MSG_UNLOCK ||
    403                      key == (AP_MSG_UNLOCK | AP_KEY_UP) ||
    404                      key == AP_MSG_LOCK ||
    405                      key == (AP_MSG_LOCK | AP_KEY_UP))    //lock 只有up, 没有long/hold
   \   02D3  AF                XOR     A
   \   02D4  B6                OR      (HL)
   \   02D5  28D1              JR      Z,?0078
   \   02D7  FE18              CP      24
   \   02D9  28CD              JR      Z,?0078
   \   02DB  FE38              CP      56
   \   02DD  28C9              JR      Z,?0078
   \   02DF  FE19              CP      25
   \   02E1  28C5              JR      Z,?0078
   \   02E3  FE39              CP      57
   \   02E5  28C1              JR      Z,?0078
   \   02E7            ?0089:
   \   02E7            ?0090:
   \   02E7            ?0087:
    406                  {
    407                      continue;
   \   02E7            ?0088:
    408                  }
    409                  else
    410                  {
    411                      //here maybe hotkey
    412                      return ap_handle_hotkey(key);
   \   02E7  5F                LD      E,A
   \   02E8  CD0000            CALL    LWRD ap_handle_hotkey
   \   02EB  6F                LD      L,A
    413                  }
   \   02EC            ?0091:
   \   02EC  F1                POP     AF
   \   02ED  DDE1              POP     IX
   \   02EF  C1                POP     BC
   \   02F0  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   02F3            ?0086:
    414              }
    415          
    416          }
   \   02F3            ap_handle_hotkey_core:
    417          
    418          /*
    419          ********************************************************************************
    420          * Description : 处理热键消息, 返回结果消息
    421          *
    422          * Arguments   : key, 按键消息
    423          *
    424          * Returns     : 如果有可识别的热键消息,  返回结果消息
    425                  如果没有可识别的热键消息,  返回0
    426          *
    427          * Notes       :
    428          *
    429          ********************************************************************************
    430          */
    431          char ap_handle_hotkey_core(char key)
    432          {
   \   02F3  D5                PUSH    DE
    433              switch( key )
   \   02F4  CD0000            CALL    LWRD ?C_V_SWITCH_L06
   \   02F7  0900              DEFW    9
   \   02F9  18                DEFB    24
   \   02FA  19                DEFB    25
   \   02FB  1A                DEFB    26
   \   02FC  1D                DEFB    29
   \   02FD  1F                DEFB    31
   \   02FE  31                DEFB    49
   \   02FF  81                DEFB    129
   \   0300  8B                DEFB    139
   \   0301  90                DEFB    144
   \   0302  4003              DEFW    ?0101
   \   0304  1E03              DEFW    ?0095
   \   0306  1603              DEFW    ?0093
   \   0308  1A03              DEFW    ?0094
   \   030A  2203              DEFW    ?0096
   \   030C  1A03              DEFW    ?0094
   \   030E  1A03              DEFW    ?0094
   \   0310  2603              DEFW    ?0097
   \   0312  2A03              DEFW    ?0098
   \   0314  2A03              DEFW    ?0098
   \   0316            ?0093:
    434              {
    435              case AP_MSG_LOW_POWER_MY:
    436                  return RESULT_STANDBYY;
   \   0316  2ECA              LD      L,202
    437                  
    438              case AP_KEY_PLAY | AP_KEY_LONG:    //长按play发standby
   \   0318  1828              JR      ?0102
   \   031A            ?0094:
    439              case AP_MSG_STANDBY:        //自动关机
    440              //case AP_MSG_SLEEP:        //睡眠
    441              //case AP_MSG_LOW_POWER:    //低电自动关机
    442              case AP_MSG_FORCE_STANDBY:    //使用上两个会报label duplicate
    443                  return RESULT_STANDBY;
   \   031A  2E02              LD      L,2
    444              case AP_KEY_MODE | AP_KEY_LONG:    //长按menu进入main
   \   031C  1824              JR      ?0102
   \   031E            ?0095:
    445                  return RESULT_MAIN;
   \   031E  2E0A              LD      L,10
    446          
    447              case AP_KEY_AB | AP_KEY_UP:    //进入录音
   \   0320  1820              JR      ?0102
   \   0322            ?0096:
    448                  return RESULT_RECORD;
   \   0322  2E09              LD      L,9
    449              case AP_MSG_USB_PLUGIN:        //进入udisk 模式
   \   0324  181C              JR      ?0102
   \   0326            ?0097:
    450                  return RESULT_UDISK;
   \   0326  2E04              LD      L,4
    451              case AP_MSG_LOCK:        //locked
   \   0328  1818              JR      ?0102
   \   032A            ?0098:
    452              case AP_MSG_UNLOCK:         //unlocked
    453                  if(ui_run_realtime)    //实时模式不显示lock
   \   032A  3A0000            LD      A,(ui_run_realtime)
   \   032D  B7                OR      A
   \   032E  2010              JR      NZ,?0101
   \   0330            ?0099:
    454                  {
    455                      //TODO: send lock message to message queue
    456                      return 0;
    457                  }
   \   0330            ?0100:
    458                  else
    459                  {
    460                      ///-ui_show_lock(1);    //这里不处理热键,防止嵌套
    461                      ui_show_lock(key - AP_MSG_UNLOCK);
   \   0330  7B                LD      A,E
   \   0331  C6E8              ADD     A,232
   \   0333  5F                LD      E,A
   \   0334  3E00              LD      A,BYTE3 ui_show_lock
   \   0336  210000            LD      HL,LWRD ui_show_lock
   \   0339  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    462                      return RESULT_REDRAW;
   \   033C  2E32              LD      L,50
    463                  }
   \   033E  1802              JR      ?0102
   \   0340            ?0101:
    464              default:
    465                  //here just drop the key
    466                  return 0;
   \   0340  2E00              LD      L,0
    467              }
   \   0342            ?0102:
   \   0342  F1                POP     AF
   \   0343  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   0346            ?0092:
    468          }
   \   0000                    RSEG    UDATA0
   \   0000            g_EarProtect_flag:
   \   0001                    DEFS    1
   \   0001            EarProtectThreshold:
   \   0002                    DEFS    1
   \   0002            g_autoswitch_time:
   \   0004                    DEFS    2
   \   0000                    RSEG    IDATA0
   \   0000            g_decrease_time:
   \   0001                    DEFS    1
   \   0001            g_half_hour_counter:
   \   0003                    DEFS    2
   \   0003            g_autoswitch_counter:
   \   0005                    DEFS    2
   \   0005            g_light_time:
   \   0006                    DEFS    1
   \   0006            g_light_mode:
   \   0007                    DEFS    1
   \   0007            g_contrast_num:
   \   0008                    DEFS    1
   \   0008            g_sleep_time:
   \   000A                    DEFS    2
   \   000A            g_standby_time:
   \   000C                    DEFS    2
   \   000C            g_rtc_counter:
   \   000E                    DEFS    2
   \   000E            g_light_flag:
   \   000F                    DEFS    1
   \   000F            ?0012:
   \   0011                    DEFS    2
   \   0011            ?0013:
   \   0012                    DEFS    1
   \   0000                    RSEG    CDATA0
   \   0000  00                DEFB    0
   \   0001  0000              DEFW    0
   \   0003  0000              DEFW    0
   \   0005  00                DEFB    0
   \   0006  00                DEFB    0
   \   0007  00                DEFB    0
   \   0008  0000              DEFW    0
   \   000A  0000              DEFW    0
   \   000C  0000              DEFW    0
   \   000E  01                DEFB    1
   \   000F  0000              DEFW    0
   \   0011  00                DEFB    0
   \   0012                    END

Errors: none
Warnings: none
Code size: 838
Constant size: 18
Static variable size: Data(22) Iram(0)

⌨️ 快捷键说明

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