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

📄 zdprofile.lst

📁 用IAR开发的ZIGBEE网络路由例子
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \                                 In segment BANKED_CODE, align 1, keep-with-next
    298          afStatus_t ZDP_MatchDescReq( zAddrType_t *dstAddr, uint16 nwkAddr,
   \                     ZDP_MatchDescReq:
    299                                          uint16 ProfileID,
    300                                          byte NumInClusters, cId_t *InClusterList,
    301                                          byte NumOutClusters, cId_t *OutClusterList,
    302                                          byte SecurityEnable )
    303          {
   \   000000   74F0         MOV     A,#-0x10
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 16
   \   000005                ; Auto size: 2
   \   000005   74FE         MOV     A,#-0x2
   \   000007   12....       LCALL   ?ALLOC_XSTACK8
   \   00000A   85..82       MOV     DPL,?XSP + 0
   \   00000D   85..83       MOV     DPH,?XSP + 1
   \   000010   EA           MOV     A,R2
   \   000011   F0           MOVX    @DPTR,A
   \   000012   A3           INC     DPTR
   \   000013   EB           MOV     A,R3
   \   000014   F0           MOVX    @DPTR,A
   \   000015   EC           MOV     A,R4
   \   000016   FE           MOV     R6,A
   \   000017   ED           MOV     A,R5
   \   000018   FF           MOV     R7,A
   \   000019   89..         MOV     ?V0 + 6,R1
   \   00001B   7412         MOV     A,#0x12
   \   00001D   12....       LCALL   ?XSTACK_DISP0_8
   \   000020   12....       LCALL   ?Subroutine14 & 0xFFFF
   \                     ??CrossCallReturnLabel_38:
   \   000023   7416         MOV     A,#0x16
   \   000025   12....       LCALL   ?XSTACK_DISP0_8
   \   000028   E0           MOVX    A,@DPTR
   \   000029   F5..         MOV     ?V0 + 7,A
   \   00002B   7417         MOV     A,#0x17
   \   00002D   12....       LCALL   ?XSTACK_DISP0_8
   \   000030   E0           MOVX    A,@DPTR
   \   000031   F5..         MOV     ?V0 + 4,A
   \   000033   A3           INC     DPTR
   \   000034   E0           MOVX    A,@DPTR
   \   000035   F5..         MOV     ?V0 + 5,A
    304            byte *pBuf = ZDP_TmpBuf;
   \   000037   12....       LCALL   ?Subroutine16 & 0xFFFF
    305            // nwkAddr+ProfileID+NumInClusters+NumOutClusters.
    306            byte i, len = 2 + 2 + 1 + 1;  // nwkAddr+ProfileID+NumInClusters+NumOutClusters.
    307            uint8 protoVer = NLME_GetProtocolVersion();
   \                     ??CrossCallReturnLabel_103:
   \   00003A   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00003D   E9           MOV     A,R1
   \   00003E   FB           MOV     R3,A
    308          
    309            len += (NumInClusters + NumOutClusters)*((protoVer != ZB_PROT_V1_0) ? sizeof ( uint16 ) : sizeof( uint8 ));
   \   00003F   7401         MOV     A,#0x1
   \   000041   6B           XRL     A,R3
   \   000042   6004         JZ      ??ZDP_MatchDescReq_0
   \   000044   7802         MOV     R0,#0x2
   \   000046   8002         SJMP    ??ZDP_MatchDescReq_1
   \                     ??ZDP_MatchDescReq_0:
   \   000048   7801         MOV     R0,#0x1
   \                     ??ZDP_MatchDescReq_1:
   \   00004A   E5..         MOV     A,?V0 + 7
   \   00004C   25..         ADD     A,?V0 + 6
   \   00004E   F5F0         MOV     B,A
   \   000050   E8           MOV     A,R0
   \   000051   A4           MUL     AB
   \   000052   2406         ADD     A,#0x6
   \   000054   FA           MOV     R2,A
    310          
    311            if ( len >= ZDP_BUF_SZ-1 )
   \   000055   C3           CLR     C
   \   000056   944F         SUBB    A,#0x4f
   \   000058   4005         JC      ??ZDP_MatchDescReq_2
    312            {
    313              return afStatus_MEM_FAIL;
   \   00005A   7981         MOV     R1,#-0x7f
   \   00005C   02....       LJMP    ??ZDP_MatchDescReq_3 & 0xFFFF
    314            }
    315          
    316            *pBuf++ = LO_UINT16( nwkAddr );   // NWKAddrOfInterest
   \                     ??ZDP_MatchDescReq_2:
   \   00005F   EE           MOV     A,R6
   \   000060   85..82       MOV     DPL,?V0 + 2
   \   000063   85..83       MOV     DPH,?V0 + 3
   \   000066   F0           MOVX    @DPTR,A
   \   000067   A3           INC     DPTR
    317            *pBuf++ = HI_UINT16( nwkAddr );
   \   000068   EF           MOV     A,R7
   \   000069   12....       LCALL   ?Subroutine23 & 0xFFFF
    318          
    319            *pBuf++ = LO_UINT16( ProfileID );   // Profile ID
    320            *pBuf++ = HI_UINT16( ProfileID );
    321          
    322            *pBuf++ = NumInClusters; // Input cluster list
   \                     ??CrossCallReturnLabel_51:
   \   00006C   E5..         MOV     A,?V0 + 6
   \   00006E   12....       LCALL   ?Subroutine25 & 0xFFFF
    323            if ( NumInClusters )
   \                     ??CrossCallReturnLabel_55:
   \   000071   6028         JZ      ??ZDP_MatchDescReq_4
    324            {
    325              for (i=0; i<NumInClusters; ++i)  {
   \   000073   7C00         MOV     R4,#0x0
    326                *pBuf++ = LO_UINT16( InClusterList[i] );
   \                     ??ZDP_MatchDescReq_5:
   \   000075   EC           MOV     A,R4
   \   000076   C3           CLR     C
   \   000077   33           RLC     A
   \   000078   F8           MOV     R0,A
   \   000079   E4           CLR     A
   \   00007A   33           RLC     A
   \   00007B   F9           MOV     R1,A
   \   00007C   7414         MOV     A,#0x14
   \   00007E   12....       LCALL   ?XSTACK_DISP0_8
   \   000081   12....       LCALL   ?Subroutine22 & 0xFFFF
   \                     ??CrossCallReturnLabel_49:
   \   000084   12....       LCALL   ?Subroutine8 & 0xFFFF
    327                if (protoVer != ZB_PROT_V1_0)  {
   \                     ??CrossCallReturnLabel_20:
   \   000087   600B         JZ      ??CrossCallReturnLabel_33
    328                  *pBuf++ = HI_UINT16( InClusterList[i] );
   \   000089   7414         MOV     A,#0x14
   \   00008B   12....       LCALL   ?XSTACK_DISP0_8
   \   00008E   12....       LCALL   ?Subroutine22 & 0xFFFF
   \                     ??CrossCallReturnLabel_50:
   \   000091   12....       LCALL   ?Subroutine12 & 0xFFFF
    329                }
    330              }
   \                     ??CrossCallReturnLabel_33:
   \   000094   0C           INC     R4
   \   000095   EC           MOV     A,R4
   \   000096   C3           CLR     C
   \   000097   95..         SUBB    A,?V0 + 6
   \   000099   40DA         JC      ??ZDP_MatchDescReq_5
    331            }
    332          
    333            *pBuf++ = NumOutClusters; // Output cluster list
   \                     ??ZDP_MatchDescReq_4:
   \   00009B   85..82       MOV     DPL,?V0 + 2
   \   00009E   85..83       MOV     DPH,?V0 + 3
   \   0000A1   E5..         MOV     A,?V0 + 7
   \   0000A3   12....       LCALL   ?Subroutine25 & 0xFFFF
    334            if ( NumOutClusters )
   \                     ??CrossCallReturnLabel_56:
   \   0000A6   6028         JZ      ??ZDP_MatchDescReq_6
    335            {
    336              for (i=0; i<NumOutClusters; ++i)  {
   \   0000A8   7C00         MOV     R4,#0x0
    337                *pBuf++ = LO_UINT16( OutClusterList[i] );
   \                     ??ZDP_MatchDescReq_7:
   \   0000AA   EC           MOV     A,R4
   \   0000AB   C3           CLR     C
   \   0000AC   33           RLC     A
   \   0000AD   F8           MOV     R0,A
   \   0000AE   E4           CLR     A
   \   0000AF   33           RLC     A
   \   0000B0   F9           MOV     R1,A
   \   0000B1   E5..         MOV     A,?V0 + 4
   \   0000B3   28           ADD     A,R0
   \   0000B4   F582         MOV     DPL,A
   \   0000B6   E5..         MOV     A,?V0 + 5
   \   0000B8   39           ADDC    A,R1
   \   0000B9   12....       LCALL   ?Subroutine8 & 0xFFFF
    338                if (protoVer != ZB_PROT_V1_0)  {
   \                     ??CrossCallReturnLabel_21:
   \   0000BC   600B         JZ      ??CrossCallReturnLabel_34
    339                  *pBuf++ = HI_UINT16( OutClusterList[i] );
   \   0000BE   E5..         MOV     A,?V0 + 4
   \   0000C0   28           ADD     A,R0
   \   0000C1   F582         MOV     DPL,A
   \   0000C3   E5..         MOV     A,?V0 + 5
   \   0000C5   39           ADDC    A,R1
   \   0000C6   12....       LCALL   ?Subroutine12 & 0xFFFF
    340                }
    341              }
   \                     ??CrossCallReturnLabel_34:
   \   0000C9   0C           INC     R4
   \   0000CA   EC           MOV     A,R4
   \   0000CB   C3           CLR     C
   \   0000CC   95..         SUBB    A,?V0 + 7
   \   0000CE   40DA         JC      ??ZDP_MatchDescReq_7
    342            }
    343          
    344            return fillAndSend( &ZDP_TransID, dstAddr, Match_Desc_req, len );
   \                     ??ZDP_MatchDescReq_6:
   \   0000D0                ; Setup parameters for call to function fillAndSend
   \   0000D0   75..06       MOV     ?V0 + 0,#0x6
   \   0000D3   75..00       MOV     ?V0 + 1,#0x0
   \   0000D6   78..         MOV     R0,#?V0 + 0
   \   0000D8   12....       LCALL   ?PUSH_XSTACK_I_TWO
   \   0000DB   EA           MOV     A,R2
   \   0000DC   F9           MOV     R1,A
   \   0000DD   7402         MOV     A,#0x2
   \   0000DF   12....       LCALL   ?XSTACK_DISP0_8
   \   0000E2   12....       LCALL   ?Subroutine15 & 0xFFFF
   \                     ??CrossCallReturnLabel_41:
   \   0000E5   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   0000E8   7402         MOV     A,#0x2
   \   0000EA   12....       LCALL   ?DEALLOC_XSTACK8
   \                     ??ZDP_MatchDescReq_3:
   \   0000ED   7402         MOV     A,#0x2
   \   0000EF   02....       LJMP    ?Subroutine47 & 0xFFFF
    345          }

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine22:
   \   000000   12....       LCALL   ?Subroutine44 & 0xFFFF
   \                     ??CrossCallReturnLabel_97:
   \   000003   22           RET

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine44:
   \   000000   E0           MOVX    A,@DPTR
   \   000001   28           ADD     A,R0
   \   000002   FD           MOV     R5,A
   \   000003   A3           INC     DPTR
   \   000004   E0           MOVX    A,@DPTR
   \   000005   39           ADDC    A,R1
   \   000006   8D82         MOV     DPL,R5
   \   000008   22           RET

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine12:
   \   000000   12....       LCALL   ?Subroutine32 & 0xFFFF
   \                     ??CrossCallReturnLabel_73:
   \   000003   22           RET

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine8:
   \   000000   12....       LCALL   ?Subroutine30 & 0xFFFF
   \                     ??CrossCallReturnLabel_67:
   \   000003   6B           XRL     A,R3
   \   000004   22           RET

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine23:
   \   000000   F0           MOVX    @DPTR,A
   \   000001   A3           INC     DPTR
   \   000002   E5..         MOV     A,?V0 + 0
   \   000004   F0           MOVX    @DPTR,A
   \   000005   A3           INC     DPTR
   \   000006   E5..         MOV     A,?V0 + 1
   \   000008   F0           MOVX    @DPTR,A
   \   000009   A3           INC     DPTR
   \   00000A   22           RET

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine49:
   \   000000   90....       MOV     DPTR,#(NLME_GetProtocolVersion & 0xffff)
   \   000003   74..         MOV     A,#((NLME_GetProtocolVersion >> 16) & 0xff)
   \   000005   22           RET

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine47:
   \   000000   12....       LCALL   ?DEALLOC_XSTACK8

⌨️ 快捷键说明

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