?? onboard.lst
字號:
243 void OnBoard_KeyCallback ( uint8 keys, uint8 state )
\ OnBoard_KeyCallback:
244 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
245 uint8 shift;
246
247 // shift key (S1) is used to generate key interrupt
248 // applications should not use S1 when key interrupt is enabled
249 shift = (OnboardKeyIntEnable == HAL_KEY_INTERRUPT_ENABLE) ? false : ((keys & HAL_KEY_SW_6) ? true : false);
\ 000004 90.... MOV DPTR,#OnboardKeyIntEnable
\ 000007 E0 MOVX A,@DPTR
\ 000008 6401 XRL A,#0x1
\ 00000A 7004 JNZ ??OnBoard_KeyCallback_0
\ 00000C 7A00 MOV R2,#0x0
\ 00000E 8011 SJMP ??OnBoard_KeyCallback_1
\ ??OnBoard_KeyCallback_0:
\ 000010 E9 MOV A,R1
\ 000011 A2E5 MOV C,0xE0 /* A */.5
\ 000013 5004 JNC ??OnBoard_KeyCallback_2
\ 000015 D2F0 SETB B.0
\ 000017 8002 SJMP ??OnBoard_KeyCallback_3
\ ??OnBoard_KeyCallback_2:
\ 000019 C2F0 CLR B.0
\ ??OnBoard_KeyCallback_3:
\ 00001B A2F0 MOV C,B.0
\ 00001D E4 CLR A
\ 00001E 92E0 MOV 0xE0 /* A */.0,C
\ 000020 FA MOV R2,A
250
251 if ( OnBoard_SendKeys( keys, shift ) != ZSuccess )
\ ??OnBoard_KeyCallback_1:
\ 000021 ; Setup parameters for call to function OnBoard_SendKeys
\ 000021 90.... MOV DPTR,#(OnBoard_SendKeys & 0xffff)
\ 000024 74.. MOV A,#((OnBoard_SendKeys >> 16) & 0xff)
\ 000026 12.... LCALL ?BCALL ; Banked call to: DPTR()
252 {
253 // Process SW1 here
254 if ( keys & HAL_KEY_SW_1 ) // Switch 1
255 {
256 }
257 // Process SW2 here
258 if ( keys & HAL_KEY_SW_2 ) // Switch 2
259 {
260 }
261 // Process SW3 here
262 if ( keys & HAL_KEY_SW_3 ) // Switch 3
263 {
264 }
265 // Process SW4 here
266 if ( keys & HAL_KEY_SW_4 ) // Switch 4
267 {
268 }
269 // Process SW5 here
270 if ( keys & HAL_KEY_SW_5 ) // Switch 5
271 {
272 }
273 // Process SW6 here
274 if ( keys & HAL_KEY_SW_6 ) // Switch 6
275 {
276 }
277 }
278 }
\ 000029 80.. SJMP ?Subroutine0
279
280 /*********************************************************************
281 * SLEEP MANAGEMENT FUNCTIONS
282 *
283 * These functions support processing of MAC and ZStack power mode
284 * transitions, used when the system goes into or awakes from sleep.
285 */
286
287 /*********************************************************************
288 * @fn OnBoard_stack_used()
289 *
290 * @brief
291 *
292 * Runs through the stack looking for touched memory.
293 *
294 * @param none
295 *
296 * @return number of bytes used by the stack
297 *********************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
298 uint16 OnBoard_stack_used( void )
\ OnBoard_stack_used:
299 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
300 byte *pStack = (byte*)MCU_RAM_END;
\ 000004 78FF MOV R0,#-0x1
\ 000006 79FF MOV R1,#-0x1
301 byte *pHold;
302 byte found = false;
303 byte x;
304
305 // Look from the end of RAM for MIN_RAM_INIT number of "pattern" bytes
306 // This should be the high water stack mark.
307 while ( !found && pStack )
308 {
309 // Found an init value?
310 if ( *pStack == STACK_INIT_VALUE )
\ ??OnBoard_stack_used_0:
\ 000008 8882 MOV DPL,R0
\ 00000A 8983 MOV DPH,R1
\ 00000C E0 MOVX A,@DPTR
\ 00000D 64A5 XRL A,#0xa5
\ 00000F 701C JNZ ??OnBoard_stack_used_1
311 {
312 // Look for a bunch in a row
313 pHold = pStack;
314 for ( x = 0; x < MIN_RAM_INIT; x++ )
\ 000011 7A00 MOV R2,#0x0
\ 000013 8013 SJMP ??OnBoard_stack_used_2
315 {
316 if ( *pHold != STACK_INIT_VALUE )
317 break;
318 else
319 pHold--;
\ ??OnBoard_stack_used_3:
\ 000015 E582 MOV A,DPL
\ 000017 24FF ADD A,#-0x1
\ 000019 F582 MOV DPL,A
\ 00001B E583 MOV A,DPH
\ 00001D 34FF ADDC A,#-0x1
\ 00001F F583 MOV DPH,A
\ 000021 0A INC R2
\ 000022 EA MOV A,R2
\ 000023 C3 CLR C
\ 000024 940C SUBB A,#0xc
\ 000026 5013 JNC ??OnBoard_stack_used_4
\ ??OnBoard_stack_used_2:
\ 000028 E0 MOVX A,@DPTR
\ 000029 64A5 XRL A,#0xa5
\ 00002B 60E8 JZ ??OnBoard_stack_used_3
320 }
321 // Did we find the needed minimum number in a row
322 if ( x >= MIN_RAM_INIT )
323 found = true;
324 }
325 if ( !found )
326 pStack--;
\ ??OnBoard_stack_used_1:
\ 00002D E8 MOV A,R0
\ 00002E 24FF ADD A,#-0x1
\ 000030 18 DEC R0
\ 000031 E9 MOV A,R1
\ 000032 34FF ADDC A,#-0x1
\ 000034 F9 MOV R1,A
\ 000035 E8 MOV A,R0
\ 000036 7001 JNZ ??OnBoard_stack_used_5
\ 000038 E9 MOV A,R1
\ ??OnBoard_stack_used_5:
\ 000039 70CD JNZ ??OnBoard_stack_used_0
327 }
328
329 if ( pStack )
\ ??OnBoard_stack_used_4:
\ 00003B E8 MOV A,R0
\ 00003C 7001 JNZ ??OnBoard_stack_used_6
\ 00003E E9 MOV A,R1
\ ??OnBoard_stack_used_6:
\ 00003F 600B JZ ??OnBoard_stack_used_7
330 return ( (uint16)((byte*)MCU_RAM_END - pStack) );
\ 000041 74FF MOV A,#-0x1
\ 000043 C3 CLR C
\ 000044 98 SUBB A,R0
\ 000045 FA MOV R2,A
\ 000046 74FF MOV A,#-0x1
\ 000048 99 SUBB A,R1
\ 000049 FB MOV R3,A
\ 00004A 8004 SJMP ??OnBoard_stack_used_8
331 else
332 return ( 0 );
\ ??OnBoard_stack_used_7:
\ 00004C 7A00 MOV R2,#0x0
\ 00004E 7B00 MOV R3,#0x0
\ ??OnBoard_stack_used_8:
\ 000050 REQUIRE ?Subroutine0
\ 000050 ; // Fall through to label ?Subroutine0
333 }
334
335 /*********************************************************************
336 * @fn _itoa
337 *
338 * @brief convert a 16bit number to ASCII
339 *
340 * @param num -
341 * buf -
342 * radix -
343 *
344 * @return void
345 *
346 *********************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
347 void _itoa(uint16 num, byte *buf, byte radix)
\ _itoa:
348 {
\ 000000 74F2 MOV A,#-0xe
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 14
\ 000005 ; Auto size: 5
\ 000005 74FB MOV A,#-0x5
\ 000007 12.... LCALL ?ALLOC_XSTACK8
\ 00000A EA MOV A,R2
\ 00000B FE MOV R6,A
\ 00000C EB MOV A,R3
\ 00000D FF MOV R7,A
\ 00000E 8C.. MOV ?V0 + 0,R4
\ 000010 8D.. MOV ?V0 + 1,R5
\ 000012 89.. MOV ?V0 + 5,R1
349 char c,i;
350 byte *p, rst[5];
351
352 p = rst;
\ 000014 85..82 MOV DPL,?XSP + 0
\ 000017 85..83 MOV DPH,?XSP + 1
\ 00001A AC82 MOV R4,DPL
\ 00001C AD83 MOV R5,DPH
353 for ( i=0; i<5; i++,p++ )
\ 00001E 75..00 MOV ?V0 + 4,#0x0
354 {
355 c = num % radix; // Isolate a digit
\ ??_itoa_0:
\ 000021 EE MOV A,R6
\ 000022 F8 MOV R0,A
\ 000023 EF MOV A,R7
\ 000024 F9 MOV R1,A
\ 000025 E5.. MOV A,?V0 + 5
\ 000027 F5.. MOV ?V0 + 2,A
\ 000029 FA MOV R2,A
\ 00002A 7B00 MOV R3,#0x0
\ 00002C 12.... LCALL ?US_DIV_MOD
\ 00002F EA MOV A,R2
356 *p = c + (( c < 10 ) ? '0' : '7'); // Convert to Ascii
\ 000030 940A SUBB A,#0xa
\ 000032 5004 JNC ??_itoa_1
\ 000034 7830 MOV R0,#0x30
\ 000036 8002 SJMP ??_itoa_2
\ ??_itoa_1:
\ 000038 7837 MOV R0,#0x37
\ ??_itoa_2:
\ 00003A E8 MOV A,R0
\ 00003B 2A ADD A,R2
\ 00003C 8C82 MOV DPL,R4
\ 00003E 8D83 MOV DPH,R5
\ 000040 F0 MOVX @DPTR,A
357 num /= radix;
\ 000041 EE MOV A,R6
\ 000042 F8 MOV R0,A
\ 000043 EF MOV A,R7
\ 000044 F9 MOV R1,A
\ 000045 AA.. MOV R2,?V0 + 2
\ 000047 7B00 MOV R3,#0x0
\ 000049 12.... LCALL ?US_DIV_MOD
\ 00004C 88.. MOV ?V0 + 2,R0
\ 00004E 89.. MOV ?V0 + 3,R1
\ 000050 AE.. MOV R6,?V0 + 2
\ 000052 AF.. MOV R7,?V0 + 3
358 if ( !num )
\ 000054 EE MOV A,R6
\ 000055 7001 JNZ ??_itoa_3
\ 000057 EF MOV A,R7
\ ??_itoa_3:
\ 000058 600D JZ ??_itoa_4
359 break;
360 }
\ 00005A 05.. INC ?V0 + 4
\ 00005C A3 INC DPTR
\ 00005D AC82 MOV R4,DPL
\ 00005F AD83 MOV R5,DPH
\ 000061 E5.. MOV A,?V0 + 4
\ 000063 9405 SUBB A,#0x5
\ 000065 40BA JC ??_itoa_0
361
362 for ( c=0 ; c<=i; c++ )
\ ??_itoa_4:
\ 000067 7A00 MOV R2,#0x0
363 *buf++ = *p--; // Reverse character order
\ ??_itoa_5:
\ 000069 8C82 MOV DPL,R4
\ 00006B 8D83 MOV DPH,R5
\ 00006D E0 MOVX A,@DPTR
\ 00006E 85..82 MOV DPL,?V0 + 0
\ 000071 85..83 MOV DPH,?V0 + 1
\ 000074 F0 MOVX @DPTR,A
\ 000075 EC MOV A,R4
\ 000076 24FF ADD A,#-0x1
\ 000078 1C DEC R4
\ 000079 ED MOV A,R5
\ 00007A 34FF ADDC A,#-0x1
\ 00007C FD MOV R5,A
\ 00007D A3 INC DPTR
\ 00007E 8582.. MOV ?V0 + 0,DPL
\ 000081 8583.. MOV ?V0 + 1,DPH
\ 000084 0A INC R2
\ 000085 E5.. MOV A,?V0 + 4
\ 000087 C3 CLR C
\ 000088 9A SUBB A,R2
\ 000089 50DE JNC ??_itoa_5
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -