📄 mac.s51
字号:
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 + -