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

📄 onboard.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 4 页
字号:
//  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 + -