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

📄 mac.s51

📁 无线单片机cc2430简化协议的无线收发程序
💻 S51
📖 第 1 页 / 共 5 页
字号:
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  258             *phy_pib.currentTxFrm = (BYTE)a_mac_tx_data.SrcPANID;
        MOV	DPTR,#(a_mac_tx_data + 10)
        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
//  259             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
//  260             *phy_pib.currentTxFrm = (BYTE) (a_mac_tx_data.SrcPANID >> 8);
        MOV	DPTR,#(a_mac_tx_data + 10)
        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
//  261             phy_pib.currentTxFlen=phy_pib.currentTxFlen+2;
        MOV	DPTR,#(phy_pib + 16)
        MOVX	A,@DPTR
        ADD	A,#0x2
        MOVX	@DPTR,A
//  262     }
//  263 
//  264     //format src Address
//  265     switch(srcmode)
??MACPutHeader_8:
        MOV	A,?V0 + 5
        LCALL	?UC_SWITCH_DENSE
`?<Jumptable for MACPutHeader>_1`:
        DB        2
        DB        1
        DW        ??MACPutHeader_9
        DW        ??MACPutHeader_10
        DW        ??MACPutHeader_11
//  266 	{
//  267 	    case LRWPAN_ADDRMODE_NOADDR:
//  268 			  break;
//  269 	    case LRWPAN_ADDRMODE_SADDR:
//  270 			  phy_pib.currentTxFrm++;
??MACPutHeader_10:
        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
//  271 	                  *phy_pib.currentTxFrm = (BYTE)a_mac_tx_data.SrcAddr;	
        MOV	DPTR,#(a_mac_tx_data + 12)
        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
//  272 	                  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
//  273 	                  *phy_pib.currentTxFrm = (BYTE)(a_mac_tx_data.SrcAddr >> 8);					
        MOV	DPTR,#(a_mac_tx_data + 12)
        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
//  274 	                  phy_pib.currentTxFlen=phy_pib.currentTxFlen+2;
        MOV	DPTR,#(phy_pib + 16)
        MOVX	A,@DPTR
        ADD	A,#0x2
        MOVX	@DPTR,A
        SJMP	??MACPutHeader_9
//  275 	                  break;
//  276 	    case LRWPAN_ADDRMODE_LADDR:
//  277 			  //this has to be our own long address, get it
//  278 			  halGetProcessorIEEEAddress_ASC(phy_pib.currentTxFrm-8);
??MACPutHeader_11:
        ; Setup parameters for call to function halGetProcessorIEEEAddress_ASC
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        ADD	A,#-0x8
        MOV	R2,A
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,#-0x1
        MOV	R3,A
        LCALL	halGetProcessorIEEEAddress_ASC
//  279 	                  phy_pib.currentTxFlen=phy_pib.currentTxFlen+8;
        MOV	DPTR,#(phy_pib + 16)
        MOVX	A,@DPTR
        ADD	A,#0x8
        MOVX	@DPTR,A
//  280 	                  phy_pib.currentTxFrm = phy_pib.currentTxFrm+8;
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        ADD	A,#0x8
        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
//  281 	                  break;
//  282 	    default:
//  283 			  break;
//  284     }	
//  285 
//  286 
//  287 }
??MACPutHeader_9:
        MOV	R7,#0x6
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock6
//  288 
//  289 
//  290 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  291  void MACPutArray(BYTE *data,BYTE len) //bhj 本函数在数组的最后追加了一个校验字节
MACPutArray:
        CFI Block cfiBlock7 Using cfiCommon0
        CFI Function MACPutArray
//  292 {
        MOV	A,#-0xa
        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 V2 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: 0
        MOV	A,R1
        MOV	R4,A
//  293    BYTE i;
//  294    BYTE cs;
//  295    for(int i=0;i<len;i++)
        MOV	R0,#0x0
        MOV	R1,#0x0
??MACPutArray_0:
        MOV	?V0 + 0,R4
        MOV	?V0 + 1,#0x0
        CLR	C
        MOV	A,R0
        SUBB	A,?V0 + 0
        MOV	A,R1
        SUBB	A,?V0 + 1
        MOV	C,0xD0 /* PSW */.2
        XRL	A,PSW
        RLC	A
        JNC	??MACPutArray_1
//  296    	{
//  297    	  phy_pib.currentTxFrm++;
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        ADD	A,#0x1
        MOV	R6,A
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,#0x0
        MOV	R7,A
        MOV	DPTR,#(phy_pib + 14)
        MOV	A,R6
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R7
        MOVX	@DPTR,A
//  298       *phy_pib.currentTxFrm = data[i];
        MOV	A,R2
        ADD	A,R0
        MOV	DPL,A
        MOV	A,R3
        ADDC	A,R1
        MOV	DPH,A
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	DPTR,#(phy_pib + 14)
        MOVX	A,@DPTR
        MOV	R6,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R6
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//  299    	}
        MOV	A,R0
        ADD	A,#0x1
        MOV	R0,A
        MOV	A,R1
        ADDC	A,#0x0
        MOV	R1,A
        SJMP	??MACPutArray_0
//  300    phy_pib.currentTxFlen += len;	
??MACPutArray_1:
        MOV	DPTR,#(phy_pib + 16)
        MOVX	A,@DPTR
        ADD	A,R4
        MOVX	@DPTR,A
//  301 	
//  302 	cs=0;
        MOV	R5,#0x0
//  303 	for(i=7;i<len;i++)
        MOV	?V0 + 2,#0x7
??MACPutArray_2:
        MOV	A,?V0 + 2
        CLR	C
        SUBB	A,R4
        JNC	??MACPutArray_3
//  304 		cs+=data[i];	
        MOV	?V0 + 0,?V0 + 2
        MOV	?V0 + 1,#0x0
        MOV	A,R2
        ADD	A,?V0 + 0
        MOV	DPL,A
        MOV	A,R3
        ADDC	A,?V0 + 1
        MOV	DPH,A
        MOVX	A,@DPTR
        ADD	A,R5
        MOV	R5,A
        INC	?V0 + 2
        SJMP	??MACPutArray_2
//  305    	phy_pib.currentTxFrm++;
??MACPutArray_3:
        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
//  306     *phy_pib.currentTxFrm =cs;
        MOV	A,R5
        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
//  307     phy_pib.currentTxFlen ++;
        MOV	DPTR,#(phy_pib + 16)
        MOVX	A,@DPTR
        ADD	A,#0x1
        MOVX	@DPTR,A
//  308 	
//  309 }
        MOV	R7,#0x3
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock7

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  310 void macFormatUserData(BYTE frame) //bhj
macFormatUserData:
        CFI Block cfiBlock8 Using cfiCommon0
        CFI Function macFormatUserData
//  311 {
        FUNCALL macFormatUserData, MACPutArray
        LOCFRAME XSTACK, 18, STACK
        ARGFRAME XSTACK, 18, STACK
        MOV	A,#-0x8
        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 V0 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 8)
        ; Saved register size: 8
        ; Auto size: 10
        MOV	A,#-0xa
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 18)
//  312    int i;
//  313    BYTE testdata[10];
//  314    //unsigned char datalen=0;
//  315    testdata[0]=1;
        MOV	A,#0x1
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	@DPTR,A
//  316    testdata[1]=0xff;
        MOV	A,#-0x1
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//  317    testdata[2]=0xff;
        MOV	A,#-0x1
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//  318    testdata[3]=0xff;
        MOV	A,#-0x1
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x3
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//  319    testdata[4]=0xff;
        MOV	A,#-0x1
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//  320    testdata[5]=1;  //len  =data + cs;
        MOV	A,#0x1
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x5
        LCALL	?XSTACK_DISP0_8
        POP	A

⌨️ 快捷键说明

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