📄 mac.s51
字号:
CFI CFA_SP SP+0
MOVX @DPTR,A
// 321
// 322 testdata[6]=0; //header checksum (test[0]~test[5])
MOV A,#0x0
PUSH A
CFI CFA_SP SP+-1
MOV A,#0x6
LCALL ?XSTACK_DISP0_8
POP A
CFI CFA_SP SP+0
MOVX @DPTR,A
// 323 for(i=0;i<=5;i++) testdata[6]+=testdata[i];
MOV R6,#0x0
MOV R7,#0x0
??macFormatUserData_0:
CLR C
MOV A,R6
SUBB A,#0x6
MOV A,R7
SUBB A,#0x0
MOV C,0xD0 /* PSW */.2
XRL A,PSW
RLC A
JNC ??macFormatUserData_1
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,DPL
ADD A,R6
MOV DPL,A
MOV A,DPH
ADDC A,R7
MOV DPH,A
MOVX A,@DPTR
MOV R2,A
MOV A,#0x6
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
ADD A,R2
MOVX @DPTR,A
MOV A,R6
ADD A,#0x1
MOV R6,A
MOV A,R7
ADDC A,#0x0
MOV R7,A
SJMP ??macFormatUserData_0
// 324
// 325 MACPutArray(testdata,7);
??macFormatUserData_1:
; Setup parameters for call to function MACPutArray
MOV R1,#0x7
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV R2,DPL
MOV R3,DPH
LCALL MACPutArray
// 326
// 327 }
MOV A,#0xa
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 8)
MOV R7,#0x1
LJMP ?FUNC_LEAVE_XDATA
CFI EndBlock cfiBlock8
RSEG NEAR_CODE:CODE:NOROOT(0)
// 328 BYTE MACFlush()
MACFlush:
CFI Block cfiBlock9 Using cfiCommon0
CFI Function MACFlush
// 329 {
FUNCALL MACFlush, phyFSM
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
PUSH DPL
CFI DPL0 Frame(CFA_SP, 3)
CFI CFA_SP SP+-3
PUSH DPH
CFI DPH0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
; Saved register size: 2
; Auto size: 0
// 330
// 331 // at this point, we will attempt a TX
// 332 mac_pib.flags.bits.ackPending = 0;
MOV DPTR,#(mac_pib + 4)
MOVX A,@DPTR
ANL A,#0xbf
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
ANL A,#0xff
MOVX @DPTR,A
// 333
// 334
// 335 //now send the data, ignore the GTS and INDIRECT bits for now
// 336 //DEBUG_STRING(DBG_TX,"TX DSN: ");
// 337 //DEBUG_UINT8(DBG_TX,mac_pib.macDSN);
// 338 //DEBUG_STRING(DBG_TX,"\n");
// 339
// 340 macSetTxBusy();
MOV DPTR,#(mac_pib + 4)
MOVX A,@DPTR
ORL A,#0x80
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
ORL A,#0x0
MOVX @DPTR,A
// 341 //mac_pib.currentAckRetries = mac_pib.macMaxAckRetries;
// 342 macTxFSM_status = LRWPAN_STATUS_MAC_INPROGRESS;
MOV A,#0x9
MOV DPTR,#macTxFSM_status
MOVX @DPTR,A
// 343
// 344 a_phy_service.cmd = LRWPAN_SVC_PHY_TX_DATA;
MOV A,#0x2
MOV DPTR,#a_phy_service
MOVX @DPTR,A
// 345 a_phy_service.status = LRWPAN_STATUS_PHY_INPROGRESS;
MOV A,#0x2
MOV DPTR,#(a_phy_service + 3)
MOVX @DPTR,A
// 346 phyState = PHY_STATE_COMMAND_START;
MOV A,#0x1
MOV DPTR,#phyState
MOVX @DPTR,A
// 347 phyFSM();
; Setup parameters for call to function phyFSM
LCALL phyFSM
// 348
// 349 return 1;
MOV R1,#0x1
POP DPH
CFI DPH0 SameValue
CFI CFA_SP SP+-3
POP DPL
CFI DPL0 SameValue
CFI CFA_SP SP+-2
RET
CFI EndBlock cfiBlock9
// 350
// 351
// 352
// 353 }
// 354
// 355
// 356
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 357 int xyz=0;
xyz:
DS 2
RSEG NEAR_CODE:CODE:NOROOT(0)
// 358 void macFSM(void)
macFSM:
CFI Block cfiBlock10 Using cfiCommon0
CFI Function macFSM
// 359 {
FUNCALL macFSM, phyFSM
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
FUNCALL macFSM, ??macRxFSM
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
PUSH DPL
CFI DPL0 Frame(CFA_SP, 3)
CFI CFA_SP SP+-3
PUSH DPH
CFI DPH0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
; Saved register size: 2
; Auto size: 0
// 360 phyFSM(); //物理层发送数据包处理
; Setup parameters for call to function phyFSM
LCALL phyFSM
// 361
// 362 submacCurrentFrame.sub_type.Val=0xff;
MOV A,#-0x1
MOV DPTR,#submacCurrentFrame
MOVX @DPTR,A
// 363 macRxFSM();//接收数据包处理
; Setup parameters for call to function macRxFSM
LCALL ??macRxFSM
// 364
// 365 /////////////////////////////////////////////////////////////////////////////////
// 366 #if 0
// 367 if(submacCurrentFrame.sub_type.Val!=0xff)
// 368 {
// 369 DEBUG_STRING(DBG_INFO,"MAC:Recv data packet, cmd:");
// 370 DEBUG_UINT8(DBG_TX,submacCurrentFrame.sub_type.Val);
// 371 DEBUG_STRING(DBG_INFO,",");
// 372 DEBUG_UINT16(DBG_TX,submacCurrentFrame.sub_source_addr.v[0]*256+submacCurrentFrame.sub_source_addr.v[1]);
// 373 DEBUG_STRING(DBG_INFO,"->");
// 374 DEBUG_UINT16(DBG_TX,submacCurrentFrame.sub_dest_addr.v[0]*256+submacCurrentFrame.sub_dest_addr.v[1]);
// 375 DEBUG_STRING(DBG_INFO,",len:");
// 376 DEBUG_UINT8(DBG_TX,submacCurrentFrame.databytenum);
// 377 DEBUG_STRING(DBG_TX,"\n");
// 378 }
// 379
// 380
// 381 if(xyz==0)
// 382 {
// 383 while (phyTxLocked()) ;
// 384 phyGrabTxLock();
// 385 MACPutHeader(NULL, MAC_FRAME_DATA | MAC_SECURITY | MAC_FRAME_PENDING_NO | MAC_ACK_NO | MAC_INTRA_PAN_NO);
// 386 macFormatUserData(0);
// 387 MACFlush();
// 388
// 389 WirelessSendData(MSG_TAG_ISANYCAPTAINHERE);
// 390 P1_0=~P1_0;/**/
// 391
// 392 conPrintUINT32(halGetMACTimer());
// 393 }
// 394 xyz++;
// 395 if(xyz>26000)xyz=0;
// 396 #endif
// 397 ////////////////////////////////////////////////////////////////////////////////////
// 398
// 399
// 400 }
POP DPH
CFI DPH0 SameValue
CFI CFA_SP SP+-3
POP DPL
CFI DPL0 SameValue
CFI CFA_SP SP+-2
RET
CFI EndBlock cfiBlock10
// 401
// 402
// 403
RSEG NEAR_CODE:CODE:NOROOT(0)
// 404 static void macRxFSM(void){
??macRxFSM:
CFI Block cfiBlock11 Using cfiCommon0
CFI Function ??macRxFSM
FUNCALL ??macRxFSM, macRxBuffEmpty
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, macGetRxPacket
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintROMString_func
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, macFreeRxPacket
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintROMString_func
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, macFreeRxPacket
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, ??macParseHdr
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintROMString_func
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintROMString_func
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintUINT8
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintROMString_func
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintUINT16
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintROMString_func
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintUINT16
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintROMString_func
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintUINT8
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintROMString_func
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintUINT8
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintROMString_func
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, macFreeRxPacket
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintROMString_func
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, macFreeRxPacket
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, macFreeRxPacket
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, halGetMACTimer
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintROMString_func
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintROMString_func
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintROMString_func
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintUINT8
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, conPrintROMString_func
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
FUNCALL ??macRxFSM, macFreeRxPacket
LOCFRAME XSTACK, 17, STACK
ARGFRAME XSTACK, 17, STACK
MOV A,#-0xf
LCALL ?FUNC_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 15)
; Saved register size: 15
; Auto size: 2
MOV A,#-0x2
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 17)
// 405 MACPKT *pkt;
// 406 BYTE cmd,idx;
// 407 BYTE *data;
// 408 BYTE i,cs;
// 409
// 410
// 411 if (macRxBuffEmpty()) return; //no data, break
; Setup parameters for call to function macRxBuffEmpty
LCALL macRxBuffEmpty
MOV A,R1
JZ $+5
LJMP ??macRxFSM_1
// 412 pkt = macGetRxPacket();//buffer not empty, start decode
; Setup parameters for call to function macGetRxPacket
LCALL macGetRxPacket
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV ?V0 + 6,?V0 + 0
MOV ?V0 + 7,?V0 + 1
// 413 if(pkt->CRC&0x80!=0x80)
// 414 {
// 415 //crc error
// 416 DEBUG_STRING(DBG_INFO,"MAC: CRC error, discarding.\n");
// 417 return;
// 418 }
// 419
// 420
// 421 if(pkt==NULL) return;
MOV A,?V0 + 6
XRL A,#0x0
JNZ ??macRxFSM_2
MOV A,?V0 + 7
XRL A,#0x0
??macRxFSM_2:
JNZ $+5
LJMP ??macRxFSM_1
// 422
// 423 if ((LRWPAN_IS_BCN(*(pkt->data+1))) && //信标帧
// 424 !mac_pib.flags.bits.WaitingForBeaconResponse)
MOV DPL,?V0 + 6
MOV DPH,?V0 + 7
INC DPTR
MOVX A,@DPTR
ANL A,#0x3
JNZ ??macRxFSM_3
MOV DPTR,#(mac_pib + 4)
MOVX A,@DPTR
ANL A,#0x0
MOV R0,A
INC DPTR
MOVX A,@DPTR
ANL A,#0x2
MOV R1,A
MOV A,#0x0
XRL A,R0
JNZ ??macRxFSM_4
MOV A,#0x0
XRL A,R1
??macRxFSM_4:
JNZ ??macRxFSM_3
// 425 {
// 426 DEBUG_STRING(DBG_INFO,"MAC: Received BCN pkt, discarding.\n");
MOV DPTR,#debug_level
MOVX A,@DPTR
CLR C
SUBB A,#0x3
JC ??macRxFSM_5
; Setup parameters for call to
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -