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

📄 onboard.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 4 页
字号:
        RSEG BANKED_CODE:CODE:NOROOT(0)
//  211 byte OnBoard_SendKeys( byte keys, byte state )
OnBoard_SendKeys:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function OnBoard_SendKeys
//  212 {
        FUNCALL OnBoard_SendKeys, osal_msg_allocate
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL OnBoard_SendKeys, osal_msg_send
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        MOV	A,#-0xa
        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 V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 10)
        ; Saved register size: 10
        ; Auto size: 0
        MOV	A,R1
        MOV	R6,A
        MOV	A,R2
        MOV	R7,A
//  213   keyChange_t *msgPtr;
//  214 
//  215   if ( registeredKeysTaskID != NO_TASK_ID )
        MOV	DPTR,#??registeredKeysTaskID
        MOVX	A,@DPTR
        XRL	A,#0xff
        JZ	??OnBoard_SendKeys_0
//  216   {
//  217     // Send the address to the task
//  218     msgPtr = (keyChange_t *)osal_msg_allocate( sizeof(keyChange_t) );
        ; Setup parameters for call to function osal_msg_allocate
        MOV	R2,#0x4
        MOV	R3,#0x0
        MOV	DPTR,#(osal_msg_allocate & 0xffff)
        MOV	A,#((osal_msg_allocate >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  219     if ( msgPtr )
        MOV	A,R2
        JNZ	??OnBoard_SendKeys_1
        MOV	A,R3
??OnBoard_SendKeys_1:
        JZ	??OnBoard_SendKeys_2
//  220     {
//  221       msgPtr->hdr.event = KEY_CHANGE;
        MOV	A,#-0x40
        MOV	DPL,R2
        MOV	DPH,R3
        MOVX	@DPTR,A
//  222       msgPtr->state = state;
        MOV	A,R7
        INC	DPTR
        INC	DPTR
        MOVX	@DPTR,A
//  223       msgPtr->keys = keys;
        MOV	A,R6
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	@DPTR,A
//  224 
//  225       osal_msg_send( registeredKeysTaskID, (uint8 *)msgPtr );
        ; Setup parameters for call to function osal_msg_send
        MOV	DPTR,#??registeredKeysTaskID
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(osal_msg_send & 0xffff)
        MOV	A,#((osal_msg_send >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  226     }
//  227     return ( ZSuccess );
??OnBoard_SendKeys_2:
        MOV	R1,#0x0
        SJMP	??OnBoard_SendKeys_3
//  228   }
//  229   else
//  230     return ( ZFailure );
??OnBoard_SendKeys_0:
        MOV	R1,#0x1
??OnBoard_SendKeys_3:
        MOV	R7,#0x2
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock2
//  231 }
//  232 
//  233 /*********************************************************************
//  234  * @fn      OnBoard_KeyCallback
//  235  *
//  236  * @brief   Callback service for keys
//  237  *
//  238  * @param   keys  - keys that were pressed
//  239  *          state - shifted
//  240  *
//  241  * @return  void
//  242  *********************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  243 void OnBoard_KeyCallback ( uint8 keys, uint8 state )
OnBoard_KeyCallback:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function OnBoard_KeyCallback
//  244 {
        FUNCALL OnBoard_KeyCallback, OnBoard_SendKeys
        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
//  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);
        MOV	DPTR,#OnboardKeyIntEnable
        MOVX	A,@DPTR
        XRL	A,#0x1
        JNZ	??OnBoard_KeyCallback_0
        MOV	R2,#0x0
        SJMP	??OnBoard_KeyCallback_1
??OnBoard_KeyCallback_0:
        MOV	A,R1
        MOV	C,0xE0 /* A   */.5
        JNC	??OnBoard_KeyCallback_2
        SETB	B.0
        SJMP	??OnBoard_KeyCallback_3
??OnBoard_KeyCallback_2:
        CLR	B.0
??OnBoard_KeyCallback_3:
        MOV	C,B.0
        CLR	A
        MOV	0xE0 /* A   */.0,C
        MOV	R2,A
//  250 
//  251   if ( OnBoard_SendKeys( keys, shift ) != ZSuccess )
??OnBoard_KeyCallback_1:
        ; Setup parameters for call to function OnBoard_SendKeys
        MOV	DPTR,#(OnBoard_SendKeys & 0xffff)
        MOV	A,#((OnBoard_SendKeys >> 16) & 0xff)
        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 }
        SJMP	?Subroutine0
        CFI EndBlock cfiBlock3
//  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  *********************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  298 uint16 OnBoard_stack_used( void )
OnBoard_stack_used:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function OnBoard_stack_used
//  299 {
        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
//  300   byte *pStack = (byte*)MCU_RAM_END;
        MOV	R0,#-0x1
        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:
        MOV	DPL,R0
        MOV	DPH,R1
        MOVX	A,@DPTR
        XRL	A,#0xa5
        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++ )
        MOV	R2,#0x0
        SJMP	??OnBoard_stack_used_2
//  315       {
//  316         if ( *pHold != STACK_INIT_VALUE )
//  317           break;
//  318         else
//  319           pHold--;
??OnBoard_stack_used_3:
        MOV	A,DPL
        ADD	A,#-0x1
        MOV	DPL,A
        MOV	A,DPH
        ADDC	A,#-0x1
        MOV	DPH,A
        INC	R2
        MOV	A,R2
        CLR	C
        SUBB	A,#0xc
        JNC	??OnBoard_stack_used_4
??OnBoard_stack_used_2:
        MOVX	A,@DPTR
        XRL	A,#0xa5
        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:
        MOV	A,R0
        ADD	A,#-0x1
        DEC	R0
        MOV	A,R1
        ADDC	A,#-0x1
        MOV	R1,A
        MOV	A,R0
        JNZ	??OnBoard_stack_used_5
        MOV	A,R1
??OnBoard_stack_used_5:
        JNZ	??OnBoard_stack_used_0
//  327   }
//  328 
//  329   if ( pStack )
??OnBoard_stack_used_4:
        MOV	A,R0
        JNZ	??OnBoard_stack_used_6
        MOV	A,R1
??OnBoard_stack_used_6:
        JZ	??OnBoard_stack_used_7
//  330     return ( (uint16)((byte*)MCU_RAM_END - pStack) );
        MOV	A,#-0x1
        CLR	C
        SUBB	A,R0
        MOV	R2,A
        MOV	A,#-0x1
        SUBB	A,R1
        MOV	R3,A
        SJMP	??OnBoard_stack_used_8
//  331   else
//  332     return ( 0 );
??OnBoard_stack_used_7:
        MOV	R2,#0x0
        MOV	R3,#0x0
        CFI EndBlock cfiBlock4
??OnBoard_stack_used_8:
        REQUIRE ?Subroutine0
        ; // Fall through to label ?Subroutine0
//  333 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
        CFI Block cfiBlock5 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+-5
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        POP	DPH
        CFI CFA_SP SP+-4
        CFI DPH0 SameValue
        POP	DPL
        CFI CFA_SP SP+-3
        CFI DPL0 SameValue
        LJMP	?BRET
        CFI EndBlock cfiBlock5
//  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  *********************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  347 void _itoa(uint16 num, byte *buf, byte radix)
_itoa:
        CFI Block cfiBlock6 Using cfiCommon0
        CFI Function _itoa
//  348 {
        MOV	A,#-0xe
        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 V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 14)
        ; Saved register size: 14
        ; Auto size: 5
        MOV	A,#-0x5
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 19)
        MOV	A,R2
        MOV	R6,A
        MOV	A,R3
        MOV	R7,A
        MOV	?V0 + 0,R4
        MOV	?V0 + 1,R5
        MOV	?V0 + 5,R1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -