📄 onboard.s51
字号:
MOV ?V0 + 5,R1
// 349 char c,i;
// 350 byte *p, rst[5];
// 351
// 352 p = rst;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV R4,DPL
MOV R5,DPH
// 353 for ( i=0; i<5; i++,p++ )
MOV ?V0 + 4,#0x0
// 354 {
// 355 c = num % radix; // Isolate a digit
??_itoa_0:
MOV A,R6
MOV R0,A
MOV A,R7
MOV R1,A
MOV A,?V0 + 5
MOV ?V0 + 2,A
MOV R2,A
MOV R3,#0x0
LCALL ?US_DIV_MOD
MOV A,R2
// 356 *p = c + (( c < 10 ) ? '0' : '7'); // Convert to Ascii
SUBB A,#0xa
JNC ??_itoa_1
MOV R0,#0x30
SJMP ??_itoa_2
??_itoa_1:
MOV R0,#0x37
??_itoa_2:
MOV A,R0
ADD A,R2
MOV DPL,R4
MOV DPH,R5
MOVX @DPTR,A
// 357 num /= radix;
MOV A,R6
MOV R0,A
MOV A,R7
MOV R1,A
MOV R2,?V0 + 2
MOV R3,#0x0
LCALL ?US_DIV_MOD
MOV ?V0 + 2,R0
MOV ?V0 + 3,R1
MOV R6,?V0 + 2
MOV R7,?V0 + 3
// 358 if ( !num )
MOV A,R6
JNZ ??_itoa_3
MOV A,R7
??_itoa_3:
JZ ??_itoa_4
// 359 break;
// 360 }
INC ?V0 + 4
INC DPTR
MOV R4,DPL
MOV R5,DPH
MOV A,?V0 + 4
SUBB A,#0x5
JC ??_itoa_0
// 361
// 362 for ( c=0 ; c<=i; c++ )
??_itoa_4:
MOV R2,#0x0
// 363 *buf++ = *p--; // Reverse character order
??_itoa_5:
MOV DPL,R4
MOV DPH,R5
MOVX A,@DPTR
MOV DPL,?V0 + 0
MOV DPH,?V0 + 1
MOVX @DPTR,A
MOV A,R4
ADD A,#-0x1
DEC R4
MOV A,R5
ADDC A,#-0x1
MOV R5,A
INC DPTR
MOV ?V0 + 0,DPL
MOV ?V0 + 1,DPH
INC R2
MOV A,?V0 + 4
CLR C
SUBB A,R2
JNC ??_itoa_5
// 364
// 365 *buf = '\0';
CLR A
MOVX @DPTR,A
// 366 }
MOV A,#0x5
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 14)
MOV R7,#0x6
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock6
// 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 *********************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 378 uint16 Onboard_rand( void )
Onboard_rand:
CFI Block cfiBlock7 Using cfiCommon0
CFI Function Onboard_rand
// 379 {
FUNCALL Onboard_rand, macMcuRandomByte
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
FUNCALL Onboard_rand, macMcuRandomByte
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
MOV A,#-0x9
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
; Saved register size: 9
; Auto size: 0
// 380 uint16 randNum;
// 381
// 382 randNum = macMcuRandomByte();
; Setup parameters for call to function macMcuRandomByte
MOV DPTR,#(macMcuRandomByte & 0xffff)
MOV A,#((macMcuRandomByte >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R1
MOV R6,A
// 383 randNum += (macMcuRandomByte() << 8);
; Setup parameters for call to function macMcuRandomByte
MOV A,#((macMcuRandomByte >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R6
ADD A,#0x0
CLR A
ADDC A,R1
MOV R7,A
// 384 return ( randNum );
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
MOV R7,#0x1
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock7
// 385 }
// 386
// 387 /*********************************************************************
// 388 * @fn Onboard_wait
// 389 *
// 390 * @brief Random number generator
// 391 *
// 392 * @param uint16 - time to wait
// 393 *
// 394 * @return none
// 395 *
// 396 *********************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 397 void Onboard_wait( uint16 timeout )
Onboard_wait:
CFI Block cfiBlock8 Using cfiCommon0
CFI Function Onboard_wait
// 398 {
; Saved register size: 0
; Auto size: 0
SJMP ??Onboard_wait_0
// 399 while (timeout--)
// 400 {
// 401 asm("NOP");
??Onboard_wait_1:
NOP
// 402 asm("NOP");
NOP
// 403 asm("NOP");
NOP
// 404 }
??Onboard_wait_0:
MOV A,R2
MOV R0,A
MOV A,R3
MOV R1,A
MOV A,#-0x1
ADD A,R0
DEC R2
MOV A,#-0x1
ADDC A,R1
MOV R3,A
MOV A,R0
JNZ ??Onboard_wait_2
MOV A,R1
??Onboard_wait_2:
JNZ ??Onboard_wait_1
// 405 }
LJMP ?BRET
CFI EndBlock cfiBlock8
// 406
// 407 /*********************************************************************
// 408 * @fn Osal_TimerCallBack()
// 409 *
// 410 * @brief Update the timer per tick
// 411 *
// 412 * @param none
// 413 *
// 414 * @return local clock in milliseconds
// 415 **********************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 416 void Onboard_TimerCallBack ( uint8 timerId, uint8 channel, uint8 channelMode)
Onboard_TimerCallBack:
CFI Block cfiBlock9 Using cfiCommon0
CFI Function Onboard_TimerCallBack
// 417 {
FUNCALL Onboard_TimerCallBack, osal_update_timers
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 418
// 419 if ((timerId == OSAL_TIMER) && (channelMode == HAL_TIMER_CH_MODE_OUTPUT_COMPARE))
MOV A,#0x2
XRL A,R1
JNZ ??Onboard_TimerCallBack_0
MOV A,#0x2
XRL A,R3
JNZ ??Onboard_TimerCallBack_0
// 420 {
// 421 osal_update_timers();
; Setup parameters for call to function osal_update_timers
MOV DPTR,#(osal_update_timers & 0xffff)
MOV A,#((osal_update_timers >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 422 }
// 423 }
??Onboard_TimerCallBack_0:
LJMP ?Subroutine0 & 0xFFFF
CFI EndBlock cfiBlock9
// 424
// 425 /*********************************************************************
// 426 * EXTERNAL I/O FUNCTIONS
// 427 *
// 428 * User defined functions to control external devices. Add your code
// 429 * to the following functions to control devices wired to DB outputs.
// 430 *
// 431 *********************************************************************/
// 432
RSEG BANKED_CODE:CODE:NOROOT(0)
// 433 void BigLight_On( void )
BigLight_On:
CFI Block cfiBlock10 Using cfiCommon0
CFI Function BigLight_On
// 434 {
; Saved register size: 0
; Auto size: 0
// 435 // Put code here to turn on an external light
// 436 }
LJMP ?BRET
CFI EndBlock cfiBlock10
// 437
RSEG BANKED_CODE:CODE:NOROOT(0)
// 438 void BigLight_Off( void )
BigLight_Off:
CFI Block cfiBlock11 Using cfiCommon0
CFI Function BigLight_Off
// 439 {
; Saved register size: 0
; Auto size: 0
// 440 // Put code here to turn off an external light
// 441 }
LJMP ?BRET
CFI EndBlock cfiBlock11
// 442
RSEG BANKED_CODE:CODE:NOROOT(0)
// 443 void BuzzerControl( byte on )
BuzzerControl:
CFI Block cfiBlock12 Using cfiCommon0
CFI Function BuzzerControl
// 444 {
; Saved register size: 0
; Auto size: 0
// 445 // Put code here to turn a buzzer on/off
// 446 }
LJMP ?BRET
CFI EndBlock cfiBlock12
// 447
RSEG BANKED_CODE:CODE:NOROOT(0)
// 448 void Dimmer( byte lvl )
Dimmer:
CFI Block cfiBlock13 Using cfiCommon0
CFI Function Dimmer
// 449 {
; Saved register size: 0
; Auto size: 0
// 450 // Put code here to control a dimmer
// 451 }
LJMP ?BRET
CFI EndBlock cfiBlock13
// 452
// 453 // No dip switches on this board
RSEG BANKED_CODE:CODE:NOROOT(0)
// 454 byte GetUserDipSw( void )
GetUserDipSw:
CFI Block cfiBlock14 Using cfiCommon0
CFI Function GetUserDipSw
// 455 {
; Saved register size: 0
; Auto size: 0
// 456 return 0;
MOV R1,#0x0
LJMP ?BRET
CFI EndBlock cfiBlock14
// 457 }
RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for registeredKeysTaskID>`:
DB 255
ASEGN SFR_AN:DATA:NOROOT,090H
// union <unnamed> volatile __sfr _A_P1
_A_P1:
DS 1
ASEGN SFR_AN:DATA:NOROOT,0a8H
// union <unnamed> volatile __sfr _A_IEN0
_A_IEN0:
DS 1
END
// 458
// 459 /*********************************************************************
// 460 *********************************************************************/
//
// 705 bytes in segment BANKED_CODE
// 5 bytes in segment SFR_AN
// 1 byte in segment XDATA_I
// 1 byte in segment XDATA_ID
// 10 bytes in segment XDATA_Z
//
// 706 bytes of CODE memory
// 0 bytes of DATA memory (+ 5 bytes shared)
// 11 bytes of XDATA memory
//
//Errors: none
//Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -