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