wxl_sampleapp.s51
来自「TI的基于ZIGBEE2006的协议栈」· S51 代码 · 共 1,436 行 · 第 1/4 页
S51
1,436 行
??CrossCallReturnLabel_1:
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)
// 256 if((Rx_Buf[0] == 'O') && (Rx_Buf[1] == 'P') && (Rx_Buf[2] == 'E') && (Rx_Buf[3] == 'N'))
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
XRL A,#0x4f
JNZ ??WXL_SampleApp_MessageMSGCB_0
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
XRL A,#0x50
JNZ ??WXL_SampleApp_MessageMSGCB_0
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
XRL A,#0x45
JNZ ??WXL_SampleApp_MessageMSGCB_0
MOV A,#0x3
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
XRL A,#0x4e
JNZ ??WXL_SampleApp_MessageMSGCB_0
// 257 {
// 258 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)
LCALL ?BCALL ; Banked call to: DPTR()
// 259 WXL_SampleApp_SendData("YES",pkt->srcAddr.addr.shortAddr,3); //以单播的方式回复信号
; Setup parameters for call to function WXL_SampleApp_SendData
MOV R1,#0x3
MOV DPL,R6
MOV DPH,R7
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
MOV R2,#(`?<Constant "YES">` & 0xff)
MOV R3,#((`?<Constant "YES">` >> 8) & 0xff)
MOV DPTR,#(WXL_SampleApp_SendData & 0xffff)
MOV A,#((WXL_SampleApp_SendData >> 16) & 0xff)
??WXL_SampleApp_MessageMSGCB_3:
LCALL ?BCALL ; Banked call to: DPTR()
// 260 }
// 261 break;
// 262 }
// 263 }
??WXL_SampleApp_MessageMSGCB_0:
MOV A,#0x4
SJMP ??Subroutine2_0
CFI EndBlock cfiBlock4
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
CFI Block cfiCond5 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_0
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 16)
CFI Block cfiCond6 Using cfiCommon0
CFI (cfiCond6) NoFunction
CFI (cfiCond6) Conditional ??CrossCallReturnLabel_1
CFI (cfiCond6) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond6) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond6) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond6) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond6) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond6) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond6) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond6) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond6) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond6) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond6) CFA_SP SP+0
CFI (cfiCond6) CFA_XSP16 add(XSP16, 16)
CFI Block cfiPicker7 Using cfiCommon1
CFI (cfiPicker7) NoFunction
CFI (cfiPicker7) Picker
MOV A,R6
ADD A,#0x15
MOV DPL,A
MOV A,R7
ADDC A,#0x0
MOV DPH,A
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
MOV A,#0x2
RET
CFI EndBlock cfiCond5
CFI EndBlock cfiCond6
CFI EndBlock cfiPicker7
// 264 /*********************************************************************
// 265 * @函数名: SampleApp_SendFlashMessage
// 266 *
// 267 * @函数功能: 广播发送一串数据。
// 268 *
// 269 * @param none
// 270 *
// 271 * @return none
// 272 */
// 273
RSEG BANKED_CODE:CODE:NOROOT(0)
// 274 void WXL_SampleApp_SendFlashMessage( uint8 *buffer )
WXL_SampleApp_SendFlashMessage:
CFI Block cfiBlock8 Using cfiCommon0
CFI Function WXL_SampleApp_SendFlashMessage
// 275 {
FUNCALL WXL_SampleApp_SendFlashMessage, AF_DataRequest
LOCFRAME XSTACK, 19, STACK
ARGFRAME XSTACK, 19, 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
// 276
// 277 if ( AF_DataRequest( &WXL_SampleApp_All_DstAddr, &WXL_SampleApp_epDesc,
// 278 WXL_SAMPLEAPP_CLUSTERID2,
// 279 4,
// 280 buffer,
// 281 &WXL_SampleApp_TransID,
// 282 AF_DISCV_ROUTE,
// 283 AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
; Setup parameters for call to function AF_DataRequest
MOV ?V0 + 0,#0xa
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_ONE
CFI CFA_XSP16 add(XSP16, 11)
MOV ?V0 + 0,#(WXL_SampleApp_TransID & 0xff)
MOV ?V0 + 1,#((WXL_SampleApp_TransID >> 8) & 0xff)
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 13)
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 15)
MOV ?V0 + 0,#0x4
MOV ?V0 + 1,#0x0
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 17)
MOV ?V0 + 0,#0x2
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 19)
MOV R1,#0x20
MOV R4,#(WXL_SampleApp_epDesc & 0xff)
MOV R5,#((WXL_SampleApp_epDesc >> 8) & 0xff)
MOV R2,#(WXL_SampleApp_All_DstAddr & 0xff)
MOV R3,#((WXL_SampleApp_All_DstAddr >> 8) & 0xff)
CFI EndBlock cfiBlock8
REQUIRE ?Subroutine2
; // Fall through to label ?Subroutine2
// 284 {
// 285 }
// 286 else
// 287 {
// 288 // Error occurred in request to send.
// 289 }
// 290 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine2:
CFI Block cfiBlock9 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 19)
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)))
MOV DPTR,#(AF_DataRequest & 0xffff)
MOV A,#((AF_DataRequest >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x9
??Subroutine2_0:
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 10)
MOV R7,#0x2
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock9
// 291
// 292 //**********************************************************************
// 293 //**以短地址方式发送数据
// 294 //buf ::发送的数据
// 295 //addr::目的地址
// 296 //Leng::数据长度
// 297 //********************************************************************
RSEG BANKED_CODE:CODE:NOROOT(0)
// 298 void WXL_SampleApp_SendData(uint8 *buf, uint16 addr, uint8 Leng)
WXL_SampleApp_SendData:
CFI Block cfiBlock10 Using cfiCommon0
CFI Function WXL_SampleApp_SendData
// 299 {
FUNCALL WXL_SampleApp_SendData, AF_DataRequest
LOCFRAME XSTACK, 19, STACK
ARGFRAME XSTACK, 19, 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
// 300 WXL_SampleApp_Single_DstAddr.addr.shortAddr = addr;
MOV DPTR,#WXL_SampleApp_Single_DstAddr
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
// 301 if ( AF_DataRequest( &WXL_SampleApp_Single_DstAddr, //发送的地址和模式
// 302 &WXL_SampleApp_epDesc, //终端(比如操作系统中任务ID等)
// 303 WXL_SAMPLEAPP_CLUSTERID1,//发送串ID
// 304 Leng, //信息长度
// 305 buf, //待发送的数据
// 306 &WXL_SampleApp_TransID,
// 307 AF_DISCV_ROUTE,
// 308 AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
; Setup parameters for call to function AF_DataRequest
MOV ?V0 + 0,#0xa
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_ONE
CFI CFA_XSP16 add(XSP16, 11)
MOV ?V0 + 0,#(WXL_SampleApp_TransID & 0xff)
MOV ?V0 + 1,#((WXL_SampleApp_TransID >> 8) & 0xff)
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 13)
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 15)
MOV ?V0 + 0,R1
MOV ?V0 + 1,#0x0
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 17)
MOV ?V0 + 0,#0x1
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 19)
MOV R1,#0x20
MOV R4,#(WXL_SampleApp_epDesc & 0xff)
MOV R5,#((WXL_SampleApp_epDesc >> 8) & 0xff)
MOV R2,#(WXL_SampleApp_Single_DstAddr & 0xff)
MOV R3,#((WXL_SampleApp_Single_DstAddr >> 8) & 0xff)
SJMP ?Subroutine2
CFI EndBlock cfiBlock10
// 309 {
// 310
// 311 }
// 312 else
// 313 {
// 314
// 315 }
// 316 }
RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for <Constant "OPEN">>`:
DB "OPEN"
RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for <Constant "YES">>`:
DB "YES"
RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for WXL_SampleApp_ClusterList>`:
DW 1, 2
RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for WXL_SampleApp_SimpleDesc>`:
DB 20
DW 3848, 1
DB 0, 2
DW WXL_SampleApp_ClusterList
DB 2
DW WXL_SampleApp_ClusterList
END
// 317
// 318 /*********************************************************************
// 319 *********************************************************************/
//
// 714 bytes in segment BANKED_CODE
// 25 bytes in segment XDATA_I
// 25 bytes in segment XDATA_ID
// 17 bytes in segment XDATA_Z
//
// 739 bytes of CODE memory
// 42 bytes of XDATA memory
//
//Errors: none
//Warnings: none
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?