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

📄 ap_message2.lst

📁 MP3 整个 SDK
💻 LST
📖 第 1 页 / 共 3 页
字号:
    289                  else return 0;
    290              }
   \   021C            ?0059:
    291              else if(condition == AP_EVENT_ANY)
   \   021C  FDE5              PUSH    IY
   \   021E  E1                POP     HL
   \   021F  7D                LD      A,L
   \   0220  B4                OR      H
   \   0221  2013              JR      NZ,?0063
   \   0223            ?0062:
    292              {
    293                  if( (g_ap_event & event) != 0) return g_ap_event;
   \   0223  2A0900            LD      HL,(g_ap_event)
   \   0226  DDE5              PUSH    IX
   \   0228  C1                POP     BC
   \   0229  7D                LD      A,L
   \   022A  A1                AND     C
   \   022B  57                LD      D,A
   \   022C  7C                LD      A,H
   \   022D  A0                AND     B
   \   022E  B2                OR      D
   \   022F  2805              JR      Z,?0063
   \   0231            ?0064:
   \   0231            ?0103:
   \   0231  2A0900            LD      HL,(g_ap_event)
   \   0234  1803              JR      ?0066
   \   0236            ?0065:
    294                  else return 0;
    295              }
   \   0236            ?0063:
    296              else return 0;
   \   0236  210000            LD      HL,0
    297          }
   \   0239            ?0066:
   \   0239  DDE1              POP     IX
   \   023B  FDE1              POP     IY
   \   023D  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   0240            ap_del_event:
    298          
    299          /*
    300          ********************************************************************************
    301          * Description : 清除事件发生标志
    302          *
    303          * Arguments   : event, 事件集合
    304          *
    305          * Returns     :
    306          *
    307          * Notes       :
    308          *
    309          ********************************************************************************
    310          */
    311          void ap_del_event(WORD event)
    312          {
   \   0240  C5                PUSH    BC
   \   0241  D5                PUSH    DE
    313              g_ap_event &= (~event);
   \   0242  7B                LD      A,E
   \   0243  42                LD      B,D
   \   0244  2F                CPL
   \   0245  4F                LD      C,A
   \   0246  78                LD      A,B
   \   0247  2F                CPL
   \   0248  47                LD      B,A
   \   0249  210900            LD      HL,g_ap_event
   \   024C  7E                LD      A,(HL)
   \   024D  A1                AND     C
   \   024E  77                LD      (HL),A
   \   024F  23                INC     HL
   \   0250  7E                LD      A,(HL)
   \   0251  A0                AND     B
   \   0252  77                LD      (HL),A
    314          }
   \   0253  E1                POP     HL
   \   0254  C1                POP     BC
   \   0255  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   0258            ap_sleep:
    315          
    316          /*
    317          ********************************************************************************
    318          * Description : 睡眠指定的时间
    319          *
    320          * Arguments   : half_sec, 时间, 0.5秒为单位
    321          *
    322          * Returns     : 如果指定的时间内没有其他消息产生, 返回0
    323                  如果指定的时间内有其他消息产生, 返回该消息
    324          * Notes       : 如果指定的时间内有其他消息产生, 睡眠的时间将< 指定的时间
    325          *
    326          ********************************************************************************
    327          */
    328          char ap_sleep(int half_sec)
    329          {
   \   0258  C5                PUSH    BC
   \   0259  FDE5              PUSH    IY
   \   025B  DDE5              PUSH    IX
   \   025D  F5                PUSH    AF
   \   025E  D5                PUSH    DE
   \   025F  FDE1              POP     IY
    330              int n=0;    //rtc counter
   \   0261  DD210000          LD      IX,0
   \   0265            ?0068:
    331              char key;
    332          
    333              while(1)
    334              {
    335                  key = ap_get_message();
   \   0265  CD0000            CALL    LWRD ap_get_message
   \   0268  210000            LD      HL,0
   \   026B  39                ADD     HL,SP
   \   026C  77                LD      (HL),A
    336                  if(key == AP_MSG_RTC ||
    337                      key == AP_MSG_CHARGING ||
    338                      key == AP_MSG_WAIT_TIMEOUT)    //sleep 时不管timeout
   \   026D  FE1C              CP      28
   \   026F  2808              JR      Z,?0072
   \   0271  FE1B              CP      27
   \   0273  2804              JR      Z,?0072
   \   0275  FE1E              CP      30
   \   0277  2017              JR      NZ,?0071
   \   0279            ?0072:
   \   0279            ?0073:
   \   0279            ?0070:
    339                  {
    340                      n++;
    341                      if(n >= half_sec) return 0;
   \   0279  FDE5              PUSH    IY
   \   027B  C1                POP     BC
   \   027C  DD23              INC     IX
   \   027E  DDE5              PUSH    IX
   \   0280  E1                POP     HL
   \   0281  F680              OR      128
   \   0283  ED42              SBC     HL,BC
   \   0285  E28902            JP      PO,?0105
   \   0288  AC                XOR     H
   \   0289            ?0105:
   \   0289  FA6502            JP      M,?0068
   \   028C            ?0074:
   \   028C  2E00              LD      L,0
    342                  }
   \   028E  1811              JR      ?0081
   \   0290            ?0075:
   \   0290            ?0071:
    343                  else if(key == AP_KEY_NULL ||
    344                      key == AP_MSG_LOCK ||
    345                      key == (AP_MSG_LOCK | AP_KEY_UP))    //lock 只有up, 没有long/hold
   \   0290  AF                XOR     A
   \   0291  B6                OR      (HL)
   \   0292  28D1              JR      Z,?0068
   \   0294  FE19              CP      25
   \   0296  28CD              JR      Z,?0068
   \   0298  FE39              CP      57
   \   029A  28C9              JR      Z,?0068
   \   029C            ?0079:
   \   029C            ?0080:
   \   029C            ?0077:
    346                  {
    347                      continue;
   \   029C            ?0078:
    348                  }
    349                  else
    350                  {
    351                      //here maybe hotkey
    352                      return ap_handle_hotkey(key);
   \   029C  5F                LD      E,A
   \   029D  CD0000            CALL    LWRD ap_handle_hotkey
   \   02A0  6F                LD      L,A
    353                  }
   \   02A1            ?0081:
   \   02A1  F1                POP     AF
   \   02A2  DDE1              POP     IX
   \   02A4  FDE1              POP     IY
   \   02A6  C1                POP     BC
   \   02A7  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   02AA            ?0076:
    354              }
    355          
    356          }
   \   02AA            ap_handle_hotkey_core:
    357          
    358          /*
    359          ********************************************************************************
    360          * Description : 处理热键消息, 返回结果消息
    361          *
    362          * Arguments   : key, 按键消息
    363          *
    364          * Returns     : 如果有可识别的热键消息,  返回结果消息
    365                  如果没有可识别的热键消息,  返回0
    366          *
    367          * Notes       :
    368          *
    369          ********************************************************************************
    370          */
    371          char ap_handle_hotkey_core(char key)
    372          {
   \   02AA  D5                PUSH    DE
    373              switch( key )
   \   02AB  CD0000            CALL    LWRD ?C_V_SWITCH_L06
   \   02AE  0700              DEFW    7
   \   02B0  19                DEFB    25
   \   02B1  1A                DEFB    26
   \   02B2  1D                DEFB    29
   \   02B3  1F                DEFB    31
   \   02B4  31                DEFB    49
   \   02B5  81                DEFB    129
   \   02B6  90                DEFB    144
   \   02B7  0903              DEFW    ?0090
   \   02B9  D102              DEFW    ?0084
   \   02BB  C702              DEFW    ?0083
   \   02BD  DB02              DEFW    ?0085
   \   02BF  C702              DEFW    ?0083
   \   02C1  C702              DEFW    ?0083
   \   02C3  E502              DEFW    ?0086
   \   02C5  EF02              DEFW    ?0087
   \   02C7            ?0083:
    374              {
    375              case AP_KEY_PLAY | AP_KEY_LONG:    //长按play发standby
    376              case AP_MSG_STANDBY:        //自动关机
    377              //case AP_MSG_SLEEP:        //睡眠
    378              //case AP_MSG_LOW_POWER:    //低电自动关机
    379              case AP_MSG_FORCE_STANDBY:    //使用上两个会报label duplicate
    380                  ap_set_event(AP_EVENT_STANDBY);
   \   02C7  110200            LD      DE,2
   \   02CA  CD0F03            CALL    LWRD ?0108
    381                  return RESULT_STANDBY;
   \   02CD  2E02              LD      L,2
    382              case AP_KEY_MODE | AP_KEY_LONG:    //长按menu进入main
   \   02CF  183A              JR      ?0091
   \   02D1            ?0084:
    383                  ap_set_event(AP_EVENT_MAIN);
   \   02D1  110100            LD      DE,1
   \   02D4  CD0F03            CALL    LWRD ?0108
    384                  return RESULT_MAIN;
   \   02D7  2E0A              LD      L,10
    385          
    386              case AP_KEY_AB | AP_KEY_UP:    //进入录音
   \   02D9  1830              JR      ?0091
   \   02DB            ?0085:
    387                  ap_set_event(AP_EVENT_RECORD);
   \   02DB  110400            LD      DE,4
   \   02DE  CD0F03            CALL    LWRD ?0108
    388                  return RESULT_RECORD;
   \   02E1  2E09              LD      L,9
    389              case AP_MSG_USB_PLUGIN:        //进入udisk 模式
   \   02E3  1826              JR      ?0091
   \   02E5            ?0086:
    390                  ap_set_event(AP_EVENT_UDISK);
   \   02E5  110800            LD      DE,8
   \   02E8  CD0F03            CALL    LWRD ?0108
    391                  return RESULT_UDISK;
   \   02EB  2E04              LD      L,4
    392              case AP_MSG_LOCK:        //locked
   \   02ED  181C              JR      ?0091
   \   02EF            ?0087:
    393                  if(ui_run_realtime)    //实时模式不显示lock
   \   02EF  3A0000            LD      A,(ui_run_realtime)
   \   02F2  B7                OR      A
   \   02F3  2014              JR      NZ,?0090
   \   02F5            ?0088:
    394                  {
    395                      //TODO: send lock message to message queue
    396                      return 0;
    397                  }
   \   02F5            ?0089:
    398                  else
    399                  {
    400                      ui_show_lock(1);    //这里不处理热键,防止嵌套
   \   02F5  1E01              LD      E,1
   \   02F7  3E00              LD      A,BYTE3 ui_show_lock
   \   02F9  210000            LD      HL,LWRD ui_show_lock
   \   02FC  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    401                      ap_set_event(AP_EVENT_REDRAW);
   \   02FF  111000            LD      DE,16
   \   0302  CD0F03            CALL    LWRD ?0108
    402                      return RESULT_REDRAW;
   \   0305  2E32              LD      L,50
    403                  }
   \   0307  1802              JR      ?0091
   \   0309            ?0090:
    404              default:
    405                  //here just drop the key
    406                  return 0;
   \   0309  2E00              LD      L,0
    407              }
   \   030B            ?0091:
   \   030B  F1                POP     AF
   \   030C  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   030F            ?0108:
   \   030F  3E00              LD      A,BYTE3 ap_set_event
   \   0311  21E701            LD      HL,LWRD ap_set_event
   \   0314  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
   \   0317            ?0082:
    408          }
    409          
   \   0000                    RSEG    IDATA0
   \   0000            g_light_time:
   \   0001                    DEFS    1
   \   0001            g_light_mode:
   \   0002                    DEFS    1
   \   0002            g_contrast_num:
   \   0003                    DEFS    1
   \   0003            g_sleep_time:
   \   0005                    DEFS    2
   \   0005            g_standby_time:
   \   0007                    DEFS    2
   \   0007            g_rtc_counter:
   \   0009                    DEFS    2
   \   0009            g_ap_event:
   \   000B                    DEFS    2
   \   000B            g_light_flag:
   \   000C                    DEFS    1
   \   000C            ?0012:
   \   000E                    DEFS    2
   \   000E            ?0013:
   \   000F                    DEFS    1
   \   0000                    RSEG    CDATA0
   \   0000  00                DEFB    0
   \   0001  00                DEFB    0
   \   0002  00                DEFB    0
   \   0003  0000              DEFW    0
   \   0005  0000              DEFW    0
   \   0007  0000              DEFW    0
   \   0009  0000              DEFW    0
   \   000B  01                DEFB    1
   \   000C  0000              DEFW    0
   \   000E  00                DEFB    0
   \   000F                    END

Errors: none
Warnings: none
Code size: 791
Constant size: 15
Static variable size: Data(15) Iram(0)

⌨️ 快捷键说明

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