📄 halstack.s51
字号:
// 188 buf[1] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+1);
MOV DPTR,#-0x7
CLR A
MOVC A,@A+DPTR
MOV DPL,R2
MOV DPH,R3
INC DPTR
MOVX @DPTR,A
// 189 buf[2] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+2);
MOV DPTR,#-0x6
CLR A
MOVC A,@A+DPTR
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
MOVX @DPTR,A
// 190 buf[3] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+3);
MOV DPTR,#-0x5
CLR A
MOVC A,@A+DPTR
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
MOVX @DPTR,A
// 191 buf[4] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+4);
MOV DPTR,#-0x4
CLR A
MOVC A,@A+DPTR
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX @DPTR,A
// 192 buf[5] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+5);
MOV DPTR,#-0x3
CLR A
MOVC A,@A+DPTR
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX @DPTR,A
// 193 buf[6] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+6);
MOV DPTR,#-0x2
CLR A
MOVC A,@A+DPTR
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX @DPTR,A
// 194 buf[7] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+7);
MOV DPTR,#-0x1
CLR A
MOVC A,@A+DPTR
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX @DPTR,A
// 195 #if (CC2430_FLASH_SIZE == 128)
// 196 //resore old bank settings
// 197 MEMCTR = bank;
MOV 0xc7,R4
// 198 #endif
// 199 }
POP DPH
CFI DPH0 SameValue
CFI CFA_SP SP+-3
POP DPL
CFI DPL0 SameValue
CFI CFA_SP SP+-2
RET
CFI EndBlock cfiBlock12
// 200
// 201
// 202
// 203
// 204
// 205
RSEG NEAR_CODE:CODE:NOROOT(0)
// 206 void halSetRadioIEEEAddress(void) {
halSetRadioIEEEAddress:
CFI Block cfiBlock13 Using cfiCommon0
CFI Function halSetRadioIEEEAddress
FUNCALL halSetRadioIEEEAddress, halGetProcessorIEEEAddress
LOCFRAME ISTACK, 2, STACK
LOCFRAME XSTACK, 8, STACK
ARGFRAME ISTACK, 2, STACK
ARGFRAME XSTACK, 8, STACK
PUSH DPL
CFI DPL0 Frame(CFA_SP, 3)
CFI CFA_SP SP+-3
PUSH DPH
CFI DPH0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
; Saved register size: 2
; Auto size: 8
MOV A,#-0x8
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 8)
// 207 BYTE buf[8];
// 208 halGetProcessorIEEEAddress(buf);
; Setup parameters for call to function halGetProcessorIEEEAddress
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV R2,DPL
MOV R3,DPH
LCALL halGetProcessorIEEEAddress
// 209 IEEE_ADDR0 = buf[0];
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV DPTR,#-0x20bd
MOVX @DPTR,A
// 210 IEEE_ADDR1 = buf[1];
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV DPTR,#-0x20bc
MOVX @DPTR,A
// 211 IEEE_ADDR2 = buf[2];
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV DPTR,#-0x20bb
MOVX @DPTR,A
// 212 IEEE_ADDR3 = buf[3];
MOV A,#0x3
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV DPTR,#-0x20ba
MOVX @DPTR,A
// 213 IEEE_ADDR4 = buf[4];
MOV A,#0x4
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV DPTR,#-0x20b9
MOVX @DPTR,A
// 214 IEEE_ADDR5 = buf[5];
MOV A,#0x5
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV DPTR,#-0x20b8
MOVX @DPTR,A
// 215 IEEE_ADDR6 = buf[6];
MOV A,#0x6
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV DPTR,#-0x20b7
MOVX @DPTR,A
// 216 IEEE_ADDR7 = buf[7];
MOV A,#0x7
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV DPTR,#-0x20b6
MOVX @DPTR,A
// 217 }
MOV A,#0x8
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 XSP16+0
POP DPH
CFI DPH0 SameValue
CFI CFA_SP SP+-3
POP DPL
CFI DPL0 SameValue
CFI CFA_SP SP+-2
RET
CFI EndBlock cfiBlock13
// 218
RSEG NEAR_CODE:CODE:NOROOT(0)
// 219 void halSetRadioPANID(UINT16 panid){
halSetRadioPANID:
CFI Block cfiBlock14 Using cfiCommon0
CFI Function halSetRadioPANID
PUSH DPL
CFI DPL0 Frame(CFA_SP, 3)
CFI CFA_SP SP+-3
PUSH DPH
CFI DPH0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
; Saved register size: 2
; Auto size: 0
// 220 PANIDL = (BYTE) (panid);
MOV A,R2
MOV DPTR,#-0x20b4
MOVX @DPTR,A
// 221 PANIDH = (BYTE) (panid>>8);
MOV A,R3
MOV R1,A
MOV A,R1
MOV DPTR,#-0x20b5
MOVX @DPTR,A
// 222 }
POP DPH
CFI DPH0 SameValue
CFI CFA_SP SP+-3
POP DPL
CFI DPL0 SameValue
CFI CFA_SP SP+-2
RET
CFI EndBlock cfiBlock14
// 223
RSEG NEAR_CODE:CODE:NOROOT(0)
// 224 void halSetRadioShortAddr(SADDR saddr){
halSetRadioShortAddr:
CFI Block cfiBlock15 Using cfiCommon0
CFI Function halSetRadioShortAddr
PUSH DPL
CFI DPL0 Frame(CFA_SP, 3)
CFI CFA_SP SP+-3
PUSH DPH
CFI DPH0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
; Saved register size: 2
; Auto size: 0
// 225 SHORTADDRL = (BYTE) (saddr);
MOV A,R2
MOV DPTR,#-0x20b2
MOVX @DPTR,A
// 226 SHORTADDRH = (BYTE) (saddr>>8);
MOV A,R3
MOV R1,A
MOV A,R1
MOV DPTR,#-0x20b3
MOVX @DPTR,A
// 227 }
POP DPH
CFI DPH0 SameValue
CFI CFA_SP SP+-3
POP DPL
CFI DPL0 SameValue
CFI CFA_SP SP+-2
RET
CFI EndBlock cfiBlock15
// 228
RSEG NEAR_CODE:CODE:NOROOT(0)
// 229 void halSetTxPower(BYTE val)
halSetTxPower:
CFI Block cfiBlock16 Using cfiCommon0
CFI Function halSetTxPower
// 230 {
MOV A,#-0x9
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 V1 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
; Saved register size: 9
; Auto size: 8
MOV A,#-0x8
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 17)
// 231 //val:0~7 ;0-min 7-max
// 232 BYTE VALTAB[]={0xE3,0xE7,0xEB,0xEF,0xF3,0xF7,0xFB,0xFF};
MOV DPTR,#`?<Constant {227, 231, 235, 239, 243, 247, 251,`
PUSH DPL
CFI CFA_SP SP+-1
PUSH DPH
CFI CFA_SP SP+-2
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV R4,DPL
MOV R5,DPH
POP DPH
CFI CFA_SP SP+-1
POP DPL
CFI CFA_SP SP+0
MOV A,#0x8
LCALL ?MOVE_LONG8_XDATA_XDATA
// 233 if(val>7)return;
MOV A,R1
CLR C
SUBB A,#0x8
JNC ??halSetTxPower_0
// 234 TXCTRLL=VALTAB[val];
MOV ?V0 + 0,R1
MOV ?V0 + 1,#0x0
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,DPL
ADD A,?V0 + 0
MOV DPL,A
MOV A,DPH
ADDC A,?V0 + 1
MOV DPH,A
MOVX A,@DPTR
MOV DPTR,#-0x20f5
MOVX @DPTR,A
// 235 }
??halSetTxPower_0:
MOV A,#0x8
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 9)
MOV R7,#0x2
LJMP ?FUNC_LEAVE_XDATA
CFI EndBlock cfiBlock16
// 236
// 237
RSEG NEAR_CODE:CODE:NOROOT(0)
// 238 LRWPAN_STATUS_ENUM halInitRadio(PHY_FREQ_ENUM frequency, BYTE channel, RADIO_FLAGS radio_flags)
halInitRadio:
CFI Block cfiBlock17 Using cfiCommon0
CFI Function halInitRadio
// 239 {
FUNCALL halInitRadio, conPrintROMString_func
LOCFRAME XSTACK, 8, STACK
ARGFRAME XSTACK, 8, STACK
FUNCALL halInitRadio, halSetRadioIEEEFrequency
LOCFRAME XSTACK, 8, STACK
ARGFRAME XSTACK, 8, STACK
FUNCALL halInitRadio, halSetRadioIEEEAddress
LOCFRAME XSTACK, 8, STACK
ARGFRAME XSTACK, 8, 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: 0
MOV A,R1
MOV R6,A
MOV A,R2
MOV R7,A
// 240 LRWPAN_STATUS_ENUM status;
// 241 DEBUG_STRING(DBG_TX,"halInitRadio()\n");
MOV DPTR,#debug_level
MOVX A,@DPTR
CLR C
SUBB A,#0x2
JC ??halInitRadio_0
; Setup parameters for call to function conPrintROMString_func
MOV R2,#(??xxxxromstr & 0xff)
MOV R3,#((??xxxxromstr >> 8) & 0xff)
LCALL conPrintROMString_func
// 242
// 243 // Setting the frequency
// 244 status = halSetRadioIEEEFrequency(frequency, channel);
??halInitRadio_0:
; Setup parameters for call to function halSetRadioIEEEFrequency
MOV A,R7
MOV R2,A
MOV A,R6
MOV R1,A
LCALL halSetRadioIEEEFrequency
MOV A,R1
MOV ?V0 + 0,A
// 245 if (status != LRWPAN_STATUS_SUCCESS) return(status);
MOV A,?V0 + 0
JZ ??halInitRadio_1
MOV R1,?V0 + 0
LJMP ??halInitRadio_2
// 246
// 247 //turning on power to analog part of radio and waiting for voltage regulator.
// 248 RFPWR = 0x04;
??halInitRadio_1:
MOV A,#0x4
MOV DPTR,#-0x20e9
MOVX @DPTR,A
// 249 while((RFPWR & 0x10)){}
??halInitRadio_3:
MOV DPTR,#-0x20e9
MOVX A,@DPTR
MOV C,0xE0 /* A */.4
JC ??halInitRadio_3
// 250 //radio_flags.listen_mode=1; //debug
// 251 if (radio_flags.bits.listen_mode) {
MOV A,#0x8
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
ANL A,#0x1
MOV C,0xE0 /* A */.0
JNC ??halInitRadio_4
// 252 //corresponds to promiscuous modes
// 253 //radio accepts all packets, the HUSSY!
// 254 MDMCTRL0H &= ~ADR_DECODE; //no address decode
MOV DPTR,#-0x20fe
MOVX A,@DPTR
CLR 0xE0 /* A */.3
MOVX @DPTR,A
// 255 MDMCTRL0L &= ~AUTO_ACK; //no auto ack
MOV DPTR,#-0x20fd
MOVX A,@DPTR
CLR 0xE0 /* A */.4
MOVX @DPTR,A
SJMP ??halInitRadio_5
// 256 } else {
// 257 // Turning on Address Decoding
// 258 MDMCTRL0H |= ADR_DECODE;
??halInitRadio_4:
MOV DPTR,#-0x20fe
MOVX A,@DPTR
SETB 0xE0 /* A */.3
MOVX @DPTR,A
// 259 //enable auto_ack
// 260 MDMCTRL0L |= AUTO_ACK;
MOV DPTR,#-0x20fd
MOVX A,@DPTR
SETB 0xE0 /* A */.4
MOVX @DPTR,A
// 261 }
// 262 local_radio_flags = radio_flags; //save this for later
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -