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

📄 mac.s51

📁 无线单片机cc2430简化协议的无线收发程序
💻 S51
📖 第 1 页 / 共 5 页
字号:
        INC	DPTR
        MOV	A,#-0x1
        MOVX	@DPTR,A
//  180 	a_mac_tx_data.DestPANID = LRWPAN_BCAST_PANID;
        MOV	DPTR,#a_mac_tx_data
        MOV	A,#-0x1
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,#-0x1
        MOVX	@DPTR,A
//  181 	a_mac_tx_data.SrcPANID = LRWPAN_BCAST_PANID;
        MOV	DPTR,#(a_mac_tx_data + 10)
        MOV	A,#-0x1
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,#-0x1
        MOVX	@DPTR,A
//  182 	
//  183 				
//  184     dstmode = LRWPAN_GET_DST_ADDR(a_mac_tx_data.fcfmsb);
        MOV	DPTR,#(a_mac_tx_data + 15)
        MOVX	A,@DPTR
        RRC	A
        RRC	A
        ANL	A,#0x3f
        ANL	A,#0x3
        MOV	?V0 + 4,A
//  185     srcmode = LRWPAN_GET_SRC_ADDR(a_mac_tx_data.fcfmsb);
        MOV	DPTR,#(a_mac_tx_data + 15)
        MOVX	A,@DPTR
        SWAP	A
        RRC	A
        RRC	A
        ANL	A,#0x3
        MOV	?V0 + 5,A
//  186 
//  187     if (mac_pib.macPANID == 0xFFFE && srcmode == LRWPAN_ADDRMODE_SADDR)
        MOV	DPTR,#(mac_pib + 18)
        MOVX	A,@DPTR
        XRL	A,#0xfe
        JNZ	??MACPutHeader_0
        INC	DPTR
        MOVX	A,@DPTR
        XRL	A,#0xff
??MACPutHeader_0:
        JNZ	??MACPutHeader_1
        MOV	A,#0x2
        XRL	A,?V0 + 5
        JNZ	??MACPutHeader_1
//  188     {
//  189       srcmode = LRWPAN_ADDRMODE_LADDR;
        MOV	?V0 + 5,#0x3
//  190       a_mac_tx_data.fcfmsb = a_mac_tx_data.fcfmsb & ~LRWPAN_FCF_SRCMODE_MASK;
        MOV	DPTR,#(a_mac_tx_data + 15)
        MOVX	A,@DPTR
        ANL	A,#0x3f
        MOVX	@DPTR,A
//  191 
//  192       LRWPAN_SET_SRC_ADDR(a_mac_tx_data.fcfmsb,LRWPAN_ADDRMODE_LADDR);
        MOV	DPTR,#(a_mac_tx_data + 15)
        MOVX	A,@DPTR
        ORL	A,#0xc0
        MOVX	@DPTR,A
//  193     }
//  194 
//  195 
//  196 
//  197     phy_pib.currentTxFrm = tmpTxBuff;
??MACPutHeader_1:
        MOV	DPTR,#(phy_pib + 14)
        MOV	A,#(tmpTxBuff & 0xff)
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,#((tmpTxBuff >> 8) & 0xff)
        MOVX	@DPTR,A
//  198     phy_pib.currentTxFlen=0;	
        MOV	A,#0x0
        MOV	DPTR,#(phy_pib + 16)
        MOVX	@DPTR,A
//  199 
//  200     //format LSB Fcontrol
//  201     //phy_pib.currentTxFrm++;
//  202     *phy_pib.currentTxFrm = a_mac_tx_data.fcflsb;	
        MOV	DPTR,#(a_mac_tx_data + 14)
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R0
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//  203 
//  204     //format MSB Fcontrol
//  205     phy_pib.currentTxFrm++;
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        ADD	A,#0x1
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,#0x0
        MOV	R1,A
        MOV	DPTR,#(phy_pib + 14)
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  206     *phy_pib.currentTxFrm = a_mac_tx_data.fcfmsb;
        MOV	DPTR,#(a_mac_tx_data + 15)
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R0
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//  207 
//  208 
//  209     //format dsn
//  210     mac_pib.macDSN = gMacDSN++;
        MOV	DPTR,#gMacDSN
        MOVX	A,@DPTR
        MOV	DPTR,#(mac_pib + 20)
        MOVX	@DPTR,A
        MOV	DPTR,#gMacDSN
        MOVX	A,@DPTR
        ADD	A,#0x1
        MOVX	@DPTR,A
//  211     phy_pib.currentTxFrm++;
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        ADD	A,#0x1
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,#0x0
        MOV	R1,A
        MOV	DPTR,#(phy_pib + 14)
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  212     *phy_pib.currentTxFrm = mac_pib.macDSN; //set DSN	
        MOV	DPTR,#(mac_pib + 20)
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R0
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//  213 
//  214     phy_pib.currentTxFlen = phy_pib.currentTxFlen + 3; //DSN, FCFLSB, FCFMSB
        MOV	DPTR,#(phy_pib + 16)
        MOVX	A,@DPTR
        ADD	A,#0x3
        MOVX	@DPTR,A
//  215 
//  216 
//  217     //format dst PANID, will be present if both dst is nonzero
//  218     if (dstmode != LRWPAN_ADDRMODE_NOADDR)
        MOV	A,?V0 + 4
        JZ	??MACPutHeader_2
//  219 	{
//  220       phy_pib.currentTxFrm++;
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        ADD	A,#0x1
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,#0x0
        MOV	R1,A
        MOV	DPTR,#(phy_pib + 14)
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  221       *phy_pib.currentTxFrm = (BYTE)a_mac_tx_data.DestPANID;	
        MOV	DPTR,#a_mac_tx_data
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R0
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//  222 
//  223       phy_pib.currentTxFrm++;
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        ADD	A,#0x1
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,#0x0
        MOV	R1,A
        MOV	DPTR,#(phy_pib + 14)
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  224       *phy_pib.currentTxFrm = (BYTE) (a_mac_tx_data.DestPANID >> 8);
        MOV	DPTR,#a_mac_tx_data
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	A,R1
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R0
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//  225 					
//  226       phy_pib.currentTxFlen=phy_pib.currentTxFlen+2;
        MOV	DPTR,#(phy_pib + 16)
        MOVX	A,@DPTR
        ADD	A,#0x2
        MOVX	@DPTR,A
//  227     }
//  228 
//  229     //format dst Address
//  230     switch(dstmode)
??MACPutHeader_2:
        MOV	A,?V0 + 4
        LCALL	?UC_SWITCH_DENSE
`?<Jumptable for MACPutHeader>_0`:
        DB        2
        DB        1
        DW        ??MACPutHeader_3
        DW        ??MACPutHeader_4
        DW        ??MACPutHeader_5
//  231 	{
//  232           case LRWPAN_ADDRMODE_NOADDR:
//  233            break;
//  234 		  case LRWPAN_ADDRMODE_SADDR:
//  235                     phy_pib.currentTxFrm++;
??MACPutHeader_4:
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        ADD	A,#0x1
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,#0x0
        MOV	R1,A
        MOV	DPTR,#(phy_pib + 14)
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  236                     *phy_pib.currentTxFrm = (BYTE)a_mac_tx_data.DestAddr.saddr;
        MOV	DPTR,#(a_mac_tx_data + 2)
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R0
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//  237                     phy_pib.currentTxFrm++;
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        ADD	A,#0x1
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,#0x0
        MOV	R1,A
        MOV	DPTR,#(phy_pib + 14)
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  238                     *phy_pib.currentTxFrm = (BYTE)(a_mac_tx_data.DestAddr.saddr >> 8);
        MOV	DPTR,#(a_mac_tx_data + 2)
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	A,R1
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R0
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//  239                     phy_pib.currentTxFlen=phy_pib.currentTxFlen+2;
        MOV	DPTR,#(phy_pib + 16)
        MOVX	A,@DPTR
        ADD	A,#0x2
        MOVX	@DPTR,A
        SJMP	??MACPutHeader_3
//  240                     break;
//  241 		  case LRWPAN_ADDRMODE_LADDR:
//  242                     for(c=0;c<8;c++) {
??MACPutHeader_5:
        MOV	?V0 + 0,#0x0
??MACPutHeader_6:
        MOV	A,?V0 + 0
        CLR	C
        SUBB	A,#0x8
        JNC	??MACPutHeader_7
//  243                       phy_pib.currentTxFrm++;
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        ADD	A,#0x1
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,#0x0
        MOV	R1,A
        MOV	DPTR,#(phy_pib + 14)
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  244                       *phy_pib.currentTxFrm = a_mac_tx_data.DestAddr.laddr.bytes[c];
        MOV	?V0 + 2,?V0 + 0
        MOV	?V0 + 3,#0x0
        MOV	A,?V0 + 2
        ADD	A,#((a_mac_tx_data + 2) & 0xff)
        MOV	DPL,A
        MOV	A,?V0 + 3
        ADDC	A,#(((a_mac_tx_data + 2) >> 8) & 0xff)
        MOV	DPH,A
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R0
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//  245                     }
        INC	?V0 + 0
        SJMP	??MACPutHeader_6
//  246                     phy_pib.currentTxFlen=phy_pib.currentTxFlen+8;
??MACPutHeader_7:
        MOV	DPTR,#(phy_pib + 16)
        MOVX	A,@DPTR
        ADD	A,#0x8
        MOVX	@DPTR,A
//  247                     break;
//  248 		  default:
//  249                     break;
//  250     }
//  251 
//  252     //format src PANID
//  253     if ( !LRWPAN_GET_INTRAPAN(a_mac_tx_data.fcflsb) &&
//  254         srcmode != LRWPAN_ADDRMODE_NOADDR
//  255           )
??MACPutHeader_3:
        MOV	DPTR,#(a_mac_tx_data + 14)
        MOVX	A,@DPTR
        MOV	C,0xE0 /* A   */.6
        JC	??MACPutHeader_8
        MOV	A,?V0 + 5
        JZ	??MACPutHeader_8
//  256     {
//  257             phy_pib.currentTxFrm++;			
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        ADD	A,#0x1
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,#0x0
        MOV	R1,A
        MOV	DPTR,#(phy_pib + 14)
        MOV	A,R0
        MOVX	@DPTR,A

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -