📄 mac_loc.s51
字号:
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX @DPTR,A
// 324 ieeeAddress[7] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY + 7);
MOV DPTR,#-0x1
CLR A
MOVC A,@A+DPTR
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX @DPTR,A
// 325
// 326 // restore old bank settings
// 327 MEMCTR = bank;
MOV 0xc7,R4
// 328 }
LJMP ??Subroutine1_0
CFI EndBlock cfiBlock7
// 329
// 330 /******************************************************************************
// 331 *
// 332 ******************************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 333 void DataRequest(WORD a, UINT8 length, BYTE* pMsdu){
DataRequest:
CFI Block cfiBlock8 Using cfiCommon0
CFI Function DataRequest
FUNCALL DataRequest, mcpsDataRequest
LOCFRAME XSTACK, 27, STACK
ARGFRAME XSTACK, 27, 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: 8
MOV A,#-0x8
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 18)
// 334 ADDRESS dest;
// 335 dest.Short = a;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
// 336 dataConfirmStatus = INVALID_STATUS;
MOV A,#-0x80
MOV DPTR,#dataConfirmStatus
MOVX @DPTR,A
// 337 msduHandle = 1;
MOV A,#0x1
MOV DPTR,#msduHandle
MOVX @DPTR,A
// 338
// 339 // Broadcasted messages and messages sent to PC should not be ack'ed
// 340 if(a == BROADCAST_ADDR || a == PC_SHORT){
MOV A,#-0x1
XRL A,R2
JNZ ??DataRequest_0
MOV A,#-0x1
XRL A,R3
??DataRequest_0:
JZ ??DataRequest_1
MOV A,#0x34
XRL A,R2
JNZ ??DataRequest_2
MOV A,#0x12
XRL A,R3
??DataRequest_2:
JNZ ??DataRequest_3
// 341 txOptions = TX_OPT_NONE;
??DataRequest_1:
CLR A
SJMP ??DataRequest_4
// 342 }
// 343 else{
// 344 txOptions = TX_OPT_ACK_REQ;
??DataRequest_3:
MOV A,#0x1
??DataRequest_4:
MOV DPTR,#txOptions
MOVX @DPTR,A
// 345 }
// 346
// 347 mcpsDataRequest(SRC_ADDR_SHORT | DEST_ADDR_SHORT,
// 348 panId,
// 349 (ADDRESS *) &myShortAddr,
// 350 panId,
// 351 &dest,
// 352 length,
// 353 pMsdu,
// 354 msduHandle,
// 355 txOptions);
; Setup parameters for call to function mcpsDataRequest
MOVX A,@DPTR
MOV ?V0 + 0,A
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_ONE
CFI CFA_XSP16 add(XSP16, 19)
MOV ?V0 + 0,#0x1
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_ONE
CFI CFA_XSP16 add(XSP16, 20)
MOV ?V0 + 0,R4
MOV ?V0 + 1,R5
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 22)
MOV A,R1
MOV ?V0 + 0,A
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_ONE
CFI CFA_XSP16 add(XSP16, 23)
MOV A,#0x5
LCALL ?XSTACK_DISP0_8
MOV ?V0 + 0,DPL
MOV ?V0 + 1,DPH
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 25)
MOV DPTR,#panId
LCALL ?PUSH_XSTACK8_X_TWO
CFI CFA_XSP16 add(XSP16, 27)
MOV R4,#(myShortAddr & 0xff)
MOV R5,#((myShortAddr >> 8) & 0xff)
MOV DPTR,#panId
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
MOV R1,#-0x78
LCALL mcpsDataRequest & 0xFFFF
MOV A,#0x9
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 18)
// 356
// 357 WaitForPacketTransmission(msduHandle);
MOV DPTR,#msduHandle
MOVX A,@DPTR
MOV R2,A
??DataRequest_5:
MOV DPTR,#dataConfirmMsduHandle
MOVX A,@DPTR
XRL A,R2
JNZ ??DataRequest_5
??DataRequest_6:
MOV DPTR,#dataConfirmStatus
MOVX A,@DPTR
XRL A,#0x80
JZ ??DataRequest_6
// 358 }
MOV A,#0x8
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 10)
MOV R7,#0x2
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock8
// 359
// 360 #ifdef SOC_BB
// 361 /******************************************************************************
// 362 * This function perform a test on SOC_BB. Connect a jumper between
// 363 * pin 19 and pin 20 on P10 to run the test. Press S1 and the led will lit
// 364 * if the test is OK.
// 365 ******************************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 366 void RunHWTest(void){
RunHWTest:
CFI Block cfiBlock9 Using cfiCommon0
CFI Function RunHWTest
FUNCALL RunHWTest, halWait
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
// 367 // setup P1_7 as pull-up input
// 368 IO_IMODE_PORT_PIN(0, 7, IO_IMODE_PUD);
ANL 0x8f,#0x7f
// 369 IO_PUD_PORT(0, IO_PULLUP);
ANL 0xf7,#0xdf
// 370 IO_DIR_PORT_PIN(0, 7, IO_IN);
ANL 0xfd,#0x7f
// 371 halWait(100);
; Setup parameters for call to function halWait
MOV R1,#0x64
MOV DPTR,#(halWait & 0xffff)
MOV A,#((halWait >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
SJMP ??RunHWTest_0
// 372
// 373 while(P0_7 == 0) //If P0_7 == 0 then P0_7 is shorted to GND
// 374 {
// 375 LED1 = !BUTTON_PRESSED();
??RunHWTest_1:
MOV C,0x80.1
MOV 0x90.0,C
// 376 }
??RunHWTest_0:
MOV C,0x80.7
JNC ??RunHWTest_1
// 377 }
LJMP ?Subroutine0 & 0xFFFF
CFI EndBlock cfiBlock9
// 378 #endif
// 379
// 380
// 381
// 382 /******************************************************************************
// 383 * Currently unused callbacks
// 384 ******************************************************************************/
// 385 #pragma diag_suppress=Pe550
RSEG NEAR_CODE:CODE:NOROOT(0)
// 386 ROOT void mlmeDisassociateIndication(ADDRESS deviceAddress, BYTE disassociateReason, BOOL securityUse, BOOL aclEntry){}
mlmeDisassociateIndication:
CFI Block cfiBlock10 Using cfiCommon1
CFI Function mlmeDisassociateIndication
; Saved register size: 0
; Auto size: 0
RET
CFI EndBlock cfiBlock10
// 387
RSEG NEAR_CODE:CODE:NOROOT(0)
// 388 ROOT void mlmeAssociateConfirm(WORD assocShortAddress, MAC_ENUM status){}
mlmeAssociateConfirm:
CFI Block cfiBlock11 Using cfiCommon1
CFI Function mlmeAssociateConfirm
; Saved register size: 0
; Auto size: 0
RET
CFI EndBlock cfiBlock11
// 389
RSEG NEAR_CODE:CODE:NOROOT(0)
// 390 ROOT void mlmeAssociateIndication(ADDRESS deviceAddress, BYTE capabilityInformation, BOOL securityUse, UINT8 aclEntry) {}
mlmeAssociateIndication:
CFI Block cfiBlock12 Using cfiCommon1
CFI Function mlmeAssociateIndication
; Saved register size: 0
; Auto size: 0
RET
CFI EndBlock cfiBlock12
// 391
RSEG NEAR_CODE:CODE:NOROOT(0)
// 392 ROOT void mlmeBeaconNotifyIndication(MLME_BEACON_NOTIFY_INDICATION *pMBNI) {
mlmeBeaconNotifyIndication:
CFI Block cfiBlock13 Using cfiCommon1
CFI Function mlmeBeaconNotifyIndication
; Saved register size: 0
; Auto size: 0
// 393 MLME_BEACON_NOTIFY_INDICATION *mlmeBeaconNotifyIndication;
// 394
// 395 mlmeBeaconNotifyIndication = pMBNI;
// 396 }
RET
CFI EndBlock cfiBlock13
// 397
RSEG NEAR_CODE:CODE:NOROOT(0)
// 398 ROOT void mlmeCommStatusIndication(WORD panId, BYTE srcAddrMode, ADDRESS *pSrcAddr, BYTE dstAddrMode, ADDRESS *pDstAddr, BYTE status) {
mlmeCommStatusIndication:
CFI Block cfiBlock14 Using cfiCommon1
CFI Function mlmeCommStatusIndication
; Saved register size: 0
; Auto size: 0
// 399 srcAddrMode = dstAddrMode = status = panId;
// 400 pDstAddr = pSrcAddr;
// 401 }
RET
CFI EndBlock cfiBlock14
// 402
RSEG NEAR_CODE:CODE:NOROOT(0)
// 403 ROOT void mlmeDisassociateConfirm(MAC_ENUM status) { status = 1; }
mlmeDisassociateConfirm:
CFI Block cfiBlock15 Using cfiCommon1
CFI Function mlmeDisassociateConfirm
; Saved register size: 0
; Auto size: 0
RET
CFI EndBlock cfiBlock15
// 404
RSEG NEAR_CODE:CODE:NOROOT(0)
// 405 ROOT void mlmeOrphanIndication(ADDRESS orphanAddress, BOOL securityUse, BOOL aclEntry) {
mlmeOrphanIndication:
CFI Block cfiBlock16 Using cfiCommon1
CFI Function mlmeOrphanIndication
; Saved register size: 0
; Auto size: 0
// 406 orphanAddress.Short = securityUse = aclEntry;
// 407 }
RET
CFI EndBlock cfiBlock16
// 408
RSEG NEAR_CODE:CODE:NOROOT(0)
// 409 ROOT void mlmeRxEnableConfirm(MAC_ENUM status) { status = 1; }
mlmeRxEnableConfirm:
CFI Block cfiBlock17 Using cfiCommon1
CFI Function mlmeRxEnableConfirm
; Saved register size: 0
; Auto size: 0
RET
CFI EndBlock cfiBlock17
RSEG NEAR_CODE:CODE:NOROOT(0)
// 410 ROOT void mlmeSyncLossIndication(MAC_ENUM lossReason) { lossReason = 1; }
mlmeSyncLossIndication:
CFI Block cfiBlock18 Using cfiCommon1
CFI Function mlmeSyncLossIndication
; Saved register size: 0
; Auto size: 0
RET
CFI EndBlock cfiBlock18
RSEG NEAR_CODE:CODE:NOROOT(0)
// 411 ROOT void mpmSetConfirm(BYTE status) { status = 1;}
mpmSetConfirm:
CFI Block cfiBlock19 Using cfiCommon1
CFI Function mpmSetConfirm
; Saved register size: 0
; Auto size: 0
RET
CFI EndBlock cfiBlock19
ASEGN SFR_AN:DATA:NOROOT,080H
// union <unnamed> volatile __sfr _A_P0
_A_P0:
DS 1
ASEGN SFR_AN:DATA:NOROOT,090H
// union <unnamed> volatile __sfr _A_P1
_A_P1:
DS 1
ASEGN SFR_AN:DATA:NOROOT,0a8H
// union <unnamed> volatile __sfr _A_IEN0
_A_IEN0:
DS 1
ASEGN SFR_AN:DATA:NOROOT,0b8H
// union <unnamed> volatile __sfr _A_IEN1
_A_IEN1:
DS 1
END
// 412 /*****************************************************************************/
// 413
// 414 #pragma diag_default=Pe550
//
// 577 bytes in segment BANKED_CODE
// 180 bytes in segment NEAR_CODE
// 13 bytes in segment SFR_AN
// 145 bytes in segment XDATA_Z
//
// 757 bytes of CODE memory
// 0 bytes of DATA memory (+ 13 bytes shared)
// 145 bytes of XDATA memory
//
//Errors: none
//Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -