📄 halstack.lst
字号:
\ 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
\ 000007 EA MOV A,R2
\ 000008 FC MOV R4,A
137 UINT16 afreq;
138
139 //DEBUG_STRING(DBG_TX,"halSetRadioIEEEFrequency() -set channel:");
140 //DEBUG_UINT8(DBG_TX,channel); DEBUG_STRING(DBG_TX,"\n");
141
142 if (frequency != PHY_FREQ_2405M) return(LRWPAN_STATUS_PHY_FAILED);
\ 000009 EE MOV A,R6
\ 00000A 6004 JZ ??halSetRadioIEEEFrequency_0
\ 00000C 7901 MOV R1,#0x1
\ 00000E 8052 SJMP ??halSetRadioIEEEFrequency_1
143 if ((channel < 11) || (channel > 26)) return(LRWPAN_STATUS_PHY_FAILED);
\ ??halSetRadioIEEEFrequency_0:
\ 000010 EC MOV A,R4
\ 000011 C3 CLR C
\ 000012 940B SUBB A,#0xb
\ 000014 4006 JC ??halSetRadioIEEEFrequency_2
\ 000016 EC MOV A,R4
\ 000017 C3 CLR C
\ 000018 941B SUBB A,#0x1b
\ 00001A 4004 JC ??halSetRadioIEEEFrequency_3
\ ??halSetRadioIEEEFrequency_2:
\ 00001C 7901 MOV R1,#0x1
\ 00001E 8042 SJMP ??halSetRadioIEEEFrequency_1
144 afreq = 357 + 5*(channel - 11) ;
\ ??halSetRadioIEEEFrequency_3:
\ 000020 EC MOV A,R4
\ 000021 F8 MOV R0,A
\ 000022 7900 MOV R1,#0x0
\ 000024 E8 MOV A,R0
\ 000025 75F005 MOV B,#0x5
\ 000028 A4 MUL AB
\ 000029 C8 XCH A,R0
\ 00002A ADF0 MOV R5,B
\ 00002C 75F000 MOV B,#0x0
\ 00002F A4 MUL AB
\ 000030 2D ADD A,R5
\ 000031 FD MOV R5,A
\ 000032 75F005 MOV B,#0x5
\ 000035 E9 MOV A,R1
\ 000036 A4 MUL AB
\ 000037 2D ADD A,R5
\ 000038 F9 MOV R1,A
\ 000039 742E MOV A,#0x2e
\ 00003B 28 ADD A,R0
\ 00003C F8 MOV R0,A
\ 00003D 7401 MOV A,#0x1
\ 00003F 39 ADDC A,R1
\ 000040 F9 MOV R1,A
\ 000041 E8 MOV A,R0
\ 000042 FA MOV R2,A
\ 000043 E9 MOV A,R1
\ 000044 FB MOV R3,A
145 FSCTRLL = (BYTE) afreq;
\ 000045 EA MOV A,R2
\ 000046 90DF11 MOV DPTR,#-0x20ef
\ 000049 F0 MOVX @DPTR,A
146 FSCTRLH = ((FSCTRLH & ~0x03) | (BYTE)((afreq >> 8) & 0x03));
\ 00004A EB MOV A,R3
\ 00004B F9 MOV R1,A
\ 00004C E9 MOV A,R1
\ 00004D F8 MOV R0,A
\ 00004E 5403 ANL A,#0x3
\ 000050 C0E0 PUSH A
\ 000052 90DF10 MOV DPTR,#-0x20f0
\ 000055 E0 MOVX A,@DPTR
\ 000056 54FC ANL A,#0xfc
\ 000058 FD MOV R5,A
\ 000059 D0E0 POP A
\ 00005B 4D ORL A,R5
\ 00005C 90DF10 MOV DPTR,#-0x20f0
\ 00005F F0 MOVX @DPTR,A
147 return(LRWPAN_STATUS_SUCCESS);
\ 000060 7900 MOV R1,#0x0
\ ??halSetRadioIEEEFrequency_1:
\ 000062 7F01 MOV R7,#0x1
\ 000064 02.... LJMP ?FUNC_LEAVE_XDATA
148 }
149
150 //this assumes 2.4GHz frequency
\ In segment NEAR_CODE, align 1, keep-with-next
151 LRWPAN_STATUS_ENUM halSetChannel(BYTE channel){
\ halSetChannel:
\ 000000 EE MOV A,R6
\ 000001 C0E0 PUSH A
\ 000003 ; Saved register size: 1
\ 000003 ; Auto size: 0
\ 000003 E9 MOV A,R1
152 return(halSetRadioIEEEFrequency(PHY_FREQ_2405M, channel));
\ 000004 ; Setup parameters for call to function halSetRadioIEEEFrequency
\ 000004 FA MOV R2,A
\ 000005 7900 MOV R1,#0x0
\ 000007 12.... LCALL halSetRadioIEEEFrequency
\ 00000A D0E0 POP A
\ 00000C FE MOV R6,A
\ 00000D 22 RET
153 }
154
155
\ In segment NEAR_CODE, align 1, keep-with-next
156 void halGetProcessorIEEEAddress(BYTE *buf) {
\ halGetProcessorIEEEAddress:
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
157 #if (CC2430_FLASH_SIZE == 128)
158 unsigned char bank;
159 bank = MEMCTR;
\ 000004 E5C7 MOV A,0xc7
\ 000006 FC MOV R4,A
160 //switch to bank 3
161 MEMCTR |= 0x30;
\ 000007 43C730 ORL 0xc7,#0x30
\ 00000A E5C7 MOV A,0xc7
162 #endif
163 //note that the flash programmer stores these in BIG ENDIAN order for some reason!!!
164 buf[7] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+0);
\ 00000C 90FFF8 MOV DPTR,#-0x8
\ 00000F E4 CLR A
\ 000010 93 MOVC A,@A+DPTR
\ 000011 8A82 MOV DPL,R2
\ 000013 8B83 MOV DPH,R3
\ 000015 A3 INC DPTR
\ 000016 A3 INC DPTR
\ 000017 A3 INC DPTR
\ 000018 A3 INC DPTR
\ 000019 A3 INC DPTR
\ 00001A A3 INC DPTR
\ 00001B A3 INC DPTR
\ 00001C F0 MOVX @DPTR,A
165 buf[6] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+1);
\ 00001D 90FFF9 MOV DPTR,#-0x7
\ 000020 E4 CLR A
\ 000021 93 MOVC A,@A+DPTR
\ 000022 8A82 MOV DPL,R2
\ 000024 8B83 MOV DPH,R3
\ 000026 A3 INC DPTR
\ 000027 A3 INC DPTR
\ 000028 A3 INC DPTR
\ 000029 A3 INC DPTR
\ 00002A A3 INC DPTR
\ 00002B A3 INC DPTR
\ 00002C F0 MOVX @DPTR,A
166 buf[5] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+2);
\ 00002D 90FFFA MOV DPTR,#-0x6
\ 000030 E4 CLR A
\ 000031 93 MOVC A,@A+DPTR
\ 000032 8A82 MOV DPL,R2
\ 000034 8B83 MOV DPH,R3
\ 000036 A3 INC DPTR
\ 000037 A3 INC DPTR
\ 000038 A3 INC DPTR
\ 000039 A3 INC DPTR
\ 00003A A3 INC DPTR
\ 00003B F0 MOVX @DPTR,A
167 buf[4] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+3);
\ 00003C 90FFFB MOV DPTR,#-0x5
\ 00003F E4 CLR A
\ 000040 93 MOVC A,@A+DPTR
\ 000041 8A82 MOV DPL,R2
\ 000043 8B83 MOV DPH,R3
\ 000045 A3 INC DPTR
\ 000046 A3 INC DPTR
\ 000047 A3 INC DPTR
\ 000048 A3 INC DPTR
\ 000049 F0 MOVX @DPTR,A
168 buf[3] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+4);
\ 00004A 90FFFC MOV DPTR,#-0x4
\ 00004D E4 CLR A
\ 00004E 93 MOVC A,@A+DPTR
\ 00004F 8A82 MOV DPL,R2
\ 000051 8B83 MOV DPH,R3
\ 000053 A3 INC DPTR
\ 000054 A3 INC DPTR
\ 000055 A3 INC DPTR
\ 000056 F0 MOVX @DPTR,A
169 buf[2] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+5);
\ 000057 90FFFD MOV DPTR,#-0x3
\ 00005A E4 CLR A
\ 00005B 93 MOVC A,@A+DPTR
\ 00005C 8A82 MOV DPL,R2
\ 00005E 8B83 MOV DPH,R3
\ 000060 A3 INC DPTR
\ 000061 A3 INC DPTR
\ 000062 F0 MOVX @DPTR,A
170 buf[1] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+6);
\ 000063 90FFFE MOV DPTR,#-0x2
\ 000066 E4 CLR A
\ 000067 93 MOVC A,@A+DPTR
\ 000068 8A82 MOV DPL,R2
\ 00006A 8B83 MOV DPH,R3
\ 00006C A3 INC DPTR
\ 00006D F0 MOVX @DPTR,A
171 buf[0] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+7);
\ 00006E 90FFFF MOV DPTR,#-0x1
\ 000071 E4 CLR A
\ 000072 93 MOVC A,@A+DPTR
\ 000073 8A82 MOV DPL,R2
\ 000075 8B83 MOV DPH,R3
\ 000077 F0 MOVX @DPTR,A
172 #if (CC2430_FLASH_SIZE == 128)
173 //resore old bank settings
174 MEMCTR = bank;
\ 000078 8CC7 MOV 0xc7,R4
175 #endif
176 }
\ 00007A D083 POP DPH
\ 00007C D082 POP DPL
\ 00007E 22 RET
177
178
\ In segment NEAR_CODE, align 1, keep-with-next
179 void halGetProcessorIEEEAddress_ASC(BYTE *buf) {
\ halGetProcessorIEEEAddress_ASC:
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
180 #if (CC2430_FLASH_SIZE == 128)
181 unsigned char bank;
182 bank = MEMCTR;
\ 000004 E5C7 MOV A,0xc7
\ 000006 FC MOV R4,A
183 //switch to bank 3
184 MEMCTR |= 0x30;
\ 000007 43C730 ORL 0xc7,#0x30
\ 00000A E5C7 MOV A,0xc7
185 #endif
186 //note that the flash programmer stores these in BIG ENDIAN order for some reason!!!
187 buf[0] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+0);
\ 00000C 90FFF8 MOV DPTR,#-0x8
\ 00000F E4 CLR A
\ 000010 93 MOVC A,@A+DPTR
\ 000011 8A82 MOV DPL,R2
\ 000013 8B83 MOV DPH,R3
\ 000015 F0 MOVX @DPTR,A
188 buf[1] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+1);
\ 000016 90FFF9 MOV DPTR,#-0x7
\ 000019 E4 CLR A
\ 00001A 93 MOVC A,@A+DPTR
\ 00001B 8A82 MOV DPL,R2
\ 00001D 8B83 MOV DPH,R3
\ 00001F A3 INC DPTR
\ 000020 F0 MOVX @DPTR,A
189 buf[2] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+2);
\ 000021 90FFFA MOV DPTR,#-0x6
\ 000024 E4 CLR A
\ 000025 93 MOVC A,@A+DPTR
\ 000026 8A82 MOV DPL,R2
\ 000028 8B83 MOV DPH,R3
\ 00002A A3 INC DPTR
\ 00002B A3 INC DPTR
\ 00002C F0 MOVX @DPTR,A
190 buf[3] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+3);
\ 00002D 90FFFB MOV DPTR,#-0x5
\ 000030 E4 CLR A
\ 000031 93 MOVC A,@A+DPTR
\ 000032 8A82 MOV DPL,R2
\ 000034 8B83 MOV DPH,R3
\ 000036 A3 INC DPTR
\ 000037 A3 INC DPTR
\ 000038 A3 INC DPTR
\ 000039 F0 MOVX @DPTR,A
191 buf[4] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+4);
\ 00003A 90FFFC MOV DPTR,#-0x4
\ 00003D E4 CLR A
\ 00003E 93 MOVC A,@A+DPTR
\ 00003F 8A82 MOV DPL,R2
\ 000041 8B83 MOV DPH,R3
\ 000043 A3 INC DPTR
\ 000044 A3 INC DPTR
\ 000045 A3 INC DPTR
\ 000046 A3 INC DPTR
\ 000047 F0 MOVX @DPTR,A
192 buf[5] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+5);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -