📄 mac.lst
字号:
\ 000010 F0 MOVX @DPTR,A
119 if (phy_pib.phyCurrentChannel < 11){
\ 000011 90.... MOV DPTR,#(phy_pib + 1)
\ 000014 E0 MOVX A,@DPTR
\ 000015 C3 CLR C
\ 000016 940B SUBB A,#0xb
\ 000018 5012 JNC ??macInitRadio_0
120 mac_pib.macAckWaitDuration = SYMBOLS_TO_MACTICKS(120);
\ 00001A 90.... MOV DPTR,#__Constant_78
\ 00001D 78.. MOV R0,#?V0 + 0
\ 00001F 12.... LCALL ?L_MOV_X
\ 000022 90.... MOV DPTR,#mac_pib
\ 000025 78.. MOV R0,#?V0 + 0
\ 000027 12.... LCALL ?L_MOV_TO_X
\ 00002A 8010 SJMP ??macInitRadio_1
121 }
122 else {
123 mac_pib.macAckWaitDuration = SYMBOLS_TO_MACTICKS(54);
\ ??macInitRadio_0:
\ 00002C 90.... MOV DPTR,#__Constant_36
\ 00002F 78.. MOV R0,#?V0 + 0
\ 000031 12.... LCALL ?L_MOV_X
\ 000034 90.... MOV DPTR,#mac_pib
\ 000037 78.. MOV R0,#?V0 + 0
\ 000039 12.... LCALL ?L_MOV_TO_X
124 }
125
126 a_phy_service.args.phy_init_radio_args.radio_flags.bits.listen_mode = 0;
\ ??macInitRadio_1:
\ 00003C 90.... MOV DPTR,#(a_phy_service + 1)
\ 00003F E0 MOVX A,@DPTR
\ 000040 54FE ANL A,#0xfe
\ 000042 F0 MOVX @DPTR,A
\ 000043 A3 INC DPTR
\ 000044 E0 MOVX A,@DPTR
\ 000045 54FF ANL A,#0xff
\ 000047 F0 MOVX @DPTR,A
127 #ifdef LRWPAN_COORDINATOR
128 a_phy_service.args.phy_init_radio_args.radio_flags.bits.pan_coordinator = 1;
\ 000048 90.... MOV DPTR,#(a_phy_service + 1)
\ 00004B E0 MOVX A,@DPTR
\ 00004C 4402 ORL A,#0x2
\ 00004E F0 MOVX @DPTR,A
\ 00004F A3 INC DPTR
\ 000050 E0 MOVX A,@DPTR
\ 000051 4400 ORL A,#0x0
\ 000053 F0 MOVX @DPTR,A
129 #else
130 a_phy_service.args.phy_init_radio_args.radio_flags.bits.pan_coordinator = 0;
131 #endif
132
133 halInitRadio(phy_pib.phyCurrentFrequency,
134 phy_pib.phyCurrentChannel,
135 a_phy_service.args.phy_init_radio_args.radio_flags);
\ 000054 ; Setup parameters for call to function halInitRadio
\ 000054 90.... MOV DPTR,#(a_phy_service + 1)
\ 000057 7402 MOV A,#0x2
\ 000059 12.... LCALL ?PUSH_XSTACK8_X
\ 00005C 90.... MOV DPTR,#(phy_pib + 1)
\ 00005F E0 MOVX A,@DPTR
\ 000060 FA MOV R2,A
\ 000061 90.... MOV DPTR,#phy_pib
\ 000064 E0 MOVX A,@DPTR
\ 000065 F9 MOV R1,A
\ 000066 12.... LCALL halInitRadio
\ 000069 7402 MOV A,#0x2
\ 00006B 12.... LCALL ?DEALLOC_XSTACK8
136
137
138
139 #ifdef LRWPAN_USE_STATIC_PANID
140 halSetRadioPANID(LRWPAN_DEFAULT_PANID); //listen on this PANID
\ 00006E ; Setup parameters for call to function halSetRadioPANID
\ 00006E 7A47 MOV R2,#0x47
\ 000070 7B13 MOV R3,#0x13
\ 000072 12.... LCALL halSetRadioPANID
141 #else
142 halSetRadioPANID(0xFFFF); //broadcast
143 #endif
144 halSetRadioShortAddr(0xFFFE); //non-broadcast, reserved
\ 000075 ; Setup parameters for call to function halSetRadioShortAddr
\ 000075 7AFE MOV R2,#-0x2
\ 000077 7BFF MOV R3,#-0x1
\ 000079 12.... LCALL halSetRadioShortAddr
145 return(a_phy_service.status);
\ 00007C 90.... MOV DPTR,#(a_phy_service + 3)
\ 00007F E0 MOVX A,@DPTR
\ 000080 F9 MOV R1,A
\ 000081 7F04 MOV R7,#0x4
\ 000083 02.... LJMP ?FUNC_LEAVE_XDATA
146 }
147
\ In segment NEAR_CODE, align 1, keep-with-next
148 void macSetPANID(UINT16 panid){
\ macSetPANID:
\ 000000 74F8 MOV A,#-0x8
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 8
\ 000005 ; Auto size: 0
\ 000005 EA MOV A,R2
\ 000006 FE MOV R6,A
\ 000007 EB MOV A,R3
\ 000008 FF MOV R7,A
149 mac_pib.macPANID = panid;
\ 000009 90.... MOV DPTR,#(mac_pib + 18)
\ 00000C EE MOV A,R6
\ 00000D F0 MOVX @DPTR,A
\ 00000E A3 INC DPTR
\ 00000F EF MOV A,R7
\ 000010 F0 MOVX @DPTR,A
150 halSetRadioPANID(mac_pib.macPANID);
\ 000011 ; Setup parameters for call to function halSetRadioPANID
\ 000011 90.... MOV DPTR,#(mac_pib + 18)
\ 000014 E0 MOVX A,@DPTR
\ 000015 FA MOV R2,A
\ 000016 A3 INC DPTR
\ 000017 E0 MOVX A,@DPTR
\ 000018 FB MOV R3,A
\ 000019 12.... LCALL halSetRadioPANID
151 }
\ 00001C 7F01 MOV R7,#0x1
\ 00001E 02.... LJMP ?FUNC_LEAVE_XDATA
152
153
\ In segment NEAR_CODE, align 1, keep-with-next
154 void macSetChannel(BYTE channel){
\ macSetChannel:
\ 000000 74F8 MOV A,#-0x8
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 8
\ 000005 ; Auto size: 0
\ 000005 E9 MOV A,R1
\ 000006 FE MOV R6,A
155 phy_pib.phyCurrentChannel = channel;
\ 000007 EE MOV A,R6
\ 000008 90.... MOV DPTR,#(phy_pib + 1)
\ 00000B F0 MOVX @DPTR,A
156 halSetChannel(channel);
\ 00000C ; Setup parameters for call to function halSetChannel
\ 00000C EE MOV A,R6
\ 00000D F9 MOV R1,A
\ 00000E 12.... LCALL halSetChannel
157 }
\ 000011 7F01 MOV R7,#0x1
\ 000013 02.... LJMP ?FUNC_LEAVE_XDATA
158
\ In segment NEAR_CODE, align 1, keep-with-next
159 BYTE macGetChannel()
\ macGetChannel:
160 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
161 return phy_pib.phyCurrentChannel;
\ 000004 90.... MOV DPTR,#(phy_pib + 1)
\ 000007 E0 MOVX A,@DPTR
\ 000008 F9 MOV R1,A
\ 000009 D083 POP DPH
\ 00000B D082 POP DPL
\ 00000D 22 RET
162 }
163
\ In segment NEAR_CODE, align 1, keep-with-next
164 void macSetShortAddr(UINT16 saddr) {
\ macSetShortAddr:
\ 000000 74F8 MOV A,#-0x8
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 8
\ 000005 ; Auto size: 0
\ 000005 EA MOV A,R2
\ 000006 FE MOV R6,A
\ 000007 EB MOV A,R3
\ 000008 FF MOV R7,A
165
166 halSetRadioShortAddr(saddr);
\ 000009 ; Setup parameters for call to function halSetRadioShortAddr
\ 000009 EE MOV A,R6
\ 00000A FA MOV R2,A
\ 00000B EF MOV A,R7
\ 00000C FB MOV R3,A
\ 00000D 12.... LCALL halSetRadioShortAddr
167 }
\ 000010 7F01 MOV R7,#0x1
\ 000012 02.... LJMP ?FUNC_LEAVE_XDATA
168
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
169 unsigned char gMacDSN=0;
\ gMacDSN:
\ 000000 DS 1
\ In segment NEAR_CODE, align 1, keep-with-next
170 void MACPutHeader(NODE_INFO *dest, BYTE frameCON)
\ MACPutHeader:
171 {
\ 000000 74F3 MOV A,#-0xd
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 13
\ 000005 ; Auto size: 0
\ 000005 89.. MOV ?V0 + 1,R1
172 BYTE c;
173 BYTE dstmode, srcmode;
174
175 //DEBUG_STRING(DBG_TX,"macTxData()-header\n");
176
177 a_mac_tx_data.fcflsb = frameCON;
\ 000007 E5.. MOV A,?V0 + 1
\ 000009 90.... MOV DPTR,#(a_mac_tx_data + 14)
\ 00000C F0 MOVX @DPTR,A
178 a_mac_tx_data.fcfmsb = LRWPAN_FCF_DSTMODE_SADDR|LRWPAN_FCF_SRCMODE_NOADDR;
\ 00000D 7408 MOV A,#0x8
\ 00000F 90.... MOV DPTR,#(a_mac_tx_data + 15)
\ 000012 F0 MOVX @DPTR,A
179 a_mac_tx_data.DestAddr.saddr = LRWPAN_BCAST_PANID;
\ 000013 90.... MOV DPTR,#(a_mac_tx_data + 2)
\ 000016 74FF MOV A,#-0x1
\ 000018 F0 MOVX @DPTR,A
\ 000019 A3 INC DPTR
\ 00001A 74FF MOV A,#-0x1
\ 00001C F0 MOVX @DPTR,A
180 a_mac_tx_data.DestPANID = LRWPAN_BCAST_PANID;
\ 00001D 90.... MOV DPTR,#a_mac_tx_data
\ 000020 74FF MOV A,#-0x1
\ 000022 F0 MOVX @DPTR,A
\ 000023 A3 INC DPTR
\ 000024 74FF MOV A,#-0x1
\ 000026 F0 MOVX @DPTR,A
181 a_mac_tx_data.SrcPANID = LRWPAN_BCAST_PANID;
\ 000027 90.... MOV DPTR,#(a_mac_tx_data + 10)
\ 00002A 74FF MOV A,#-0x1
\ 00002C F0 MOVX @DPTR,A
\ 00002D A3 INC DPTR
\ 00002E 74FF MOV A,#-0x1
\ 000030 F0 MOVX @DPTR,A
182
183
184 dstmode = LRWPAN_GET_DST_ADDR(a_mac_tx_data.fcfmsb);
\ 000031 90.... MOV DPTR,#(a_mac_tx_data + 15)
\ 000034 E0 MOVX A,@DPTR
\ 000035 13 RRC A
\ 000036 13 RRC A
\ 000037 543F ANL A,#0x3f
\ 000039 5403 ANL A,#0x3
\ 00003B F5.. MOV ?V0 + 4,A
185 srcmode = LRWPAN_GET_SRC_ADDR(a_mac_tx_data.fcfmsb);
\ 00003D 90.... MOV DPTR,#(a_mac_tx_data + 15)
\ 000040 E0 MOVX A,@DPTR
\ 000041 C4 SWAP A
\ 000042 13 RRC A
\ 000043 13 RRC A
\ 000044 5403 ANL A,#0x3
\ 000046 F5.. MOV ?V0 + 5,A
186
187 if (mac_pib.macPANID == 0xFFFE && srcmode == LRWPAN_ADDRMODE_SADDR)
\ 000048 90.... MOV DPTR,#(mac_pib + 18)
\ 00004B E0 MOVX A,@DPTR
\ 00004C 64FE XRL A,#0xfe
\ 00004E 7004 JNZ ??MACPutHeader_0
\ 000050 A3 INC DPTR
\ 000051 E0 MOVX A,@DPTR
\ 000052 64FF XRL A,#0xff
\ ??MACPutHeader_0:
\ 000054 7017 JNZ ??MACPutHeader_1
\ 000056 7402 MOV A,#0x2
\ 000058 65.. XRL A,?V0 + 5
\ 00005A 7011 JNZ ??MACPutHeader_1
188 {
189 srcmode = LRWPAN_ADDRMODE_LADDR;
\ 00005C 75..03 MOV ?V0 + 5,#0x3
190 a_mac_tx_data.fcfmsb = a_mac_tx_data.fcfmsb & ~LRWPAN_FCF_SRCMODE_MASK;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -