📄 onboard.lst
字号:
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
364
365 *buf = '\0';
\ 00008B E4 CLR A
\ 00008C F0 MOVX @DPTR,A
366 }
\ 00008D 7405 MOV A,#0x5
\ 00008F 12.... LCALL ?DEALLOC_XSTACK8
\ 000092 7F06 MOV R7,#0x6
\ 000094 02.... LJMP ?BANKED_LEAVE_XDATA
367
368 /*********************************************************************
369 * @fn Onboard_rand
370 *
371 * @brief Random number generator
372 *
373 * @param none
374 *
375 * @return uint16 - new random number
376 *
377 *********************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
378 uint16 Onboard_rand( void )
\ Onboard_rand:
379 {
\ 000000 74F7 MOV A,#-0x9
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 9
\ 000005 ; Auto size: 0
380 uint16 randNum;
381
382 randNum = macMcuRandomByte();
\ 000005 ; Setup parameters for call to function macMcuRandomByte
\ 000005 90.... MOV DPTR,#(macMcuRandomByte & 0xffff)
\ 000008 74.. MOV A,#((macMcuRandomByte >> 16) & 0xff)
\ 00000A 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00000D E9 MOV A,R1
\ 00000E FE MOV R6,A
383 randNum += (macMcuRandomByte() << 8);
\ 00000F ; Setup parameters for call to function macMcuRandomByte
\ 00000F 74.. MOV A,#((macMcuRandomByte >> 16) & 0xff)
\ 000011 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000014 EE MOV A,R6
\ 000015 2400 ADD A,#0x0
\ 000017 E4 CLR A
\ 000018 39 ADDC A,R1
\ 000019 FF MOV R7,A
384 return ( randNum );
\ 00001A EE MOV A,R6
\ 00001B FA MOV R2,A
\ 00001C EF MOV A,R7
\ 00001D FB MOV R3,A
\ 00001E 7F01 MOV R7,#0x1
\ 000020 02.... LJMP ?BANKED_LEAVE_XDATA
385 }
386
387 /*********************************************************************
388 * @fn Onboard_wait
389 *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -