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

📄 zdapp.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 5 页
字号:
//  269  * @fn      ZDApp_Init
//  270  *
//  271  * @brief   ZDApp Initialization function.
//  272  *
//  273  * @param   task_id - ZDApp Task ID
//  274  *
//  275  * @return  None
//  276  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  277 void ZDApp_Init( byte task_id )
ZDApp_Init:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function ZDApp_Init
//  278 {
        FUNCALL ZDApp_Init, NLME_GetExtAddr
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ZDApp_Init, ZDAppCheckForHoldKey
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ZDApp_Init, ZDO_Init
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ZDApp_Init, afRegister
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ZDApp_Init, ZDAppSetupProtoVersion
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ZDApp_Init, NLME_GetRequest
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ZDApp_Init, NLME_SetBroadcastFilter
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ZDApp_Init, ZDOInitDevice
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ZDApp_Init, HalLedBlink
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, 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: 1
        MOV	A,#-0x1
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 1)
//  279   uint8 capabilities;
//  280 
//  281   // Save the task ID
//  282   ZDAppTaskID = task_id;
        MOV	A,R1
        MOV	DPTR,#ZDAppTaskID
        MOVX	@DPTR,A
//  283 
//  284   // Initialize the ZDO global device short address storage
//  285   ZDAppNwkAddr.addrMode = Addr16Bit;
        MOV	A,#0x2
        MOV	DPTR,#(ZDAppNwkAddr + 8)
        MOVX	@DPTR,A
//  286   ZDAppNwkAddr.addr.shortAddr = INVALID_NODE_ADDR;
        MOV	DPTR,#ZDAppNwkAddr
        MOV	A,#-0x2
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,#-0x1
        MOVX	@DPTR,A
//  287   (void)NLME_GetExtAddr();  // Load the saveExtAddr pointer.
        ; Setup parameters for call to function NLME_GetExtAddr
        MOV	DPTR,#(NLME_GetExtAddr & 0xffff)
        MOV	A,#((NLME_GetExtAddr >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  288 
//  289   // Check for manual "Hold Auto Start"
//  290   ZDAppCheckForHoldKey();
        ; Setup parameters for call to function ZDAppCheckForHoldKey
        MOV	DPTR,#(ZDAppCheckForHoldKey & 0xffff)
        MOV	A,#((ZDAppCheckForHoldKey >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  291 
//  292   // Initialize ZDO items and setup the device - type of device to create.
//  293   ZDO_Init();
        ; Setup parameters for call to function ZDO_Init
        MOV	DPTR,#(ZDO_Init & 0xffff)
        MOV	A,#((ZDO_Init >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  294 
//  295   // Register the endpoint description with the AF
//  296   // This task doesn't have a Simple description, but we still need
//  297   // to register the endpoint.
//  298   afRegister( (endPointDesc_t *)&ZDApp_epDesc );
        ; Setup parameters for call to function afRegister
        MOV	R2,#(ZDApp_epDesc & 0xff)
        MOV	R3,#((ZDApp_epDesc >> 8) & 0xff)
        MOV	DPTR,#(afRegister & 0xffff)
        MOV	A,#((afRegister >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  299 
//  300 #if defined( ZDO_USERDESC_RESPONSE )
//  301   ZDApp_InitUserDesc();
//  302 #endif // ZDO_USERDESC_RESPONSE
//  303 
//  304 #if defined( ZDO_CACHE )
//  305   ZDCacheInit();
//  306 #endif
//  307 
//  308   // Setup the Zigbee Network Protocol Version
//  309   ZDAppSetupProtoVersion();
        ; Setup parameters for call to function ZDAppSetupProtoVersion
        MOV	DPTR,#(ZDAppSetupProtoVersion & 0xffff)
        MOV	A,#((ZDAppSetupProtoVersion >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  310 
//  311   // set broadcast address mask to support broadcast filtering
//  312   NLME_GetRequest(nwkCapabilityInfo, 0, &capabilities);
        ; Setup parameters for call to function NLME_GetRequest
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R4,DPL
        MOV	R5,DPH
        MOV	R2,#0x0
        MOV	R3,#0x0
        MOV	R1,#-0x71
        MOV	DPTR,#(NLME_GetRequest & 0xffff)
        MOV	A,#((NLME_GetRequest >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  313   NLME_SetBroadcastFilter( capabilities );
        ; Setup parameters for call to function NLME_SetBroadcastFilter
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(NLME_SetBroadcastFilter & 0xffff)
        MOV	A,#((NLME_SetBroadcastFilter >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  314 
//  315   // Start the device?
//  316   if ( devState != DEV_HOLD )
        MOV	DPTR,#devState
        MOVX	A,@DPTR
        JZ	??ZDApp_Init_0
//  317   {
//  318     ZDOInitDevice( 0 );
        ; Setup parameters for call to function ZDOInitDevice
        MOV	R2,#0x0
        MOV	R3,#0x0
        MOV	DPTR,#(ZDOInitDevice & 0xffff)
        MOV	A,#((ZDOInitDevice >> 16) & 0xff)
        SJMP	??ZDApp_Init_1
//  319   }
//  320   else
//  321   {
//  322     // Blink LED to indicate HOLD_START
//  323     HalLedBlink ( HAL_LED_4, 0, 50, 500 );
??ZDApp_Init_0:
        ; Setup parameters for call to function HalLedBlink
        MOV	R4,#-0xc
        MOV	R5,#0x1
        MOV	R3,#0x32
        MOV	R2,#0x0
        MOV	R1,#0x8
        MOV	DPTR,#(HalLedBlink & 0xffff)
        MOV	A,#((HalLedBlink >> 16) & 0xff)
??ZDApp_Init_1:
        LJMP	?Subroutine23 & 0xFFFF
        CFI EndBlock cfiBlock0
//  324   }
//  325 } /* ZDO_Init() */
//  326 
//  327 /*********************************************************************
//  328  * @fn      ZDApp_event_loop()
//  329  *
//  330  * @brief   Main event loop for Zigbee device objects task. This function
//  331  *          should be called at periodic intervals.
//  332  *
//  333  * @param   task_id - Task ID
//  334  * @param   events  - Bitmap of events
//  335  *
//  336  * @return  none
//  337  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  338 UINT16 ZDApp_event_loop( byte task_id, UINT16 events )
ZDApp_event_loop:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function ZDApp_event_loop
//  339 {
        FUNCALL ZDApp_event_loop, ZDO_StartDevice
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL ZDApp_event_loop, ZDApp_ProcessOSALMsg
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL ZDApp_event_loop, osal_msg_deallocate
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL ZDApp_event_loop, osal_msg_receive
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL ZDApp_event_loop, ZDO_UpdateNwkStatus
        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,R2
        MOV	R6,A
        MOV	A,R3
        MOV	R7,A
//  340   uint8 *msg_ptr;
//  341 
//  342   if ( events & SYS_EVENT_MSG )
        MOV	A,#-0x80
        ANL	A,R7
        MOV	R1,A
        CLR	A
        JNZ	??ZDApp_event_loop_0
        MOV	A,R1
??ZDApp_event_loop_0:
        JNZ	??ZDApp_event_loop_1
//  343   {
//  344     while ( (msg_ptr = osal_msg_receive( ZDAppTaskID )) )
//  345     {
//  346       ZDApp_ProcessOSALMsg( (osal_event_hdr_t *)msg_ptr );
//  347 
//  348       // Release the memory
//  349       osal_msg_deallocate( msg_ptr );
//  350     }
//  351 
//  352     // Return unprocessed events
//  353     return (events ^ SYS_EVENT_MSG);
//  354   }
//  355 
//  356   if ( events & ZDO_NETWORK_INIT )
        MOV	A,R6
        MOV	C,0xE0 /* A   */.0
        JNC	??ZDApp_event_loop_2
//  357   {
//  358     // Initialize apps and start the network
//  359     devState = DEV_INIT;
        MOV	A,#0x1
        MOV	DPTR,#devState
        MOVX	@DPTR,A
//  360     ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode,
//  361                      DEFAULT_BEACON_ORDER, DEFAULT_SUPERFRAME_ORDER );
        ; Setup parameters for call to function ZDO_StartDevice
        MOV	R4,#0xf
        MOV	R3,#0xf
        MOV	DPTR,#devStartMode
        MOVX	A,@DPTR
        MOV	R2,A
        MOV	DPTR,#ZDO_Config_Node_Descriptor
        MOVX	A,@DPTR
        ANL	A,#0x7
        MOV	R1,A
        MOV	DPTR,#(ZDO_StartDevice & 0xffff)
        MOV	A,#((ZDO_StartDevice >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  362 
//  363     // Return unprocessed events
//  364     return (events ^ ZDO_NETWORK_INIT);
        MOV	A,#0x1
??ZDApp_event_loop_3:
        XRL	A,R6
        MOV	R2,A
        MOV	A,R7
??ZDApp_event_loop_4:
        MOV	R3,A
        SJMP	??ZDApp_event_loop_5
//  365   }
??ZDApp_event_loop_6:
        ; Setup parameters for call to function ZDApp_ProcessOSALMsg
        MOV	DPTR,#(ZDApp_ProcessOSALMsg & 0xffff)
        MOV	A,#((ZDApp_ProcessOSALMsg >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        ; Setup parameters for call to function osal_msg_deallocate
        MOV	R2,?V0 + 0
        MOV	R3,?V0 + 1
        MOV	DPTR,#(osal_msg_deallocate & 0xffff)
        MOV	A,#((osal_msg_deallocate >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
??ZDApp_event_loop_1:
        ; Setup parameters for call to function osal_msg_receive
        MOV	DPTR,#ZDAppTaskID
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(osal_msg_receive & 0xffff)
        MOV	A,#((osal_msg_receive >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	?V0 + 0,R2
        MOV	?V0 + 1,R3
        MOV	A,R2
        JNZ	??ZDApp_event_loop_7
        MOV	A,R3
??ZDApp_event_loop_7:
        JNZ	??ZDApp_event_loop_6
        MOV	A,R6
        MOV	R2,A
        MOV	A,#-0x80
??ZDApp_event_loop_8:
        XRL	A,R7
        SJMP	??ZDApp_event_loop_4
//  366 

⌨️ 快捷键说明

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