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

📄 sampleapp.s51

📁 用IAR开发的ZIGBEE网络路由例子
💻 S51
📖 第 1 页 / 共 5 页
字号:
        MOV	A,#((SampleApp_HandleKeys >> 16) & 0xff)
        SJMP	??SampleApp_ProcessEvent_4
??SampleApp_ProcessEvent_8:
        MOV	C,0x90.1
        CPL	C
        MOV	0x90.1,C
        SJMP	??SampleApp_ProcessEvent_5
??SampleApp_ProcessEvent_10:
        MOV	DPL,?V0 + 0
        MOV	DPH,?V0 + 1
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPTR,#SampleApp_NwkState
        MOVX	@DPTR,A
        XRL	A,#0x9
        JNZ	??SampleApp_ProcessEvent_5
        MOV	A,#-0x59
        MOV	DPTR,#mubiaoIEEE
        MOVX	@DPTR,A
        MOV	R2,#0x1
??SampleApp_ProcessEvent_11:
        MOV	?V0 + 2,R2
        MOV	A,?V0 + 2
        ADD	A,#(mubiaoIEEE & 0xff)
        MOV	DPL,A
        CLR	A
        ADDC	A,#((mubiaoIEEE >> 8) & 0xff)
        MOV	DPH,A
        MOV	A,#-0x1
        MOVX	@DPTR,A
        INC	R2
        MOV	A,R2
        CLR	C
        SUBB	A,#0x8
        JC	??SampleApp_ProcessEvent_11
        ; Setup parameters for call to function ZDP_NwkAddrReq
        MOV	R5,#0x0
        MOV	R4,#0x1
        MOV	R1,#0x1
        MOV	R2,#(mubiaoIEEE & 0xff)
        MOV	R3,#((mubiaoIEEE >> 8) & 0xff)
        MOV	DPTR,#(ZDP_NwkAddrReq & 0xffff)
        MOV	A,#((ZDP_NwkAddrReq >> 16) & 0xff)
        LJMP	??SampleApp_ProcessEvent_4 & 0xFFFF
//  296     }
//  297 
//  298     // return unprocessed events
//  299     return (events ^ SYS_EVENT_MSG);
??SampleApp_ProcessEvent_7:
        MOV	A,R6
        MOV	R2,A
        MOV	A,#-0x80
        XRL	A,R7
??SampleApp_ProcessEvent_12:
        MOV	R3,A
        SJMP	??SampleApp_ProcessEvent_13
//  300   }
//  301 
//  302   // Send a message out - This event is generated by a timer
//  303   //  (setup in SampleApp_Init()).
//  304   if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT )
??SampleApp_ProcessEvent_1:
        MOV	A,R6
        MOV	C,0xE0 /* A   */.0
        JNC	??SampleApp_ProcessEvent_14
//  305   {
//  306     // Send the periodic message
//  307    // SampleApp_SendPeriodicMessage();
//  308 
//  309 P1_0=~P1_0;
        MOV	C,0x90.0
        CPL	C
        MOV	0x90.0,C
//  310 SampleApp_SendPeriodicMessage();
        ; Setup parameters for call to function SampleApp_SendPeriodicMessage
        MOV	DPTR,#(SampleApp_SendPeriodicMessage & 0xffff)
        MOV	A,#((SampleApp_SendPeriodicMessage >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  311     // Setup to send message again in normal period (+ a little jitter)
//  312     osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT,
//  313         (SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT + (osal_rand() & 0x00FF)) );
        ; Setup parameters for call to function osal_rand
        MOV	DPTR,#(osal_rand & 0xffff)
        MOV	A,#((osal_rand >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	?V0 + 0,R2
        MOV	R0,?V0 + 0
        ; Setup parameters for call to function osal_start_timerEx
        MOV	A,#-0x18
        ADD	A,R0
        MOV	R4,A
        MOV	A,#0x3
        ADDC	A,#0x0
        MOV	R5,A
        MOV	R2,#0x1
        MOV	R3,#0x0
        MOV	DPTR,#SampleApp_TaskID
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(osal_start_timerEx & 0xffff)
        MOV	A,#((osal_start_timerEx >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  314 
//  315     // return unprocessed events
//  316     return (events ^ SAMPLEAPP_SEND_PERIODIC_MSG_EVT);
        MOV	A,#0x1
        XRL	A,R6
        MOV	R2,A
        MOV	A,R7
        SJMP	??SampleApp_ProcessEvent_12
//  317   }
//  318 
//  319   // Discard unknown events
//  320   return 0;
??SampleApp_ProcessEvent_14:
        MOV	R2,#0x0
        MOV	R3,#0x0
??SampleApp_ProcessEvent_13:
        MOV	R7,#0x4
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock1
//  321 }
//  322 
//  323 /*********************************************************************
//  324  * Event Generation Functions
//  325  */
//  326 /*********************************************************************
//  327  * @fn      SampleApp_HandleKeys
//  328  *
//  329  * @brief   Handles all key events for this device.
//  330  *
//  331  * @param   shift - true if in shift/alt.
//  332  * @param   keys - bit field for key events. Valid entries:
//  333  *                 HAL_KEY_SW_2
//  334  *                 HAL_KEY_SW_1
//  335  *
//  336  * @return  none
//  337  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  338 void SampleApp_HandleKeys( uint8 shift, uint8 keys )
SampleApp_HandleKeys:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function SampleApp_HandleKeys
//  339 {
        FUNCALL SampleApp_HandleKeys, SampleApp_SendFlashMessage
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL SampleApp_HandleKeys, aps_FindGroup
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL SampleApp_HandleKeys, aps_RemoveGroup
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL SampleApp_HandleKeys, aps_AddGroup
        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
//  340   if ( keys & HAL_KEY_SW_1 )
        MOV	C,0xE0 /* A   */.0
        JNC	??SampleApp_HandleKeys_0
//  341   {
//  342     /* This key sends the Flash Command is sent to Group 1.
//  343      * This device will not receive the Flash Command from this
//  344      * device (even if it belongs to group 1).
//  345      */
//  346     SampleApp_SendFlashMessage( SAMPLEAPP_FLASH_DURATION );
        ; Setup parameters for call to function SampleApp_SendFlashMessage
        MOV	R2,#-0x18
        MOV	R3,#0x3
        MOV	DPTR,#(SampleApp_SendFlashMessage & 0xffff)
        MOV	A,#((SampleApp_SendFlashMessage >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  347   }
//  348 
//  349   if ( keys & HAL_KEY_SW_2 )
??SampleApp_HandleKeys_0:
        MOV	A,R6
        MOV	C,0xE0 /* A   */.1
        JNC	??SampleApp_HandleKeys_1
//  350   {
//  351     /* The Flashr Command is sent to Group 1.
//  352      * This key toggles this device in and out of group 1.
//  353      * If this device doesn't belong to group 1, this application
//  354      * will not receive the Flash command sent to group 1.
//  355      */
//  356     aps_Group_t *grp;
//  357     grp = aps_FindGroup( SAMPLEAPP_ENDPOINT, SAMPLEAPP_FLASH_GROUP );
//  358     if ( grp )
        ; Setup parameters for call to function aps_FindGroup
        MOV	R2,#0x1
        MOV	R3,#0x0
        MOV	R1,#0x14
        MOV	DPTR,#(aps_FindGroup & 0xffff)
        MOV	A,#((aps_FindGroup >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,R2
        JNZ	??SampleApp_HandleKeys_2
        MOV	A,R3
??SampleApp_HandleKeys_2:
        JZ	??SampleApp_HandleKeys_3
//  359     {
//  360       // Remove from the group
//  361       aps_RemoveGroup( SAMPLEAPP_ENDPOINT, SAMPLEAPP_FLASH_GROUP );
        ; Setup parameters for call to function aps_RemoveGroup
        MOV	R2,#0x1
        MOV	R3,#0x0
        MOV	R1,#0x14
        MOV	DPTR,#(aps_RemoveGroup & 0xffff)
        MOV	A,#((aps_RemoveGroup >> 16) & 0xff)
        SJMP	??SampleApp_HandleKeys_4
//  362     }
//  363     else
//  364     {
//  365       // Add to the flash group
//  366       aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );
??SampleApp_HandleKeys_3:
        ; Setup parameters for call to function aps_AddGroup
        MOV	R2,#(SampleApp_Group & 0xff)
        MOV	R3,#((SampleApp_Group >> 8) & 0xff)
        MOV	R1,#0x14
        MOV	DPTR,#(aps_AddGroup & 0xffff)
        MOV	A,#((aps_AddGroup >> 16) & 0xff)
??SampleApp_HandleKeys_4:
        LCALL	?BCALL               ; Banked call to: DPTR()
//  367     }
//  368   }
//  369 }
??SampleApp_HandleKeys_1:
        SJMP	??Subroutine0_0
        CFI EndBlock cfiBlock2

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 13)
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        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 Invalid
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 10)
        CFI Valid
??Subroutine0_0:
        MOV	R7,#0x2
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock3
//  370 
//  371 /*********************************************************************
//  372  * LOCAL FUNCTIONS
//  373  */
//  374 
//  375 /*********************************************************************
//  376  * @fn      SampleApp_MessageMSGCB
//  377  *
//  378  * @brief   Data message processor callback.  This function processes
//  379  *          any incoming data - probably from other devices.  So, based
//  380  *          on cluster ID, perform the intended action.
//  381  *
//  382  * @param   none
//  383  *
//  384  * @return  none
//  385  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  386 void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
SampleApp_MessageMSGCB:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function SampleApp_MessageMSGCB
//  387 {
        FUNCALL SampleApp_MessageMSGCB, HalLedBlink
        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
//  388   uint16 flashTime;

⌨️ 快捷键说明

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