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

📄 ap_message2.lst

📁 5807收音机模块用于炬力平台
💻 LST
📖 第 1 页 / 共 4 页
字号:
    355          //}
    356          
    357          /*
    358          ********************************************************************************
    359          * Description : 清除事件发生标志
    360          *
    361          * Arguments   : event, 事件集合
    362          *
    363          * Returns     :
    364          *
    365          * Notes       :
    366          *
    367          ********************************************************************************
    368          */
    369          //void ap_del_event(WORD event)
    370          //{
    371          //    g_ap_event &= (~event);
    372          //}
    373          
    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          {
   \   0277  C5                PUSH    BC
   \   0278  FDE5              PUSH    IY
   \   027A  DDE5              PUSH    IX
   \   027C  F5                PUSH    AF
   \   027D  D5                PUSH    DE
   \   027E  FDE1              POP     IY
    388              int n=0;    //rtc counter
   \   0280  DD210000          LD      IX,0
   \   0284            ?0092:
    389              char key;
    390          
    391              while(1)
    392              {
    393                  key = ap_get_message();
   \   0284  CD0000            CALL    LWRD ap_get_message
   \   0287  210000            LD      HL,0
   \   028A  39                ADD     HL,SP
   \   028B  77                LD      (HL),A
    394                  if(key == AP_MSG_RTC ||
    395                      key == AP_MSG_CHARGING ||
    396                      key == AP_MSG_WAIT_TIMEOUT)    //sleep 时不管timeout
   \   028C  FE1C              CP      28
   \   028E  2808              JR      Z,?0096
   \   0290  FE1B              CP      27
   \   0292  2804              JR      Z,?0096
   \   0294  FE1E              CP      30
   \   0296  2017              JR      NZ,?0095
   \   0298            ?0096:
   \   0298            ?0097:
   \   0298            ?0094:
    397                  {
    398                      n++;
    399                      if(n >= half_sec) return 0;
   \   0298  FDE5              PUSH    IY
   \   029A  C1                POP     BC
   \   029B  DD23              INC     IX
   \   029D  DDE5              PUSH    IX
   \   029F  E1                POP     HL
   \   02A0  F680              OR      128
   \   02A2  ED42              SBC     HL,BC
   \   02A4  E2A802            JP      PO,?0121
   \   02A7  AC                XOR     H
   \   02A8            ?0121:
   \   02A8  FA8402            JP      M,?0092
   \   02AB            ?0098:
   \   02AB  2E00              LD      L,0
    400                  }
   \   02AD  1811              JR      ?0105
   \   02AF            ?0099:
   \   02AF            ?0095:
    401                  else if(key == AP_KEY_NULL ||
    402                      key == AP_MSG_LOCK ||
    403                      key == (AP_MSG_LOCK | AP_KEY_UP))    //lock 只有up, 没有long/hold
   \   02AF  AF                XOR     A
   \   02B0  B6                OR      (HL)
   \   02B1  28D1              JR      Z,?0092
   \   02B3  FE19              CP      25
   \   02B5  28CD              JR      Z,?0092
   \   02B7  FE39              CP      57
   \   02B9  28C9              JR      Z,?0092
   \   02BB            ?0103:
   \   02BB            ?0104:
   \   02BB            ?0101:
    404                  {
    405                      continue;
   \   02BB            ?0102:
    406                  }
    407                  else
    408                  {
    409                      //here maybe hotkey
    410                      return ap_handle_hotkey(key);
   \   02BB  5F                LD      E,A
   \   02BC  CD0000            CALL    LWRD ap_handle_hotkey
   \   02BF  6F                LD      L,A
    411                  }
   \   02C0            ?0105:
   \   02C0  F1                POP     AF
   \   02C1  DDE1              POP     IX
   \   02C3  FDE1              POP     IY
   \   02C5  C1                POP     BC
   \   02C6  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   02C9            ?0100:
    412              }
    413          
    414          }
   \   02C9            ap_handle_hotkey_core:
    415          
    416          /*
    417          ********************************************************************************
    418          * Description : 处理热键消息, 返回结果消息
    419          *
    420          * Arguments   : key, 按键消息
    421          *
    422          * Returns     : 如果有可识别的热键消息,  返回结果消息
    423                  如果没有可识别的热键消息,  返回0
    424          *
    425          * Notes       :
    426          *
    427          ********************************************************************************
    428          */
    429          char ap_handle_hotkey_core(char key)
    430          {
   \   02C9  D5                PUSH    DE
    431              switch( key )
   \   02CA  CD0000            CALL    LWRD ?C_V_SWITCH_L06
   \   02CD  0700              DEFW    7
   \   02CF  19                DEFB    25
   \   02D0  1A                DEFB    26
   \   02D1  1D                DEFB    29
   \   02D2  1F                DEFB    31
   \   02D3  28                DEFB    40
   \   02D4  81                DEFB    129
   \   02D5  87                DEFB    135
   \   02D6  0A03              DEFW    ?0114
   \   02D8  EA02              DEFW    ?0108
   \   02DA  E602              DEFW    ?0107
   \   02DC  EE02              DEFW    ?0109
   \   02DE  E602              DEFW    ?0107
   \   02E0  E602              DEFW    ?0107
   \   02E2  F202              DEFW    ?0110
   \   02E4  F602              DEFW    ?0111
   \   02E6            ?0107:
    432              {
    433              case AP_KEY_PLAY | AP_KEY_LONG:    //长按play发standby
    434              case AP_MSG_STANDBY:        //自动关机
    435              //case AP_MSG_SLEEP:        //睡眠
    436              //case AP_MSG_LOW_POWER:    //低电自动关机
    437              case AP_MSG_FORCE_STANDBY:    //使用上两个会报label duplicate
    438                  //ap_set_event(AP_EVENT_STANDBY);
    439                  return RESULT_STANDBY;
   \   02E6  2E16              LD      L,22
    440              case AP_KEY_MODE | AP_KEY_LONG:    //长按menu进入main
   \   02E8  1822              JR      ?0115
   \   02EA            ?0108:
    441                  //ap_set_event(AP_EVENT_MAIN);
    442                  return RESULT_MAIN;
   \   02EA  2E19              LD      L,25
    443                  //break;
    444              case AP_KEY_AB | AP_KEY_UP:    //进入录音
   \   02EC  181E              JR      ?0115
   \   02EE            ?0109:
    445                  //ap_set_event(AP_EVENT_RECORD);
    446                  return RESULT_RECORD;
   \   02EE  2E33              LD      L,51
    447              case AP_MSG_USB_PLUGIN:        //进入udisk 模式
   \   02F0  181A              JR      ?0115
   \   02F2            ?0110:
    448                  //ap_set_event(AP_EVENT_UDISK);
    449                  return RESULT_UDISK;
   \   02F2  2E18              LD      L,24
    450              case AP_MSG_LOCK:        //locked
   \   02F4  1816              JR      ?0115
   \   02F6            ?0111:
    451                  if(ui_run_realtime)    //实时模式不显示lock
   \   02F6  3A0000            LD      A,(ui_run_realtime)
   \   02F9  B7                OR      A
   \   02FA  200E              JR      NZ,?0114
   \   02FC            ?0112:
    452                  {
    453                      //TODO: send lock message to message queue
    454                      return 0;
    455                  }
   \   02FC            ?0113:
    456                  else
    457                  {
    458                      ui_show_lock(1);    //这里不处理热键,防止嵌套
   \   02FC  1E01              LD      E,1
   \   02FE  3E00              LD      A,BYTE3 ui_show_lock
   \   0300  210000            LD      HL,LWRD ui_show_lock
   \   0303  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    459                      //ap_set_event(AP_EVENT_REDRAW);
    460                      return RESULT_REDRAW;
   \   0306  2E2E              LD      L,46
    461                  }
   \   0308  1802              JR      ?0115
   \   030A            ?0114:
    462          //    case AP_KEY_UNLOCK:
    463          //        return ui_show_lock(0);
    464              default:
    465                  //here just drop the key
    466                  return 0;
   \   030A  2E00              LD      L,0
    467              }
   \   030C            ?0115:
   \   030C  F1                POP     AF
   \   030D  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   0310            ?0106:
    468          }
    469          
   \   0000                    RSEG    UDATA0
   \   0000            g_EarProtect_flag:
   \   0001                    DEFS    1
   \   0001            EarProtectThreshold:
   \   0002                    DEFS    1
   \   0000                    RSEG    IDATA0
   \   0000            g_decrease_time:
   \   0001                    DEFS    1
   \   0001            g_half_hour_counter:
   \   0003                    DEFS    2
   \   0003            g_light_time:
   \   0004                    DEFS    1
   \   0004            g_sleep_time:
   \   0006                    DEFS    2
   \   0006            g_standby_time:
   \   0008                    DEFS    2
   \   0008            g_rtc_counter:
   \   000A                    DEFS    2
   \   000A            g_charge_counter:
   \   000B                    DEFS    1
   \   000B            ?0006:
   \   000D                    DEFS    2
   \   000D            ?0007:
   \   000E                    DEFS    1
   \   0000                    RSEG    CDATA0
   \   0000  00                DEFB    0
   \   0001  0000              DEFW    0
   \   0003  00                DEFB    0
   \   0004  0000              DEFW    0
   \   0006  0000              DEFW    0
   \   0008  0000              DEFW    0
   \   000A  00                DEFB    0
   \   000B  0000              DEFW    0
   \   000D  00                DEFB    0
   \   000E                    END

Errors: none
Warnings: none
Code size: 784
Constant size: 14
Static variable size: Data(16) Iram(0)

⌨️ 快捷键说明

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