📄 sampleapp.s51
字号:
// 188 // start the device.
// 189 ZDOInitDevice(0);
// 190 #endif
// 191
// 192 // Setup for the periodic message's destination address
// 193 // Broadcast to everyone
// 194 SampleApp_Periodic_DstAddr.addrMode = (afAddrMode_t)AddrBroadcast;
MOV A,#0xf
MOV DPTR,#(SampleApp_Periodic_DstAddr + 2)
MOVX @DPTR,A
// 195 SampleApp_Periodic_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
MOV A,#0x14
MOV DPTR,#(SampleApp_Periodic_DstAddr + 3)
MOVX @DPTR,A
// 196 SampleApp_Periodic_DstAddr.addr.shortAddr = 0xFFFF;
MOV DPTR,#SampleApp_Periodic_DstAddr
MOV A,#-0x1
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 197
// 198 // Setup for the flash command's destination address - Group 1
// 199 SampleApp_Flash_DstAddr.addrMode = (afAddrMode_t)afAddrGroup;
MOV A,#0x1
MOV DPTR,#(SampleApp_Flash_DstAddr + 2)
MOVX @DPTR,A
// 200 SampleApp_Flash_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
MOV A,#0x14
MOV DPTR,#(SampleApp_Flash_DstAddr + 3)
MOVX @DPTR,A
// 201 SampleApp_Flash_DstAddr.addr.shortAddr = SAMPLEAPP_FLASH_GROUP;
MOV DPTR,#SampleApp_Flash_DstAddr
MOV A,#0x1
MOVX @DPTR,A
INC DPTR
CLR A
MOVX @DPTR,A
// 202
// 203 // Fill out the endpoint description.
// 204 SampleApp_epDesc.endPoint = SAMPLEAPP_ENDPOINT;
MOV A,#0x14
MOV DPTR,#SampleApp_epDesc
MOVX @DPTR,A
// 205 SampleApp_epDesc.task_id = &SampleApp_TaskID;
MOV DPTR,#(SampleApp_epDesc + 1)
MOV A,#(SampleApp_TaskID & 0xff)
MOVX @DPTR,A
INC DPTR
MOV A,#((SampleApp_TaskID >> 8) & 0xff)
MOVX @DPTR,A
// 206 SampleApp_epDesc.simpleDesc
// 207 = (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
// 208 SampleApp_epDesc.latencyReq = noLatencyReqs;
CLR A
MOV DPTR,#(SampleApp_epDesc + 5)
MOVX @DPTR,A
// 209
// 210 // Register the endpoint description with the AF
// 211 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()
// 212
// 213 // Register for all key events - This app will handle all key events
// 214 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()
// 215
// 216 // By default, all devices start out in Group 1
// 217 SampleApp_Group.ID = 0x0001;
MOV DPTR,#SampleApp_Group
MOV A,#0x1
MOVX @DPTR,A
INC DPTR
CLR A
MOVX @DPTR,A
// 218 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)
// 219 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()
// 220
// 221 #if defined ( LCD_SUPPORTED )
// 222 HalLcdWriteString( "SampleApp", HAL_LCD_LINE_1 );
// 223 #endif
// 224 }
MOV R7,#0x3
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock0
// 225
// 226 /*********************************************************************
// 227 * @fn SampleApp_ProcessEvent
// 228 *
// 229 * @brief Generic Application Task event processor. This function
// 230 * is called to process all events for the task. Events
// 231 * include timers, messages and any other user defined events.
// 232 *
// 233 * @param task_id - The OSAL assigned task ID.
// 234 * @param events - events to process. This is a bit map and can
// 235 * contain more than one event.
// 236 *
// 237 * @return none
// 238 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 239 uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )
SampleApp_ProcessEvent:
CFI Block cfiBlock1 Using cfiCommon0
CFI Function SampleApp_ProcessEvent
// 240 {
FUNCALL SampleApp_ProcessEvent, osal_msg_receive
LOCFRAME XSTACK, 12, STACK
ARGFRAME XSTACK, 12, STACK
FUNCALL SampleApp_ProcessEvent, osal_start_timerEx
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, SampleApp_MessageMSGCB
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
// 241 afIncomingMSGPacket_t *MSGpkt;
// 242
// 243 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
// 244 {
// 245 MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID );
; Setup parameters for call to function osal_msg_receive
SJMP ??SampleApp_ProcessEvent_2
// 246 while ( MSGpkt )
// 247 {
// 248 switch ( MSGpkt->hdr.event )
// 249 {
// 250 // Received when a key is pressed
// 251 case KEY_CHANGE:
// 252 SampleApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );
// 253 break;
// 254
// 255 // Received when a messages is received (OTA) for this endpoint
// 256 case AF_INCOMING_MSG_CMD:
// 257 SampleApp_MessageMSGCB( MSGpkt );
// 258 //HAL_TOGGLE_LED1();
// 259 break;
// 260
// 261 // Received whenever the device changes state in the network
// 262 case ZDO_STATE_CHANGE:
// 263 SampleApp_NwkState = (devStates_t)(MSGpkt->hdr.status);
??SampleApp_ProcessEvent_3:
MOV DPL,?V0 + 0
MOV DPH,?V0 + 1
INC DPTR
MOVX A,@DPTR
MOV DPTR,#SampleApp_NwkState
MOVX @DPTR,A
// 264 if ( (SampleApp_NwkState == DEV_ZB_COORD)
// 265 || (SampleApp_NwkState == DEV_ROUTER)
// 266 || (SampleApp_NwkState == DEV_END_DEVICE) )
XRL A,#0x9
JZ ??SampleApp_ProcessEvent_4
MOVX A,@DPTR
XRL A,#0x7
JZ ??SampleApp_ProcessEvent_4
MOVX A,@DPTR
XRL A,#0x6
JNZ ??SampleApp_ProcessEvent_5
// 267 {
// 268 // Start sending the periodic message in a regular interval.
// 269 osal_start_timerEx( SampleApp_TaskID,
// 270 SAMPLEAPP_SEND_PERIODIC_MSG_EVT,
// 271 SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT );
??SampleApp_ProcessEvent_4:
; Setup parameters for call to function osal_start_timerEx
MOV R4,#-0x78
MOV R5,#0x13
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)
??SampleApp_ProcessEvent_6:
LCALL ?BCALL ; Banked call to: DPTR()
// 272 }
// 273 else
// 274 {
// 275 // Device is no longer in the network
// 276 }
// 277 break;
// 278
// 279 default:
// 280 break;
// 281 }
// 282
// 283 // Release the memory
// 284 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()
// 285
// 286 // Next - if one is available
// 287 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_7
MOV A,?V0 + 1
??SampleApp_ProcessEvent_7:
JZ ??SampleApp_ProcessEvent_8
MOV DPL,?V0 + 0
MOV DPH,?V0 + 1
MOVX A,@DPTR
LCALL ?UC_SWITCH_SPARSE
`?<Jumptable for SampleApp_ProcessEvent>_0`:
DB 0
DB 3
DB 26
DW ??SampleApp_ProcessEvent_9
DB 192
DW ??SampleApp_ProcessEvent_10
DB 209
DW ??SampleApp_ProcessEvent_3
DW ??SampleApp_ProcessEvent_5
??SampleApp_ProcessEvent_10:
; 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)
MOV A,#((SampleApp_HandleKeys >> 16) & 0xff)
SJMP ??SampleApp_ProcessEvent_6
??SampleApp_ProcessEvent_9:
; Setup parameters for call to function SampleApp_MessageMSGCB
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -