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

📄 sampleapp.s51

📁 用IAR开发的ZIGBEE网络路由例子
💻 S51
📖 第 1 页 / 共 5 页
字号:
        MOV	A,#((SampleApp_TaskID >> 8) & 0xff)
        MOVX	@DPTR,A
//  195   SampleApp_epDesc.simpleDesc
//  196             = (SimpleDescriptionFormat_t *)&SampleApp_SimpleDesc;
        MOV	DPTR,#(SampleApp_epDesc + 3)
        MOV	A,#(SampleApp_SimpleDesc & 0xff)
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,#((SampleApp_SimpleDesc >> 8) & 0xff)
        MOVX	@DPTR,A
//  197   SampleApp_epDesc.latencyReq = noLatencyReqs;
        CLR	A
        MOV	DPTR,#(SampleApp_epDesc + 5)
        MOVX	@DPTR,A
//  198 
//  199   // Register the endpoint description with the AF
//  200   afRegister( &SampleApp_epDesc );
        ; Setup parameters for call to function afRegister
        MOV	R2,#(SampleApp_epDesc & 0xff)
        MOV	R3,#((SampleApp_epDesc >> 8) & 0xff)
        MOV	DPTR,#(afRegister & 0xffff)
        MOV	A,#((afRegister >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  201 
//  202   // Register for all key events - This app will handle all key events
//  203   RegisterForKeys( SampleApp_TaskID );
        ; Setup parameters for call to function RegisterForKeys
        MOV	DPTR,#SampleApp_TaskID
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(RegisterForKeys & 0xffff)
        MOV	A,#((RegisterForKeys >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  204 
//  205   // By default, all devices start out in Group 1
//  206   SampleApp_Group.ID = 0x0001;
        MOV	DPTR,#SampleApp_Group
        MOV	A,#0x1
        MOVX	@DPTR,A
        INC	DPTR
        CLR	A
        MOVX	@DPTR,A
//  207   osal_memcpy( SampleApp_Group.name, "Group 1", 7  );
        ; Setup parameters for call to function osal_memcpy
        MOV	?V0 + 0,#(`?<Constant "Group 1">` & 0xff)
        MOV	?V0 + 1,#((`?<Constant "Group 1">` >> 8) & 0xff)
        MOV	?V0 + 2,A
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_THREE
        CFI CFA_XSP16 add(XSP16, 14)
        MOV	R4,#0x7
        MOV	R5,#0x0
        MOV	R2,#((SampleApp_Group + 2) & 0xff)
        MOV	R3,#(((SampleApp_Group + 2) >> 8) & 0xff)
        MOV	DPTR,#(osal_memcpy & 0xffff)
        MOV	A,#((osal_memcpy >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x3
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 11)
//  208   aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );
        ; 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)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  209 
//  210 #if defined ( LCD_SUPPORTED )
//  211   HalLcdWriteString( "SampleApp", HAL_LCD_LINE_1 );
//  212 #endif
//  213 }
        MOV	R7,#0x3
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock0
//  214 
//  215 /*********************************************************************
//  216  * @fn      SampleApp_ProcessEvent
//  217  *
//  218  * @brief   Generic Application Task event processor.  This function
//  219  *          is called to process all events for the task.  Events
//  220  *          include timers, messages and any other user defined events.
//  221  *
//  222  * @param   task_id  - The OSAL assigned task ID.
//  223  * @param   events - events to process.  This is a bit map and can
//  224  *                   contain more than one event.
//  225  *
//  226  * @return  none
//  227  */

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  228 byte mubiaoIEEE[8];
mubiaoIEEE:
        DS 8

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  229 uint16 rspaddr;
rspaddr:
        DS 2

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  230 uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )
SampleApp_ProcessEvent:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function SampleApp_ProcessEvent
//  231 {
        FUNCALL SampleApp_ProcessEvent, osal_msg_receive
        LOCFRAME XSTACK, 12, STACK
        ARGFRAME XSTACK, 12, STACK
        FUNCALL SampleApp_ProcessEvent, osal_set_event
        LOCFRAME XSTACK, 12, STACK
        ARGFRAME XSTACK, 12, STACK
        FUNCALL SampleApp_ProcessEvent, osal_msg_deallocate
        LOCFRAME XSTACK, 12, STACK
        ARGFRAME XSTACK, 12, STACK
        FUNCALL SampleApp_ProcessEvent, osal_msg_receive
        LOCFRAME XSTACK, 12, STACK
        ARGFRAME XSTACK, 12, STACK
        FUNCALL SampleApp_ProcessEvent, SampleApp_HandleKeys
        LOCFRAME XSTACK, 12, STACK
        ARGFRAME XSTACK, 12, STACK
        FUNCALL SampleApp_ProcessEvent, ZDP_NwkAddrReq
        LOCFRAME XSTACK, 12, STACK
        ARGFRAME XSTACK, 12, STACK
        FUNCALL SampleApp_ProcessEvent, SampleApp_SendPeriodicMessage
        LOCFRAME XSTACK, 12, STACK
        ARGFRAME XSTACK, 12, STACK
        FUNCALL SampleApp_ProcessEvent, osal_rand
        LOCFRAME XSTACK, 12, STACK
        ARGFRAME XSTACK, 12, STACK
        FUNCALL SampleApp_ProcessEvent, osal_start_timerEx
        LOCFRAME XSTACK, 12, STACK
        ARGFRAME XSTACK, 12, STACK
        MOV	A,#-0xc
        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 V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 12)
        ; Saved register size: 12
        ; Auto size: 0
        MOV	A,R2
        MOV	R6,A
        MOV	A,R3
        MOV	R7,A
//  232   afIncomingMSGPacket_t *MSGpkt;
//  233 
//  234   if ( events & SYS_EVENT_MSG )
        MOV	A,#-0x80
        ANL	A,R7
        MOV	R1,A
        CLR	A
        JNZ	??SampleApp_ProcessEvent_0
        MOV	A,R1
??SampleApp_ProcessEvent_0:
        JNZ	$+5
        LJMP	??SampleApp_ProcessEvent_1 & 0xFFFF
//  235   {
//  236     MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID );
        ; Setup parameters for call to function osal_msg_receive
        SJMP	??SampleApp_ProcessEvent_2
//  237     while ( MSGpkt )
//  238     {
//  239       switch ( MSGpkt->hdr.event )
//  240       {
//  241         // Received when a key is pressed
//  242         case KEY_CHANGE:
//  243           SampleApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );
//  244           break;
//  245 
//  246         // Received when a messages is received (OTA) for this endpoint
//  247         case AF_INCOMING_MSG_CMD:
//  248           //SampleApp_MessageMSGCB( MSGpkt );
//  249           P1_1=~P1_1;
//  250           break;
//  251 
//  252         // Received whenever the device changes state in the network
//  253         case ZDO_STATE_CHANGE:
//  254           SampleApp_NwkState = (devStates_t)(MSGpkt->hdr.status);
//  255           if  (SampleApp_NwkState == DEV_ZB_COORD)
//  256           {
//  257 mubiaoIEEE[0]=0xa7;
//  258     for(byte i=1;i<8;i++)
//  259     {
//  260     mubiaoIEEE[i]=0xff;
//  261     }
//  262     ZDP_NwkAddrReq(mubiaoIEEE,1,1,0);
//  263           }
//  264             /*
//  265           SampleApp_NwkState = (devStates_t)(MSGpkt->hdr.status);
//  266           if ( (SampleApp_NwkState == DEV_ZB_COORD)
//  267              // || (SampleApp_NwkState == DEV_ROUTER)
//  268              // || (SampleApp_NwkState == DEV_END_DEVICE)
//  269               )
//  270           {
//  271             // Start sending the periodic message in a regular interval.
//  272             osal_start_timerEx( SampleApp_TaskID,
//  273                               SAMPLEAPP_SEND_PERIODIC_MSG_EVT,
//  274                               SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT );
//  275 
//  276           }
//  277      */
//  278           break;
//  279       case ZDO_NWK_ADDR_RESP:
//  280 
//  281 
//  282     SampleApp_Periodic_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;
??SampleApp_ProcessEvent_3:
        MOV	A,#0x2
        MOV	DPTR,#(SampleApp_Periodic_DstAddr + 2)
        MOVX	@DPTR,A
//  283   SampleApp_Periodic_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
        MOV	A,#0x14
        MOV	DPTR,#(SampleApp_Periodic_DstAddr + 3)
        MOVX	@DPTR,A
//  284   SampleApp_Periodic_DstAddr.addr.shortAddr = rspaddr;
        MOV	DPTR,#rspaddr
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#SampleApp_Periodic_DstAddr
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  285     osal_set_event(SampleApp_TaskID,SAMPLEAPP_SEND_PERIODIC_MSG_EVT);
        ; Setup parameters for call to function osal_set_event
        MOV	R2,#0x1
        MOV	R3,#0x0
        MOV	DPTR,#SampleApp_TaskID
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(osal_set_event & 0xffff)
        MOV	A,#((osal_set_event >> 16) & 0xff)
??SampleApp_ProcessEvent_4:
        LCALL	?BCALL               ; Banked call to: DPTR()
//  286         break;
//  287         default:
//  288           break;
//  289       }
//  290 
//  291       // Release the memory
//  292       osal_msg_deallocate( (uint8 *)MSGpkt );
??SampleApp_ProcessEvent_5:
        ; 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()
//  293 
//  294       // Next - if one is available
//  295       MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID );
        ; Setup parameters for call to function osal_msg_receive
??SampleApp_ProcessEvent_2:
        MOV	DPTR,#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 + 0,R2
        MOV	?V0 + 1,R3
        MOV	A,?V0 + 0
        JNZ	??SampleApp_ProcessEvent_6
        MOV	A,?V0 + 1
??SampleApp_ProcessEvent_6:
        JZ	??SampleApp_ProcessEvent_7
        MOV	DPL,?V0 + 0
        MOV	DPH,?V0 + 1
        MOVX	A,@DPTR
        LCALL	?UC_SWITCH_SPARSE
`?<Jumptable for SampleApp_ProcessEvent>_0`:
        DB        0
        DB        4
        DB        26
        DW        ??SampleApp_ProcessEvent_8
        DB        192
        DW        ??SampleApp_ProcessEvent_9
        DB        209
        DW        ??SampleApp_ProcessEvent_10
        DB        211
        DW        ??SampleApp_ProcessEvent_3
        DW        ??SampleApp_ProcessEvent_5
??SampleApp_ProcessEvent_9:
        ; Setup parameters for call to function SampleApp_HandleKeys
        MOV	DPL,?V0 + 0
        MOV	DPH,?V0 + 1
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R2,A
        MOV	DPL,?V0 + 0
        MOV	DPH,?V0 + 1
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(SampleApp_HandleKeys & 0xffff)

⌨️ 快捷键说明

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