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

📄 ap_message2_standby.lst

📁 炬力方案176*132软件源码,适用于AK1025
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   0222            ?0063:
    288                  else return 0;
    289              }
   \   0222            ?0061:
    290              else if(condition == AP_EVENT_ANY)
   \   0222  FDE5              PUSH    IY
   \   0224  E1                POP     HL
   \   0225  7D                LD      A,L
   \   0226  B4                OR      H
   \   0227  2013              JR      NZ,?0065
   \   0229            ?0064:
    291              {
    292                  if( (g_ap_event & event) != 0) return g_ap_event;
   \   0229  2A0900            LD      HL,(g_ap_event)
   \   022C  DDE5              PUSH    IX
   \   022E  C1                POP     BC
   \   022F  7D                LD      A,L
   \   0230  A1                AND     C
   \   0231  57                LD      D,A
   \   0232  7C                LD      A,H
   \   0233  A0                AND     B
   \   0234  B2                OR      D
   \   0235  2805              JR      Z,?0065
   \   0237            ?0066:
   \   0237            ?0104:
   \   0237  2A0900            LD      HL,(g_ap_event)
   \   023A  1803              JR      ?0068
   \   023C            ?0067:
    293                  else return 0;
    294              }
   \   023C            ?0065:
    295              else return 0;
   \   023C  210000            LD      HL,0
    296          }
   \   023F            ?0068:
   \   023F  DDE1              POP     IX
   \   0241  FDE1              POP     IY
   \   0243  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   0246            ap_del_event:
    297          
    298          /*
    299          ********************************************************************************
    300          * Description : 清除事件发生标志
    301          *
    302          * Arguments   : event, 事件集合
    303          *
    304          * Returns     :
    305          *
    306          * Notes       :
    307          *
    308          ********************************************************************************
    309          */
    310          void ap_del_event(WORD event)
    311          {
   \   0246  C5                PUSH    BC
   \   0247  D5                PUSH    DE
    312              g_ap_event &= (~event);
   \   0248  7B                LD      A,E
   \   0249  42                LD      B,D
   \   024A  2F                CPL
   \   024B  4F                LD      C,A
   \   024C  78                LD      A,B
   \   024D  2F                CPL
   \   024E  47                LD      B,A
   \   024F  210900            LD      HL,g_ap_event
   \   0252  7E                LD      A,(HL)
   \   0253  A1                AND     C
   \   0254  77                LD      (HL),A
   \   0255  23                INC     HL
   \   0256  7E                LD      A,(HL)
   \   0257  A0                AND     B
   \   0258  77                LD      (HL),A
    313          }
   \   0259  E1                POP     HL
   \   025A  C1                POP     BC
   \   025B  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   025E            ap_sleep:
    314          
    315          /*
    316          ********************************************************************************
    317          * Description : 睡眠指定的时间
    318          *
    319          * Arguments   : half_sec, 时间, 0.5秒为单位
    320          *
    321          * Returns     : 如果指定的时间内没有其他消息产生, 返回0
    322                  如果指定的时间内有其他消息产生, 返回该消息
    323          * Notes       : 如果指定的时间内有其他消息产生, 睡眠的时间将< 指定的时间
    324          *
    325          ********************************************************************************
    326          */
    327          char ap_sleep(int half_sec)
    328          {
   \   025E  C5                PUSH    BC
   \   025F  FDE5              PUSH    IY
   \   0261  DDE5              PUSH    IX
   \   0263  F5                PUSH    AF
   \   0264  D5                PUSH    DE
   \   0265  FDE1              POP     IY
    329              int n=0;    //rtc counter
   \   0267  DD210000          LD      IX,0
   \   026B            ?0070:
    330              char key;
    331          
    332              while(1)
    333              {
    334                  key = ap_get_message();
   \   026B  CD0000            CALL    LWRD ap_get_message
   \   026E  210000            LD      HL,0
   \   0271  39                ADD     HL,SP
   \   0272  77                LD      (HL),A
    335                  if(key == AP_MSG_RTC ||
    336                      key == AP_MSG_CHARGING ||
    337                      key == AP_MSG_WAIT_TIMEOUT)    //sleep 时不管timeout
   \   0273  FE1C              CP      28
   \   0275  2808              JR      Z,?0074
   \   0277  FE1B              CP      27
   \   0279  2804              JR      Z,?0074
   \   027B  FE1E              CP      30
   \   027D  2017              JR      NZ,?0073
   \   027F            ?0074:
   \   027F            ?0075:
   \   027F            ?0072:
    338                  {
    339                      n++;
    340                      if(n >= half_sec) return 0;
   \   027F  FDE5              PUSH    IY
   \   0281  C1                POP     BC
   \   0282  DD23              INC     IX
   \   0284  DDE5              PUSH    IX
   \   0286  E1                POP     HL
   \   0287  F680              OR      128
   \   0289  ED42              SBC     HL,BC
   \   028B  E28F02            JP      PO,?0106
   \   028E  AC                XOR     H
   \   028F            ?0106:
   \   028F  FA6B02            JP      M,?0070
   \   0292            ?0076:
   \   0292  2E00              LD      L,0
    341                  }
   \   0294  1811              JR      ?0083
   \   0296            ?0077:
   \   0296            ?0073:
    342                  else if(key == AP_KEY_NULL ||
    343                      key == AP_MSG_LOCK ||
    344                      key == (AP_MSG_LOCK | AP_KEY_UP))    //lock 只有up, 没有long/hold
   \   0296  AF                XOR     A
   \   0297  B6                OR      (HL)
   \   0298  28D1              JR      Z,?0070
   \   029A  FE19              CP      25
   \   029C  28CD              JR      Z,?0070
   \   029E  FE39              CP      57
   \   02A0  28C9              JR      Z,?0070
   \   02A2            ?0081:
   \   02A2            ?0082:
   \   02A2            ?0079:
    345                  {
    346                      continue;
   \   02A2            ?0080:
    347                  }
    348                  else
    349                  {
    350                      //here maybe hotkey
    351                      return ap_handle_hotkey(key);
   \   02A2  5F                LD      E,A
   \   02A3  CD0000            CALL    LWRD ap_handle_hotkey
   \   02A6  6F                LD      L,A
    352                  }
   \   02A7            ?0083:
   \   02A7  F1                POP     AF
   \   02A8  DDE1              POP     IX
   \   02AA  FDE1              POP     IY
   \   02AC  C1                POP     BC
   \   02AD  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   02B0            ?0078:
    353              }
    354          
    355          }
   \   02B0            ap_handle_hotkey_core:
    356          
    357          /*
    358          ********************************************************************************
    359          * Description : 处理热键消息, 返回结果消息
    360          *
    361          * Arguments   : key, 按键消息
    362          *
    363          * Returns     : 如果有可识别的热键消息,  返回结果消息
    364                  如果没有可识别的热键消息,  返回0
    365          *
    366          * Notes       :
    367          *
    368          ********************************************************************************
    369          */
    370          char ap_handle_hotkey_core(char key)
    371          {
   \   02B0  D5                PUSH    DE
    372              switch( key )
   \   02B1  CD0000            CALL    LWRD ?C_V_SWITCH_L06
   \   02B4  0700              DEFW    7
   \   02B6  19                DEFB    25
   \   02B7  1A                DEFB    26
   \   02B8  1D                DEFB    29
   \   02B9  1F                DEFB    31
   \   02BA  31                DEFB    49
   \   02BB  81                DEFB    129
   \   02BC  90                DEFB    144
   \   02BD  0F03              DEFW    ?0092
   \   02BF  D702              DEFW    ?0086
   \   02C1  CD02              DEFW    ?0085
   \   02C3  E102              DEFW    ?0087
   \   02C5  CD02              DEFW    ?0085
   \   02C7  CD02              DEFW    ?0085
   \   02C9  EB02              DEFW    ?0088
   \   02CB  F502              DEFW    ?0089
   \   02CD            ?0085:
    373              {
    374              case AP_KEY_PLAY | AP_KEY_LONG:    //长按play发standby
    375              case AP_MSG_STANDBY:        //自动关机
    376              //case AP_MSG_SLEEP:        //睡眠
    377              //case AP_MSG_LOW_POWER:    //低电自动关机
    378              case AP_MSG_FORCE_STANDBY:    //使用上两个会报label duplicate
    379                  ap_set_event(AP_EVENT_STANDBY);
   \   02CD  110200            LD      DE,2
   \   02D0  CD1503            CALL    LWRD ?0109
    380                  return RESULT_STANDBY;
   \   02D3  2E02              LD      L,2
    381              case AP_KEY_MODE | AP_KEY_LONG:    //长按menu进入main
   \   02D5  183A              JR      ?0093
   \   02D7            ?0086:
    382                  ap_set_event(AP_EVENT_MAIN);
   \   02D7  110100            LD      DE,1
   \   02DA  CD1503            CALL    LWRD ?0109
    383                  return RESULT_MAIN;
   \   02DD  2E0A              LD      L,10
    384           
    385              case AP_KEY_AB | AP_KEY_UP:    //进入录音
   \   02DF  1830              JR      ?0093
   \   02E1            ?0087:
    386                  ap_set_event(AP_EVENT_RECORD);
   \   02E1  110400            LD      DE,4
   \   02E4  CD1503            CALL    LWRD ?0109
    387                  return RESULT_RECORD;
   \   02E7  2E09              LD      L,9
    388              case AP_MSG_USB_PLUGIN:        //进入udisk 模式
   \   02E9  1826              JR      ?0093
   \   02EB            ?0088:
    389                  ap_set_event(AP_EVENT_UDISK);
   \   02EB  110800            LD      DE,8
   \   02EE  CD1503            CALL    LWRD ?0109
    390                  return RESULT_UDISK;
   \   02F1  2E04              LD      L,4
    391              case AP_MSG_LOCK:        //locked
   \   02F3  181C              JR      ?0093
   \   02F5            ?0089:
    392                  if(ui_run_realtime)    //实时模式不显示lock
   \   02F5  3A0000            LD      A,(ui_run_realtime)
   \   02F8  B7                OR      A
   \   02F9  2014              JR      NZ,?0092
   \   02FB            ?0090:
    393                  {
    394                      //TODO: send lock message to message queue
    395                      return 0;
    396                  }
   \   02FB            ?0091:
    397                  else
    398                  {
    399                      ui_show_lock(1);    //这里不处理热键,防止嵌套
   \   02FB  1E01              LD      E,1
   \   02FD  3E00              LD      A,BYTE3 ui_show_lock
   \   02FF  210000            LD      HL,LWRD ui_show_lock
   \   0302  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    400                      ap_set_event(AP_EVENT_REDRAW);
   \   0305  111000            LD      DE,16
   \   0308  CD1503            CALL    LWRD ?0109
    401                      return RESULT_REDRAW;
   \   030B  2E32              LD      L,50
    402                  }
   \   030D  1802              JR      ?0093
   \   030F            ?0092:
    403              default:
    404                  //here just drop the key
    405                  return 0;
   \   030F  2E00              LD      L,0
    406              }
   \   0311            ?0093:
   \   0311  F1                POP     AF
   \   0312  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   0315            ?0109:
   \   0315  3E00              LD      A,BYTE3 ap_set_event
   \   0317  21ED01            LD      HL,LWRD ap_set_event
   \   031A  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
   \   031D            ?0084:
    407          }
   \   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: 797
Constant size: 15
Static variable size: Data(15) Iram(0)

⌨️ 快捷键说明

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