wxl_sampleapp.s51

来自「TI的基于ZIGBEE2006的协议栈」· S51 代码 · 共 1,436 行 · 第 1/4 页

S51
1,436
字号
        ; Auto size: 0
        MOV	?V0 + 0,R2
        MOV	?V0 + 1,R3
//  140   afIncomingMSGPacket_t *MSGpkt;
//  141 
//  142   if ( events & SYS_EVENT_MSG )                                                   //系统信息,
        MOV	A,#-0x80
        ANL	A,?V0 + 1
        MOV	R1,A
        CLR	A
        JNZ	??WXL_SampleApp_ProcessEvent_0
        MOV	A,R1
??WXL_SampleApp_ProcessEvent_0:
        JZ	??WXL_SampleApp_ProcessEvent_1
//  143   {
//  144     MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( WXL_SampleApp_TaskID );   //OS发送过来的信息
        ; Setup parameters for call to function osal_msg_receive
        SJMP	??WXL_SampleApp_ProcessEvent_2
//  145     while ( MSGpkt )
//  146     {
//  147       switch ( MSGpkt->hdr.event )
//  148       {
//  149           // 按键事件
//  150         case KEY_CHANGE:
//  151           //按键处理函数
//  152           WXL_SampleApp_HandleKeys( ((keyChange_t *)MSGpkt)->keys );
//  153           break;
//  154 
//  155           // 接收数据事件
//  156         case AF_INCOMING_MSG_CMD:
//  157           //接收数据的处理函数
//  158           WXL_SampleApp_MessageMSGCB( MSGpkt );
//  159           break;
//  160 
//  161           // 网络状态发生变化时间
//  162         case ZDO_STATE_CHANGE:
//  163           WXL_SampleApp_NwkState = (devStates_t)(MSGpkt->hdr.status);         //获取网络状态
??WXL_SampleApp_ProcessEvent_3:
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPTR,#WXL_SampleApp_NwkState
        MOVX	@DPTR,A
//  164           if ( (WXL_SampleApp_NwkState == DEV_ZB_COORD)                       //判断网络类型
//  165               || (WXL_SampleApp_NwkState == DEV_ROUTER)
//  166               || (WXL_SampleApp_NwkState == DEV_END_DEVICE) )
//  167           {
//  168 
//  169           }
//  170           else
//  171           {
//  172             // 设备不属于这个网络
//  173           }
//  174           break;
//  175 
//  176         default:
//  177           break;
//  178       }
//  179 
//  180       // 释放存储器
//  181       osal_msg_deallocate( (uint8 *)MSGpkt );
??WXL_SampleApp_ProcessEvent_4:
        ; Setup parameters for call to function osal_msg_deallocate
        MOV	A,R6
        MOV	R2,A
        MOV	A,R7
        MOV	R3,A
        MOV	DPTR,#(osal_msg_deallocate & 0xffff)
        MOV	A,#((osal_msg_deallocate >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  182 
//  183       // Next - 如果有一个空闲的任务
//  184       MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( WXL_SampleApp_TaskID );
        ; Setup parameters for call to function osal_msg_receive
??WXL_SampleApp_ProcessEvent_2:
        MOV	DPTR,#WXL_SampleApp_TaskID
        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 + 2,R2
        MOV	?V0 + 3,R3
        MOV	R6,?V0 + 2
        MOV	R7,?V0 + 3
        MOV	A,R6
        JNZ	??WXL_SampleApp_ProcessEvent_5
        MOV	A,R7
??WXL_SampleApp_ProcessEvent_5:
        JZ	??WXL_SampleApp_ProcessEvent_6
        MOV	DPL,R6
        MOV	DPH,R7
        MOVX	A,@DPTR
        LCALL	?UC_SWITCH_SPARSE
`?<Jumptable for WXL_SampleApp_ProcessEvent>_0`:
        DB        0
        DB        3
        DB        26
        DW        ??WXL_SampleApp_ProcessEvent_7
        DB        192
        DW        ??WXL_SampleApp_ProcessEvent_8
        DB        209
        DW        ??WXL_SampleApp_ProcessEvent_3
        DW        ??WXL_SampleApp_ProcessEvent_4
??WXL_SampleApp_ProcessEvent_8:
        ; Setup parameters for call to function WXL_SampleApp_HandleKeys
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(WXL_SampleApp_HandleKeys & 0xffff)
        MOV	A,#((WXL_SampleApp_HandleKeys >> 16) & 0xff)
??WXL_SampleApp_ProcessEvent_9:
        LCALL	?BCALL               ; Banked call to: DPTR()
        SJMP	??WXL_SampleApp_ProcessEvent_4
??WXL_SampleApp_ProcessEvent_7:
        ; Setup parameters for call to function WXL_SampleApp_MessageMSGCB
        MOV	A,R6
        MOV	R2,A
        MOV	A,R7
        MOV	R3,A
        MOV	DPTR,#(WXL_SampleApp_MessageMSGCB & 0xffff)
        MOV	A,#((WXL_SampleApp_MessageMSGCB >> 16) & 0xff)
        SJMP	??WXL_SampleApp_ProcessEvent_9
//  185     }
//  186 
//  187     // 返回未处理的任务
//  188     return (events ^ SYS_EVENT_MSG);
??WXL_SampleApp_ProcessEvent_6:
        MOV	R2,?V0 + 0
        MOV	A,#-0x80
        XRL	A,?V0 + 1
        MOV	R3,A
        SJMP	??WXL_SampleApp_ProcessEvent_10
//  189   }
//  190   return 0;
??WXL_SampleApp_ProcessEvent_1:
        MOV	R2,#0x0
        MOV	R3,#0x0
??WXL_SampleApp_ProcessEvent_10:
        MOV	R7,#0x4
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock2
//  191 }
//  192 
//  193 /*********************************************************************
//  194  * 事件处理函数
//  195  */
//  196 
//  197 /*********************************************************************
//  198  * @函数名   WXL_SampleApp_ProcessEvent
//  199  *
//  200  * 函数功能: 一般应用任务事件处理,这个函数是处理所有的事件到任务,事件包括
//  201  *          时间片、消息和所有其他使用者定义过的时间。
//  202  *
//  203  * @参 数: task_id - OS分配的任务ID.  这个ID将用于发送数据和设置时间片.
//  204  *          events  - 处理的事件
//  205  *
//  206  * @return  none
//  207  */
//  208 
//  209 /*********************************************************************
//  210  * @函数名     WXL_SampleApp_HandleKeys
//  211  *
//  212  * @函数功能: 处理所有的按键事件
//  213  *
//  214  * @参数:     keys - 返回的按键值
//  215  *
//  216  *
//  217  * @return  none
//  218  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  219 void WXL_SampleApp_HandleKeys(uint8 keys )
WXL_SampleApp_HandleKeys:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function WXL_SampleApp_HandleKeys
//  220 {
        FUNCALL WXL_SampleApp_HandleKeys, WXL_SampleApp_SendFlashMessage
        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
//  221   if ( keys & HAL_KEY_SW_1 )
        MOV	A,R1
        MOV	C,0xE0 /* A   */.0
        JNC	??WXL_SampleApp_HandleKeys_0
//  222   {
//  223     if(WXL_SampleApp_NwkState == DEV_ZB_COORD)                      //如果是协调器
        MOV	DPTR,#WXL_SampleApp_NwkState
        MOVX	A,@DPTR
        XRL	A,#0x9
        JNZ	??WXL_SampleApp_HandleKeys_0
//  224     WXL_SampleApp_SendFlashMessage( "OPEN" );                       //发送数据
        ; Setup parameters for call to function WXL_SampleApp_SendFlashMessage
        MOV	R2,#(`?<Constant "OPEN">` & 0xff)
        MOV	R3,#((`?<Constant "OPEN">` >> 8) & 0xff)
        MOV	DPTR,#(WXL_SampleApp_SendFlashMessage & 0xffff)
        MOV	A,#((WXL_SampleApp_SendFlashMessage >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  225     else
//  226     {
//  227 
//  228     }
//  229   }
//  230 }
??WXL_SampleApp_HandleKeys_0:
        LJMP	?Subroutine1 & 0xFFFF
        CFI EndBlock cfiBlock3
//  231 
//  232 /*********************************************************************
//  233  * @函数名:   WXL_SampleApp_MessageMSGCB
//  234  *
//  235  * @函数功能: 接收的数据处理量.根据不同的串ID实现不同的功能。
//  236  *
//  237  * @param   none
//  238  *
//  239  * @return  none
//  240  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  241 void WXL_SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
WXL_SampleApp_MessageMSGCB:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function WXL_SampleApp_MessageMSGCB
//  242 {
        FUNCALL WXL_SampleApp_MessageMSGCB, memcpy
        LOCFRAME XSTACK, 16, STACK
        ARGFRAME XSTACK, 16, STACK
        FUNCALL WXL_SampleApp_MessageMSGCB, HalLedBlink
        LOCFRAME XSTACK, 14, STACK
        ARGFRAME XSTACK, 14, STACK
        FUNCALL WXL_SampleApp_MessageMSGCB, memcpy
        LOCFRAME XSTACK, 16, STACK
        ARGFRAME XSTACK, 16, STACK
        FUNCALL WXL_SampleApp_MessageMSGCB, HalLedBlink
        LOCFRAME XSTACK, 14, STACK
        ARGFRAME XSTACK, 14, STACK
        FUNCALL WXL_SampleApp_MessageMSGCB, WXL_SampleApp_SendData
        LOCFRAME XSTACK, 14, STACK
        ARGFRAME XSTACK, 14, 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: 4
        MOV	A,#-0x4
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 14)
        MOV	A,R2
        MOV	R6,A
        MOV	A,R3
        MOV	R7,A
//  243   unsigned char Rx_Buf[4];
//  244   switch ( pkt->clusterId )
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	?V0 + 0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	?V0 + 1,A
        MOV	R0,#?V0 + 0
        LCALL	?US_SWITCH_DENSE
`?<Jumptable for WXL_SampleApp_MessageMSGCB>_0`:
        DW        1
        DB        1
        DW        ??WXL_SampleApp_MessageMSGCB_0
        DW        ??WXL_SampleApp_MessageMSGCB_1
        DW        ??WXL_SampleApp_MessageMSGCB_2
//  245   {
//  246     case WXL_SAMPLEAPP_CLUSTERID1:
//  247       memcpy(Rx_Buf,pkt->cmd.Data,3);
??WXL_SampleApp_MessageMSGCB_1:
        ; Setup parameters for call to function memcpy
        MOV	?V0 + 0,#0x3
        MOV	?V0 + 1,#0x0
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 16)
        LCALL	?Subroutine0 & 0xFFFF
??CrossCallReturnLabel_0:
        LCALL	?XSTACK_DISP0_8
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	DPTR,#(memcpy & 0xffff)
        MOV	A,#((memcpy >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x2
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 14)
//  248       if((Rx_Buf[0] == 'Y') && (Rx_Buf[1] == 'E') && (Rx_Buf[2] == 'S'))
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	A,@DPTR
        XRL	A,#0x59
        JZ	$+5
        LJMP	??WXL_SampleApp_MessageMSGCB_0 & 0xFFFF
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        XRL	A,#0x45
        JZ	$+5
        LJMP	??WXL_SampleApp_MessageMSGCB_0 & 0xFFFF
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        XRL	A,#0x53
        JZ	$+5
        LJMP	??WXL_SampleApp_MessageMSGCB_0 & 0xFFFF
//  249       {
//  250         HalLedBlink( HAL_LED_4, 4, 50, 250);         //小灯闪烁四次
        ; Setup parameters for call to function HalLedBlink
        MOV	R4,#-0x6
        MOV	R5,#0x0
        MOV	R3,#0x32
        MOV	R2,#0x4
        MOV	R1,#0x8
        MOV	DPTR,#(HalLedBlink & 0xffff)
        MOV	A,#((HalLedBlink >> 16) & 0xff)
        SJMP	??WXL_SampleApp_MessageMSGCB_3
//  251       }
//  252       break;
//  253 
//  254     case WXL_SAMPLEAPP_CLUSTERID2:
//  255       memcpy(Rx_Buf,pkt->cmd.Data,4);
??WXL_SampleApp_MessageMSGCB_2:
        ; Setup parameters for call to function memcpy
        MOV	?V0 + 0,#0x4
        MOV	?V0 + 1,#0x0
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 16)
        LCALL	?Subroutine0 & 0xFFFF

⌨️ 快捷键说明

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