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

📄 mac.s51

📁 无线单片机cc2430简化协议的无线收发程序
💻 S51
📖 第 1 页 / 共 5 页
字号:
        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 + -