📄 ap_message2_standby.lst
字号:
\ 00EE 3E01 LD A,1
\ 00F0 320B00 LD (g_light_flag),A
143 return NULL;
\ 00F3 C3DE01 JP LWRD ?0098
144 }
\ 00F6 ?0026:
145 key = key_value | AP_KEY_UP;
\ 00F6 78 LD A,B
\ 00F7 CBEF SET 5,A
\ 00F9 DD77FE LD (IX-2),A
146 key_value=key; //add by mzh 2007.3.14
\ 00FC 320E00 LD (?0013),A
147 break;
\ 00FF C3E201 JP LWRD ?0058
\ 0102 ?0027:
148
149
150 case MSG_RTC2HZ: //rtc
151 case MSG_BAT_V_CHG: //charging & rtc
152 g_rtc_counter++;
\ 0102 2A0700 LD HL,(g_rtc_counter)
\ 0105 23 INC HL
\ 0106 220700 LD (g_rtc_counter),HL
153
154 if((g_light_time != 0) && (g_rtc_counter >= g_light_time)&&((input8(0x57) & 0x02)==0)) //自动关背光
\ 0109 3A0000 LD A,(g_light_time)
\ 010C B7 OR A
\ 010D 281A JR Z,?0029
\ 010F 4F LD C,A
\ 0110 0600 LD B,0
\ 0112 ED42 SBC HL,BC
\ 0114 3813 JR C,?0029
\ 0116 DB57 IN A,(87)
\ 0118 CB4F BIT 1,A
\ 011A 200D JR NZ,?0029
\ 011C ?0031:
\ 011C ?0030:
\ 011C ?0028:
155 {
156 //关背光
157 Lightmodeset(FALSE); //开关背光(true: 开, false:关)
\ 011C 58 LD E,B
\ 011D 3E00 LD A,BYTE3 Lightmodeset
\ 011F 210000 LD HL,LWRD Lightmodeset
\ 0122 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
158 g_light_flag = FALSE;
\ 0125 AF XOR A
\ 0126 320B00 LD (g_light_flag),A
\ 0129 ?0029:
159 }
160 if(g_sleep_time != 0 && g_rtc_counter == g_sleep_time) //睡眠
\ 0129 2A0300 LD HL,(g_sleep_time)
\ 012C 7D LD A,L
\ 012D B4 OR H
\ 012E 280D JR Z,?0033
\ 0130 ED4B0700 LD BC,(g_rtc_counter)
\ 0134 ED42 SBC HL,BC
\ 0136 2005 JR NZ,?0033
\ 0138 ?0035:
\ 0138 ?0034:
\ 0138 ?0032:
161 {
162 return AP_MSG_SLEEP;
\ 0138 2E1F LD L,31
163 }
\ 013A C3E501 JP LWRD ?0059
\ 013D ?0033:
164
165 if(g_standby_time != 0 && g_rtc_counter == g_standby_time) //自动关机
\ 013D 2A0500 LD HL,(g_standby_time)
\ 0140 7D LD A,L
\ 0141 B4 OR H
\ 0142 280D JR Z,?0037
\ 0144 ED4B0700 LD BC,(g_rtc_counter)
\ 0148 ED42 SBC HL,BC
\ 014A 2005 JR NZ,?0037
\ 014C ?0039:
\ 014C ?0038:
\ 014C ?0036:
166 {
167 return AP_MSG_STANDBY;
\ 014C 2E1D LD L,29
168 }
\ 014E C3E501 JP LWRD ?0059
\ 0151 ?0037:
169
170 if( (g_rtc_counter % 16) == 0 )
\ 0151 2A0700 LD HL,(g_rtc_counter)
\ 0154 7D LD A,L
\ 0155 E60F AND 15
\ 0157 2005 JR NZ,?0041
\ 0159 ?0040:
171 {
172
173 return AP_MSG_WAIT_TIMEOUT; //8 sec timeout
\ 0159 2E1E LD L,30
174 }
\ 015B C3E501 JP LWRD ?0059
\ 015E ?0041:
175
176 if(key == MSG_RTC2HZ) key = AP_MSG_RTC;
\ 015E DD46FE LD B,(IX-2)
\ 0161 05 DEC B
\ 0162 E26B01 JP PO,?0043
\ 0165 ?0042:
\ 0165 DD36FE1C LD (IX-2),28
\ 0169 1877 JR ?0058
\ 016B ?0043:
177 else key = AP_MSG_CHARGING;
\ 016B DD36FE1B LD (IX-2),27
\ 016F ?0044:
178
179 break;
\ 016F 1871 JR ?0058
\ 0171 ?0045:
180
181
182 case MSG_USB_STICK: //usb plugin, 等同按键
183 //output8(0xf4,input8(0x0f4)&0xF7); //set gio_c3 to low to cut battery
184 g_rtc_counter = 0;
\ 0171 210000 LD HL,0
\ 0174 220700 LD (g_rtc_counter),HL
185 key_count = 1;
\ 0177 23 INC HL
\ 0178 220C00 LD (?0012),HL
186 key = AP_MSG_USB_PLUGIN;
\ 017B DD36FE1A LD (IX-2),26
187
188 //开背光
189 if(g_light_time != 0)
\ 017F 3A0000 LD A,(g_light_time)
\ 0182 B7 OR A
\ 0183 285D JR Z,?0058
\ 0185 ?0046:
190 {
191 Lightmodeset(TRUE);//开关背光(TRUE: 开, FALSE:关)
\ 0185 5D LD E,L
\ 0186 3E00 LD A,BYTE3 Lightmodeset
\ 0188 210000 LD HL,LWRD Lightmodeset
\ 018B CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
192 g_light_flag = FALSE;
\ 018E AF XOR A
\ 018F 320B00 LD (g_light_flag),A
193 }
194 else
\ 0192 ?0047:
\ 0192 ?0048:
195 {
196 }
197 break;
\ 0192 184E JR ?0058
\ 0194 ?0049:
198
199 //#ifndef DEBUG
200 case MSG_LOW_POWER: //low power, nmi 0.98v
201 DUMP("low power", 0);
202 if(input8(0x9c)<0xa0) //当Li电池电压小于3.3V(0xa0) ,ap层才去响应低电消息,客户可修改此值
\ 0194 DB9C IN A,(156)
\ 0196 FEA0 CP 160
\ 0198 3048 JR NC,?0058
\ 019A ?0050:
203 key = AP_MSG_LOW_POWER;
\ 019A DD36FE1F LD (IX-2),31
\ 019E ?0051:
204 break;
\ 019E 1842 JR ?0058
\ 01A0 ?0052:
205 //#endif
206
207 case MSG_USB_UNSTICK: //ap 不识别的消息
208
209 case Msg_KeyNull: //没有按键
210
211 case Msg_KeyUnHold:
212 key = AP_KEY_NULL;
\ 01A0 DD36FE00 LD (IX-2),0
213 break;
\ 01A4 183C JR ?0058
\ 01A6 ?0053:
214
215
216 case Msg_KeyHold:
217 //lock 后还会有up消息
218 key = AP_MSG_LOCK;
219 g_rtc_counter = 0;
\ 01A6 210000 LD HL,0
\ 01A9 220700 LD (g_rtc_counter),HL
220 key_count = 1;
\ 01AC 23 INC HL
\ 01AD 220C00 LD (?0012),HL
221 key_value = key;
\ 01B0 3E19 LD A,25
\ 01B2 320E00 LD (?0013),A
\ 01B5 DD77FE LD (IX-2),A
222
223 break;
\ 01B8 1828 JR ?0058
\ 01BA ?0054:
224
225 case MSG_SD_IN:/*插卡状态*/
226 key = AP_MSG_SD_IN;
\ 01BA DD36FE38 LD (IX-2),56
227 break;
\ 01BE 1822 JR ?0058
\ 01C0 ?0055:
228
229 case MSG_SD_OUT:/*拨卡状态*/
230 key = AP_MSG_SD_OUT;
\ 01C0 DD36FE37 LD (IX-2),55
231 break;
\ 01C4 181C JR ?0058
\ 01C6 ?0056:
232
233 default: //新的按键
234 g_rtc_counter = 0;
\ 01C6 210000 LD HL,0
\ 01C9 220700 LD (g_rtc_counter),HL
235 key_count = 1;
\ 01CC 23 INC HL
\ 01CD 220C00 LD (?0012),HL
236 key_value = key;
\ 01D0 7B LD A,E
\ 01D1 320E00 LD (?0013),A
237
238 //开背光
239 if (!g_light_flag)
\ 01D4 3A0B00 LD A,(g_light_flag)
\ 01D7 B7 OR A
\ 01D8 2008 JR NZ,?0058
\ 01DA ?0057:
240 {
241 //如背灯没开,不理按键
242 key_count = 0;
\ 01DA 2B DEC HL
\ 01DB 220C00 LD (?0012),HL
243 g_rtc_counter = 0;
244 return NULL;
\ 01DE ?0098:
\ 01DE 2E00 LD L,0
245 }
\ 01E0 1803 JR ?0059
\ 01E2 ?0058:
\ 01E2 ?0023:
246 } //switch()
247 return key;
\ 01E2 DD6EFE LD L,(IX-2)
248 }
\ 01E5 ?0059:
\ 01E5 DDF9 LD SP,IX
\ 01E7 DDE1 POP IX
\ 01E9 C1 POP BC
\ 01EA C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 01ED ap_set_event:
249
250
251 /*
252 ********************************************************************************
253 * Description : 设置事件发生标志
254 *
255 * Arguments : event, 事件集合
256 *
257 * Returns :
258 *
259 * Notes :
260 *
261 ********************************************************************************
262 */
263 void ap_set_event(WORD event)
264 {
\ 01ED C5 PUSH BC
\ 01EE D5 PUSH DE
\ 01EF 4B LD C,E
\ 01F0 42 LD B,D
\ 01F1 210900 LD HL,g_ap_event
\ 01F4 7E LD A,(HL)
\ 01F5 B1 OR C
\ 01F6 77 LD (HL),A
\ 01F7 23 INC HL
\ 01F8 7E LD A,(HL)
\ 01F9 B0 OR B
\ 01FA 77 LD (HL),A
265 g_ap_event |= event;
266 }
\ 01FB E1 POP HL
\ 01FC C1 POP BC
\ 01FD C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0200 ap_get_event:
267
268 /*
269 ********************************************************************************
270 * Description : 检测事件是否发生
271 *
272 * Arguments : event, 需要检测的事件集合
273 condition:
274 AP_EVENT_ALL: 所有事件发生,返回event,否则返回0
275 AP_EVENT_ANY: 任意事件发生,返回event,否则返回0
276 * Returns : event 按照 condition 指定的条件发生,返回系统事件的集合
277 不满足条件, 返回0
278 *
279 * Notes :
280 *
281 ********************************************************************************
282 */
283 WORD ap_get_event(WORD event, WORD condition)
284 {
\ 0200 FDE5 PUSH IY
\ 0202 DDE5 PUSH IX
\ 0204 D5 PUSH DE
\ 0205 DDE1 POP IX
\ 0207 C5 PUSH BC
\ 0208 FDE1 POP IY
285 if(condition == AP_EVENT_ALL)
\ 020A 79 LD A,C
\ 020B A0 AND B
\ 020C 3C INC A
\ 020D 2013 JR NZ,?0061
\ 020F ?0060:
286 {
287 if( (g_ap_event & event) == event) return g_ap_event;
\ 020F 2A0900 LD HL,(g_ap_event)
\ 0212 DDE5 PUSH IX
\ 0214 C1 POP BC
\ 0215 7D LD A,L
\ 0216 A1 AND C
\ 0217 5F LD E,A
\ 0218 7C LD A,H
\ 0219 A0 AND B
\ 021A 57 LD D,A
\ 021B EB EX DE,HL
\ 021C ED42 SBC HL,BC
\ 021E 201C JR NZ,?0065
\ 0220 ?0062:
\ 0220 1815 JR ?0104
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -