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

📄 zdapp.s51

📁 用IAR开发的ZIGBEE网络路由例子
💻 S51
📖 第 1 页 / 共 5 页
字号:
        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)
//  282   uint8 capabilities;
//  283 
//  284   // Save the task ID
//  285   ZDAppTaskID = task_id;
        MOV	A,R1
        MOV	DPTR,#ZDAppTaskID
        MOVX	@DPTR,A
//  286 
//  287   // Initialize the ZDO global device short address storage
//  288   ZDAppNwkAddr.addrMode = Addr16Bit;
        MOV	A,#0x2
        MOV	DPTR,#(ZDAppNwkAddr + 8)
        MOVX	@DPTR,A
//  289   ZDAppNwkAddr.addr.shortAddr = INVALID_NODE_ADDR;
        MOV	DPTR,#ZDAppNwkAddr
        MOV	A,#-0x2
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,#-0x1
        MOVX	@DPTR,A
//  290   (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()
//  291 
//  292   // Check for manual "Hold Auto Start"
//  293   ZDAppCheckForHoldKey();
//  294 
//  295   // Initialize ZDO items and setup the device - type of device to create.
//  296   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()
//  297 
//  298   // Register the endpoint description with the AF
//  299   // This task doesn't have a Simple description, but we still need
//  300   // to register the endpoint.
//  301   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()
//  302 
//  303 #if defined( ZDO_USERDESC_RESPONSE )
//  304   ZDApp_InitUserDesc();
//  305 #endif // ZDO_USERDESC_RESPONSE
//  306 
//  307 #if defined( ZDO_CACHE )
//  308   ZDCacheInit();
//  309 #endif
//  310 
//  311   // Setup the Zigbee Network Protocol Version
//  312   ZDAppSetupProtoVersion();
        ; Setup parameters for call to function ZDAppSetupProtoVersion
        MOV	DPTR,#(ZDAppSetupProtoVersion & 0xffff)
        MOV	A,#((ZDAppSetupProtoVersion >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  313 
//  314   // set broadcast address mask to support broadcast filtering
//  315   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()
//  316   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()
//  317 
//  318   // Start the device?
//  319   if ( devState != DEV_HOLD )
        MOV	DPTR,#devState
        MOVX	A,@DPTR
        JZ	??ZDApp_Init_0
//  320   {
//  321     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
//  322   }
//  323   else
//  324   {
//  325     // Blink LED to indicate HOLD_START
//  326     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	?Subroutine27 & 0xFFFF
        CFI EndBlock cfiBlock0
//  327   }
//  328 } /* ZDO_Init() */
//  329 
//  330 /*********************************************************************
//  331  * @fn      ZDApp_event_loop()
//  332  *
//  333  * @brief   Main event loop for Zigbee device objects task. This function
//  334  *          should be called at periodic intervals.
//  335  *
//  336  * @param   task_id - Task ID
//  337  * @param   events  - Bitmap of events
//  338  *
//  339  * @return  none
//  340  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  341 UINT16 ZDApp_event_loop( byte task_id, UINT16 events )
ZDApp_event_loop:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function ZDApp_event_loop
//  342 {
        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, ZDApp_NetworkStartEvt
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL ZDApp_event_loop, osal_pwrmgr_device
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL ZDApp_event_loop, osal_set_event
        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
//  343   uint8 *msg_ptr;
//  344 
//  345   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
//  346   {
//  347     while ( (msg_ptr = osal_msg_receive( ZDAppTaskID )) )
//  348     {
//  349       ZDApp_ProcessOSALMsg( (osal_event_hdr_t *)msg_ptr );
//  350 
//  351       // Release the memory
//  352       osal_msg_deallocate( msg_ptr );
//  353     }
//  354 
//  355     // Return unprocessed events
//  356     return (events ^ SYS_EVENT_MSG);
//  357   }
//  358 
//  359   if ( events & ZDO_NETWORK_INIT )
        MOV	A,R6
        MOV	C,0xE0 /* A   */.0
        JNC	??ZDApp_event_loop_2
//  360   {
//  361     // Initialize apps and start the network
//  362     devState = DEV_INIT;
        MOV	A,#0x1
        MOV	DPTR,#devState
        MOVX	@DPTR,A
//  363     ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode,
//  364                      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()
//  365 
//  366     // Return unprocessed events
//  367     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
        LJMP	??ZDApp_event_loop_5 & 0xFFFF
//  368   }
??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
//  369 
//  370 #if defined (RTR_NWK)
//  371   if ( events & ZDO_NETWORK_START )
??ZDApp_event_loop_2:
        ANL	A,#0x2
        JZ	??ZDApp_event_loop_9
//  372   {
//  373     ZDApp_NetworkStartEvt();
        ; Setup parameters for call to function ZDApp_NetworkStartEvt
        MOV	DPTR,#(ZDApp_NetworkStartEvt & 0xffff)
        MOV	A,#((ZDApp_NetworkStartEvt >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  374 
//  375     // Return unprocessed events
//  376     return (events ^ ZDO_NETWORK_START);
        MOV	A,#0x2
??ZDApp_event_loop_10:
        SJMP	??ZDApp_event_loop_3
//  377   }
//  378 #endif  //RTR_NWK
//  379 
//  380 #if defined ( RTR_NWK )
//  381   if ( events & ZDO_ROUTER_START )
??ZDApp_event_loop_9:
        MOV	A,R6
        ANL	A,#0x20
        JZ	??ZDApp_event_loop_11
//  382   {
//  383     if ( nwkStatus == ZSuccess )
        MOV	DPTR,#nwkStatus

⌨️ 快捷键说明

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