1086 lines
66 KiB
Plaintext
1086 lines
66 KiB
Plaintext
1 ;--------------------------------------------------------
|
|
2 ; File Created by SDCC : free open source ANSI-C Compiler
|
|
3 ; Version 4.2.0 #13081 (Linux)
|
|
4 ;--------------------------------------------------------
|
|
5 .module main
|
|
6 .optsdcc -mmcs51 --model-small
|
|
7
|
|
8 ;--------------------------------------------------------
|
|
9 ; Public variables in this module
|
|
10 ;--------------------------------------------------------
|
|
11 .globl _main
|
|
12 .globl _ms_tick_isr
|
|
13 .globl _model_get_mode
|
|
14 .globl _model_init
|
|
15 .globl _cmd_poll
|
|
16 .globl _sbus_make_uart_frame
|
|
17 .globl _sbus_unpack_channels
|
|
18 .globl _nrf24_write_ack_payload
|
|
19 .globl _nrf24_data_ready
|
|
20 .globl _nrf24_set_rx_mode
|
|
21 .globl _nrf24_check
|
|
22 .globl _nrf24_init
|
|
23 .globl _pwm_set_from_sbus
|
|
24 .globl _pwm_set
|
|
25 .globl _pwm_init
|
|
26 .globl _battery_read_mv
|
|
27 .globl _adc_init
|
|
28 .globl _spi_init
|
|
29 .globl _uart1_send_bytes
|
|
30 .globl _uart1_init
|
|
31 .globl _gpio_write
|
|
32 .globl _gpio_set_mode
|
|
33 .globl _delay_ms
|
|
34 .globl _EADC
|
|
35 .globl _ET1
|
|
36 .globl _ET0
|
|
37 .globl _ES
|
|
38 .globl _EA
|
|
39 .globl _REN
|
|
40 .globl _RI
|
|
41 .globl _TI
|
|
42 .globl _TR1
|
|
43 .globl _TF1
|
|
44 .globl _IT0
|
|
45 .globl _IE0
|
|
46 .globl _TR0
|
|
47 .globl _TF0
|
|
48 .globl _CMPCR2
|
|
49 .globl _CMPCR1
|
|
50 .globl _TA
|
|
51 .globl _IRCBAND_REG
|
|
52 .globl _IAP_TPS
|
|
53 .globl _IAP_CONTR
|
|
54 .globl _IAP_TRIG
|
|
55 .globl _IAP_CMD
|
|
56 .globl _IAP_ADDRL
|
|
57 .globl _IAP_ADDRH
|
|
58 .globl _IAP_DATA
|
|
59 .globl _WDT_CONTR
|
|
60 .globl _PCA_PWM3
|
|
61 .globl _PCA_PWM2
|
|
62 .globl _PCA_PWM1
|
|
63 .globl _PCA_PWM0
|
|
64 .globl _CCAP3L
|
|
65 .globl _CCAP2L
|
|
66 .globl _CCAP1L
|
|
67 .globl _CCAP0L
|
|
68 .globl _CCAPM3
|
|
69 .globl _CCAPM2
|
|
70 .globl _CCAPM1
|
|
71 .globl _CCAPM0
|
|
72 .globl _CMOD
|
|
73 .globl _CCON
|
|
74 .globl _ADCTIM_X
|
|
75 .globl _ADCCFG
|
|
76 .globl _ADC_RESL
|
|
77 .globl _ADC_RES
|
|
78 .globl _ADC_CONTR
|
|
79 .globl _SPDAT
|
|
80 .globl _SPCTL
|
|
81 .globl _SPSTAT
|
|
82 .globl _IP2H
|
|
83 .globl _IP2
|
|
84 .globl _IP
|
|
85 .globl _IE2
|
|
86 .globl _IE
|
|
87 .globl _BRT
|
|
88 .globl _P_SW1
|
|
89 .globl _SADEN
|
|
90 .globl _SADDR
|
|
91 .globl _S2BUF
|
|
92 .globl _S2CON
|
|
93 .globl _SBUF
|
|
94 .globl _SCON
|
|
95 .globl _TM4PS_X
|
|
96 .globl _TM3PS_X
|
|
97 .globl _TM2PS_X
|
|
98 .globl _T4T3M
|
|
99 .globl _T4L
|
|
100 .globl _T4H
|
|
101 .globl _T3L
|
|
102 .globl _T3H
|
|
103 .globl _T2L
|
|
104 .globl _T2H
|
|
105 .globl _INTCLKO
|
|
106 .globl _AUXR
|
|
107 .globl _TH1
|
|
108 .globl _TH0
|
|
109 .globl _TL1
|
|
110 .globl _TL0
|
|
111 .globl _TMOD
|
|
112 .globl _TCON
|
|
113 .globl _P_SW2
|
|
114 .globl _P5M0
|
|
115 .globl _P5M1
|
|
116 .globl _P4M0
|
|
117 .globl _P4M1
|
|
118 .globl _P3M0
|
|
119 .globl _P3M1
|
|
120 .globl _P2M0
|
|
121 .globl _P2M1
|
|
122 .globl _P1M0
|
|
123 .globl _P1M1
|
|
124 .globl _P0M0
|
|
125 .globl _P0M1
|
|
126 .globl _PSW
|
|
127 .globl _B
|
|
128 .globl _ACC
|
|
129 .globl _PCON
|
|
130 .globl _DPH
|
|
131 .globl _DPL
|
|
132 .globl _SP
|
|
133 .globl _P5
|
|
134 .globl _P4
|
|
135 .globl _P3
|
|
136 .globl _P2
|
|
137 .globl _P1
|
|
138 .globl _P0
|
|
139 ;--------------------------------------------------------
|
|
140 ; special function registers
|
|
141 ;--------------------------------------------------------
|
|
142 .area RSEG (ABS,DATA)
|
|
000000 143 .org 0x0000
|
|
000080 144 _P0 = 0x0080
|
|
000090 145 _P1 = 0x0090
|
|
0000A0 146 _P2 = 0x00a0
|
|
0000B0 147 _P3 = 0x00b0
|
|
0000C0 148 _P4 = 0x00c0
|
|
0000C8 149 _P5 = 0x00c8
|
|
000081 150 _SP = 0x0081
|
|
000082 151 _DPL = 0x0082
|
|
000083 152 _DPH = 0x0083
|
|
000087 153 _PCON = 0x0087
|
|
0000E0 154 _ACC = 0x00e0
|
|
0000F0 155 _B = 0x00f0
|
|
0000D0 156 _PSW = 0x00d0
|
|
000093 157 _P0M1 = 0x0093
|
|
000094 158 _P0M0 = 0x0094
|
|
000091 159 _P1M1 = 0x0091
|
|
000092 160 _P1M0 = 0x0092
|
|
000095 161 _P2M1 = 0x0095
|
|
000096 162 _P2M0 = 0x0096
|
|
0000B1 163 _P3M1 = 0x00b1
|
|
0000B2 164 _P3M0 = 0x00b2
|
|
0000B3 165 _P4M1 = 0x00b3
|
|
0000B4 166 _P4M0 = 0x00b4
|
|
0000C9 167 _P5M1 = 0x00c9
|
|
0000CA 168 _P5M0 = 0x00ca
|
|
0000BA 169 _P_SW2 = 0x00ba
|
|
000088 170 _TCON = 0x0088
|
|
000089 171 _TMOD = 0x0089
|
|
00008A 172 _TL0 = 0x008a
|
|
00008B 173 _TL1 = 0x008b
|
|
00008C 174 _TH0 = 0x008c
|
|
00008D 175 _TH1 = 0x008d
|
|
00008E 176 _AUXR = 0x008e
|
|
00008F 177 _INTCLKO = 0x008f
|
|
0000D6 178 _T2H = 0x00d6
|
|
0000D7 179 _T2L = 0x00d7
|
|
0000D4 180 _T3H = 0x00d4
|
|
0000D5 181 _T3L = 0x00d5
|
|
0000D2 182 _T4H = 0x00d2
|
|
0000D3 183 _T4L = 0x00d3
|
|
0000D1 184 _T4T3M = 0x00d1
|
|
00FEA1 185 _TM2PS_X = 0xfea1
|
|
00FEA2 186 _TM3PS_X = 0xfea2
|
|
00FEA3 187 _TM4PS_X = 0xfea3
|
|
000098 188 _SCON = 0x0098
|
|
000099 189 _SBUF = 0x0099
|
|
00009A 190 _S2CON = 0x009a
|
|
00009B 191 _S2BUF = 0x009b
|
|
0000A9 192 _SADDR = 0x00a9
|
|
0000B9 193 _SADEN = 0x00b9
|
|
0000A2 194 _P_SW1 = 0x00a2
|
|
00009C 195 _BRT = 0x009c
|
|
0000A8 196 _IE = 0x00a8
|
|
0000AF 197 _IE2 = 0x00af
|
|
0000B8 198 _IP = 0x00b8
|
|
0000B6 199 _IP2 = 0x00b6
|
|
0000B7 200 _IP2H = 0x00b7
|
|
0000CD 201 _SPSTAT = 0x00cd
|
|
0000CE 202 _SPCTL = 0x00ce
|
|
0000CF 203 _SPDAT = 0x00cf
|
|
0000BC 204 _ADC_CONTR = 0x00bc
|
|
0000BD 205 _ADC_RES = 0x00bd
|
|
0000BE 206 _ADC_RESL = 0x00be
|
|
0000DE 207 _ADCCFG = 0x00de
|
|
00FEA8 208 _ADCTIM_X = 0xfea8
|
|
0000D8 209 _CCON = 0x00d8
|
|
0000D9 210 _CMOD = 0x00d9
|
|
0000DA 211 _CCAPM0 = 0x00da
|
|
0000DB 212 _CCAPM1 = 0x00db
|
|
0000DC 213 _CCAPM2 = 0x00dc
|
|
0000DD 214 _CCAPM3 = 0x00dd
|
|
0000EA 215 _CCAP0L = 0x00ea
|
|
0000EB 216 _CCAP1L = 0x00eb
|
|
0000EC 217 _CCAP2L = 0x00ec
|
|
0000ED 218 _CCAP3L = 0x00ed
|
|
0000F2 219 _PCA_PWM0 = 0x00f2
|
|
0000F3 220 _PCA_PWM1 = 0x00f3
|
|
0000F4 221 _PCA_PWM2 = 0x00f4
|
|
0000F5 222 _PCA_PWM3 = 0x00f5
|
|
0000C1 223 _WDT_CONTR = 0x00c1
|
|
0000C2 224 _IAP_DATA = 0x00c2
|
|
0000C3 225 _IAP_ADDRH = 0x00c3
|
|
0000C4 226 _IAP_ADDRL = 0x00c4
|
|
0000C5 227 _IAP_CMD = 0x00c5
|
|
0000C6 228 _IAP_TRIG = 0x00c6
|
|
0000C7 229 _IAP_CONTR = 0x00c7
|
|
0000F7 230 _IAP_TPS = 0x00f7
|
|
00009D 231 _IRCBAND_REG = 0x009d
|
|
0000AE 232 _TA = 0x00ae
|
|
0000E6 233 _CMPCR1 = 0x00e6
|
|
0000E7 234 _CMPCR2 = 0x00e7
|
|
235 ;--------------------------------------------------------
|
|
236 ; special function bits
|
|
237 ;--------------------------------------------------------
|
|
238 .area RSEG (ABS,DATA)
|
|
000000 239 .org 0x0000
|
|
00008D 240 _TF0 = 0x008d
|
|
00008C 241 _TR0 = 0x008c
|
|
000089 242 _IE0 = 0x0089
|
|
000088 243 _IT0 = 0x0088
|
|
00008F 244 _TF1 = 0x008f
|
|
00008E 245 _TR1 = 0x008e
|
|
000099 246 _TI = 0x0099
|
|
000098 247 _RI = 0x0098
|
|
00009C 248 _REN = 0x009c
|
|
0000AF 249 _EA = 0x00af
|
|
0000AC 250 _ES = 0x00ac
|
|
0000A9 251 _ET0 = 0x00a9
|
|
0000AB 252 _ET1 = 0x00ab
|
|
0000AD 253 _EADC = 0x00ad
|
|
254 ;--------------------------------------------------------
|
|
255 ; overlayable register banks
|
|
256 ;--------------------------------------------------------
|
|
257 .area REG_BANK_0 (REL,OVR,DATA)
|
|
000000 258 .ds 8
|
|
259 ;--------------------------------------------------------
|
|
260 ; overlayable bit register bank
|
|
261 ;--------------------------------------------------------
|
|
262 .area BIT_BANK (REL,OVR,DATA)
|
|
000000 263 bits:
|
|
000000 264 .ds 1
|
|
008000 265 b0 = bits[0]
|
|
008100 266 b1 = bits[1]
|
|
008200 267 b2 = bits[2]
|
|
008300 268 b3 = bits[3]
|
|
008400 269 b4 = bits[4]
|
|
008500 270 b5 = bits[5]
|
|
008600 271 b6 = bits[6]
|
|
008700 272 b7 = bits[7]
|
|
273 ;--------------------------------------------------------
|
|
274 ; internal ram data
|
|
275 ;--------------------------------------------------------
|
|
276 .area DSEG (DATA)
|
|
000000 277 _output_channels_frame_131072_54:
|
|
000000 278 .ds 25
|
|
000019 279 _make_ack_payload_mv_65536_57:
|
|
000019 280 .ds 2
|
|
00001B 281 _s_ms_tick:
|
|
00001B 282 .ds 1
|
|
00001C 283 _s_ms_count:
|
|
00001C 284 .ds 2
|
|
00001E 285 _ms_tick_isr_last_rx_count_65537_63:
|
|
00001E 286 .ds 1
|
|
287 ;--------------------------------------------------------
|
|
288 ; overlayable items in internal ram
|
|
289 ;--------------------------------------------------------
|
|
290 ;--------------------------------------------------------
|
|
291 ; Stack segment in internal ram
|
|
292 ;--------------------------------------------------------
|
|
293 .area SSEG
|
|
000000 294 __start__stack:
|
|
000000 295 .ds 1
|
|
296
|
|
297 ;--------------------------------------------------------
|
|
298 ; indirectly addressable internal ram data
|
|
299 ;--------------------------------------------------------
|
|
300 .area ISEG (DATA)
|
|
301 ;--------------------------------------------------------
|
|
302 ; absolute internal ram data
|
|
303 ;--------------------------------------------------------
|
|
304 .area IABS (ABS,DATA)
|
|
305 .area IABS (ABS,DATA)
|
|
306 ;--------------------------------------------------------
|
|
307 ; bit data
|
|
308 ;--------------------------------------------------------
|
|
309 .area BSEG (BIT)
|
|
310 ;--------------------------------------------------------
|
|
311 ; paged external ram data
|
|
312 ;--------------------------------------------------------
|
|
313 .area PSEG (PAG,XDATA)
|
|
314 ;--------------------------------------------------------
|
|
315 ; external ram data
|
|
316 ;--------------------------------------------------------
|
|
317 .area XSEG (XDATA)
|
|
000000 318 _s_channels:
|
|
000000 319 .ds 32
|
|
320 ;--------------------------------------------------------
|
|
321 ; absolute external ram data
|
|
322 ;--------------------------------------------------------
|
|
323 .area XABS (ABS,XDATA)
|
|
324 ;--------------------------------------------------------
|
|
325 ; external initialized ram data
|
|
326 ;--------------------------------------------------------
|
|
327 .area XISEG (XDATA)
|
|
000000 328 _s_frame_seq:
|
|
000000 329 .ds 1
|
|
000001 330 _s_frame_lost:
|
|
000001 331 .ds 1
|
|
000002 332 _s_led_tick_ms:
|
|
000002 333 .ds 2
|
|
000004 334 _s_led_state:
|
|
000004 335 .ds 1
|
|
336 .area HOME (CODE)
|
|
337 .area GSINIT0 (CODE)
|
|
338 .area GSINIT1 (CODE)
|
|
339 .area GSINIT2 (CODE)
|
|
340 .area GSINIT3 (CODE)
|
|
341 .area GSINIT4 (CODE)
|
|
342 .area GSINIT5 (CODE)
|
|
343 .area GSINIT (CODE)
|
|
344 .area GSFINAL (CODE)
|
|
345 .area CSEG (CODE)
|
|
346 ;--------------------------------------------------------
|
|
347 ; interrupt vector
|
|
348 ;--------------------------------------------------------
|
|
349 .area HOME (CODE)
|
|
000000 350 __interrupt_vect:
|
|
000000 02r00r00 [24] 351 ljmp __sdcc_gsinit_startup
|
|
000003 32 [24] 352 reti
|
|
000004 353 .ds 7
|
|
00000B 32 [24] 354 reti
|
|
00000C 355 .ds 7
|
|
000013 32 [24] 356 reti
|
|
000014 357 .ds 7
|
|
00001B 32 [24] 358 reti
|
|
00001C 359 .ds 7
|
|
000023 32 [24] 360 reti
|
|
000024 361 .ds 7
|
|
00002B 32 [24] 362 reti
|
|
00002C 363 .ds 7
|
|
000033 32 [24] 364 reti
|
|
000034 365 .ds 7
|
|
00003B 32 [24] 366 reti
|
|
00003C 367 .ds 7
|
|
000043 32 [24] 368 reti
|
|
000044 369 .ds 7
|
|
00004B 32 [24] 370 reti
|
|
00004C 371 .ds 7
|
|
000053 32 [24] 372 reti
|
|
000054 373 .ds 7
|
|
00005B 32 [24] 374 reti
|
|
00005C 375 .ds 7
|
|
000063 32 [24] 376 reti
|
|
000064 377 .ds 7
|
|
00006B 32 [24] 378 reti
|
|
00006C 379 .ds 7
|
|
000073 32 [24] 380 reti
|
|
000074 381 .ds 7
|
|
00007B 32 [24] 382 reti
|
|
00007C 383 .ds 7
|
|
000083 32 [24] 384 reti
|
|
000084 385 .ds 7
|
|
00008B 32 [24] 386 reti
|
|
00008C 387 .ds 7
|
|
000093 32 [24] 388 reti
|
|
000094 389 .ds 7
|
|
00009B 32 [24] 390 reti
|
|
00009C 391 .ds 7
|
|
0000A3 32 [24] 392 reti
|
|
0000A4 393 .ds 7
|
|
0000AB 32 [24] 394 reti
|
|
0000AC 395 .ds 7
|
|
0000B3 32 [24] 396 reti
|
|
0000B4 397 .ds 7
|
|
0000BB 32 [24] 398 reti
|
|
0000BC 399 .ds 7
|
|
0000C3 32 [24] 400 reti
|
|
0000C4 401 .ds 7
|
|
0000CB 32 [24] 402 reti
|
|
0000CC 403 .ds 7
|
|
0000D3 32 [24] 404 reti
|
|
0000D4 405 .ds 7
|
|
0000DB 02r02r20 [24] 406 ljmp _ms_tick_isr
|
|
407 ;--------------------------------------------------------
|
|
408 ; global & static initialisations
|
|
409 ;--------------------------------------------------------
|
|
410 .area HOME (CODE)
|
|
411 .area GSINIT (CODE)
|
|
412 .area GSFINAL (CODE)
|
|
413 .area GSINIT (CODE)
|
|
414 .globl __sdcc_gsinit_startup
|
|
415 .globl __sdcc_program_startup
|
|
416 .globl __start__stack
|
|
417 .globl __mcs51_genXINIT
|
|
418 .globl __mcs51_genXRAMCLEAR
|
|
419 .globl __mcs51_genRAMCLEAR
|
|
420 ;------------------------------------------------------------
|
|
421 ;Allocation info for local variables in function 'ms_tick_isr'
|
|
422 ;------------------------------------------------------------
|
|
423 ;last_rx_count Allocated with name '_ms_tick_isr_last_rx_count_65537_63'
|
|
424 ;------------------------------------------------------------
|
|
425 ; src/main.c:137: static uint8_t last_rx_count = 0;
|
|
000000 75*1E 00 [24] 426 mov _ms_tick_isr_last_rx_count_65537_63,#0x00
|
|
427 ; src/main.c:128: static volatile uint8_t s_ms_tick = 0;
|
|
000003 75*1B 00 [24] 428 mov _s_ms_tick,#0x00
|
|
429 ; src/main.c:129: static volatile uint16_t s_ms_count = 0;
|
|
000006 E4 [12] 430 clr a
|
|
000007 F5*1C [12] 431 mov _s_ms_count,a
|
|
000009 F5*1D [12] 432 mov (_s_ms_count + 1),a
|
|
433 .area GSFINAL (CODE)
|
|
000000 02r00rDE [24] 434 ljmp __sdcc_program_startup
|
|
435 ;--------------------------------------------------------
|
|
436 ; Home
|
|
437 ;--------------------------------------------------------
|
|
438 .area HOME (CODE)
|
|
439 .area HOME (CODE)
|
|
0000DE 440 __sdcc_program_startup:
|
|
0000DE 02r02rD3 [24] 441 ljmp _main
|
|
442 ; return from main will return to caller
|
|
443 ;--------------------------------------------------------
|
|
444 ; code
|
|
445 ;--------------------------------------------------------
|
|
446 .area CSEG (CODE)
|
|
447 ;------------------------------------------------------------
|
|
448 ;Allocation info for local variables in function 'sys_clock_init'
|
|
449 ;------------------------------------------------------------
|
|
450 ; src/main.c:48: static void sys_clock_init(void)
|
|
451 ; -----------------------------------------
|
|
452 ; function sys_clock_init
|
|
453 ; -----------------------------------------
|
|
000000 454 _sys_clock_init:
|
|
000007 455 ar7 = 0x07
|
|
000006 456 ar6 = 0x06
|
|
000005 457 ar5 = 0x05
|
|
000004 458 ar4 = 0x04
|
|
000003 459 ar3 = 0x03
|
|
000002 460 ar2 = 0x02
|
|
000001 461 ar1 = 0x01
|
|
000000 462 ar0 = 0x00
|
|
463 ; src/main.c:53: P_SW2 |= 0x80;
|
|
000000 43 BA 80 [24] 464 orl _P_SW2,#0x80
|
|
465 ; src/main.c:54: *((volatile uint8_t __xdata *)CLKSEL_X) = 0x00; /* 24MHz IRC */
|
|
000003 90 FE 00 [24] 466 mov dptr,#0xfe00
|
|
000006 E4 [12] 467 clr a
|
|
000007 F0 [24] 468 movx @dptr,a
|
|
469 ; src/main.c:55: *((volatile uint8_t __xdata *)CLKDIV_X) = 0x00; /* 不分频 */
|
|
000008 90 FE 01 [24] 470 mov dptr,#0xfe01
|
|
00000B F0 [24] 471 movx @dptr,a
|
|
472 ; src/main.c:56: P_SW2 &= ~0x80;
|
|
00000C 53 BA 7F [24] 473 anl _P_SW2,#0x7f
|
|
474 ; src/main.c:58: IRCBAND_REG = 0x02;
|
|
00000F 75 9D 02 [24] 475 mov _IRCBAND_REG,#0x02
|
|
476 ; src/main.c:59: }
|
|
000012 22 [24] 477 ret
|
|
478 ;------------------------------------------------------------
|
|
479 ;Allocation info for local variables in function 'led_init'
|
|
480 ;------------------------------------------------------------
|
|
481 ; src/main.c:61: static void led_init(void)
|
|
482 ; -----------------------------------------
|
|
483 ; function led_init
|
|
484 ; -----------------------------------------
|
|
000013 485 _led_init:
|
|
486 ; src/main.c:63: gpio_set_mode(LED_PORT, LED_BIT, GPIO_MODE_PUSHPULL);
|
|
000013 75*00 02 [24] 487 mov _gpio_set_mode_PARM_2,#0x02
|
|
000016 75*00 01 [24] 488 mov _gpio_set_mode_PARM_3,#0x01
|
|
000019 75 82 03 [24] 489 mov dpl,#0x03
|
|
00001C 12r00r00 [24] 490 lcall _gpio_set_mode
|
|
491 ; src/main.c:64: gpio_write(LED_PORT, LED_BIT, 0);
|
|
00001F 75*00 02 [24] 492 mov _gpio_write_PARM_2,#0x02
|
|
000022 75*00 00 [24] 493 mov _gpio_write_PARM_3,#0x00
|
|
000025 75 82 03 [24] 494 mov dpl,#0x03
|
|
495 ; src/main.c:65: }
|
|
000028 02r00r00 [24] 496 ljmp _gpio_write
|
|
497 ;------------------------------------------------------------
|
|
498 ;Allocation info for local variables in function 'led_blink_tick'
|
|
499 ;------------------------------------------------------------
|
|
500 ; src/main.c:67: static void led_blink_tick(void)
|
|
501 ; -----------------------------------------
|
|
502 ; function led_blink_tick
|
|
503 ; -----------------------------------------
|
|
00002B 504 _led_blink_tick:
|
|
505 ; src/main.c:70: if (++s_led_tick_ms >= 100) { /* 100ms 闪烁 */
|
|
00002B 90r00r02 [24] 506 mov dptr,#_s_led_tick_ms
|
|
00002E E0 [24] 507 movx a,@dptr
|
|
00002F 24 01 [12] 508 add a,#0x01
|
|
000031 F0 [24] 509 movx @dptr,a
|
|
000032 A3 [24] 510 inc dptr
|
|
000033 E0 [24] 511 movx a,@dptr
|
|
000034 34 00 [12] 512 addc a,#0x00
|
|
000036 F0 [24] 513 movx @dptr,a
|
|
000037 90r00r02 [24] 514 mov dptr,#_s_led_tick_ms
|
|
00003A E0 [24] 515 movx a,@dptr
|
|
00003B FE [12] 516 mov r6,a
|
|
00003C A3 [24] 517 inc dptr
|
|
00003D E0 [24] 518 movx a,@dptr
|
|
00003E FF [12] 519 mov r7,a
|
|
00003F C3 [12] 520 clr c
|
|
000040 EE [12] 521 mov a,r6
|
|
000041 94 64 [12] 522 subb a,#0x64
|
|
000043 EF [12] 523 mov a,r7
|
|
000044 94 00 [12] 524 subb a,#0x00
|
|
000046 40 1E [24] 525 jc 00103$
|
|
526 ; src/main.c:71: s_led_tick_ms = 0;
|
|
000048 90r00r02 [24] 527 mov dptr,#_s_led_tick_ms
|
|
00004B E4 [12] 528 clr a
|
|
00004C F0 [24] 529 movx @dptr,a
|
|
00004D A3 [24] 530 inc dptr
|
|
00004E F0 [24] 531 movx @dptr,a
|
|
532 ; src/main.c:72: s_led_state ^= 1;
|
|
00004F 90r00r04 [24] 533 mov dptr,#_s_led_state
|
|
000052 E0 [24] 534 movx a,@dptr
|
|
000053 63 E0 01 [24] 535 xrl acc,#0x01
|
|
000056 F0 [24] 536 movx @dptr,a
|
|
537 ; src/main.c:73: gpio_write(LED_PORT, LED_BIT, s_led_state);
|
|
000057 90r00r04 [24] 538 mov dptr,#_s_led_state
|
|
00005A E0 [24] 539 movx a,@dptr
|
|
00005B F5*00 [12] 540 mov _gpio_write_PARM_3,a
|
|
00005D 75*00 02 [24] 541 mov _gpio_write_PARM_2,#0x02
|
|
000060 75 82 03 [24] 542 mov dpl,#0x03
|
|
543 ; src/main.c:75: }
|
|
000063 02r00r00 [24] 544 ljmp _gpio_write
|
|
000066 545 00103$:
|
|
000066 22 [24] 546 ret
|
|
547 ;------------------------------------------------------------
|
|
548 ;Allocation info for local variables in function 'output_channels'
|
|
549 ;------------------------------------------------------------
|
|
550 ;ch Allocated to registers r5 r6 r7
|
|
551 ;mode Allocated to registers r4
|
|
552 ;frame Allocated with name '_output_channels_frame_131072_54'
|
|
553 ;------------------------------------------------------------
|
|
554 ; src/main.c:78: static void output_channels(const uint16_t ch[SBUS_CH_COUNT])
|
|
555 ; -----------------------------------------
|
|
556 ; function output_channels
|
|
557 ; -----------------------------------------
|
|
000067 558 _output_channels:
|
|
000067 AD 82 [24] 559 mov r5,dpl
|
|
000069 AE 83 [24] 560 mov r6,dph
|
|
00006B AF F0 [24] 561 mov r7,b
|
|
562 ; src/main.c:80: uint8_t mode = model_get_mode();
|
|
00006D C0 07 [24] 563 push ar7
|
|
00006F C0 06 [24] 564 push ar6
|
|
000071 C0 05 [24] 565 push ar5
|
|
000073 12r00r00 [24] 566 lcall _model_get_mode
|
|
000076 AC 82 [24] 567 mov r4,dpl
|
|
000078 D0 05 [24] 568 pop ar5
|
|
00007A D0 06 [24] 569 pop ar6
|
|
00007C D0 07 [24] 570 pop ar7
|
|
571 ; src/main.c:81: if (mode == MODE_PWM) {
|
|
00007E BC 01 02 [24] 572 cjne r4,#0x01,00117$
|
|
000081 80 03 [24] 573 sjmp 00118$
|
|
000083 574 00117$:
|
|
000083 02r01r21 [24] 575 ljmp 00105$
|
|
000086 576 00118$:
|
|
577 ; src/main.c:83: pwm_set_from_sbus(0, ch[0]);
|
|
000086 8D 82 [24] 578 mov dpl,r5
|
|
000088 8E 83 [24] 579 mov dph,r6
|
|
00008A 8F F0 [24] 580 mov b,r7
|
|
00008C 12r00r00 [24] 581 lcall __gptrget
|
|
00008F F5*00 [12] 582 mov _pwm_set_from_sbus_PARM_2,a
|
|
000091 A3 [24] 583 inc dptr
|
|
000092 12r00r00 [24] 584 lcall __gptrget
|
|
000095 F5*01 [12] 585 mov (_pwm_set_from_sbus_PARM_2 + 1),a
|
|
000097 75 82 00 [24] 586 mov dpl,#0x00
|
|
00009A C0 07 [24] 587 push ar7
|
|
00009C C0 06 [24] 588 push ar6
|
|
00009E C0 05 [24] 589 push ar5
|
|
0000A0 12r00r00 [24] 590 lcall _pwm_set_from_sbus
|
|
0000A3 D0 05 [24] 591 pop ar5
|
|
0000A5 D0 06 [24] 592 pop ar6
|
|
0000A7 D0 07 [24] 593 pop ar7
|
|
594 ; src/main.c:84: pwm_set_from_sbus(1, ch[1]);
|
|
0000A9 74 02 [12] 595 mov a,#0x02
|
|
0000AB 2D [12] 596 add a,r5
|
|
0000AC F9 [12] 597 mov r1,a
|
|
0000AD E4 [12] 598 clr a
|
|
0000AE 3E [12] 599 addc a,r6
|
|
0000AF FA [12] 600 mov r2,a
|
|
0000B0 8F 03 [24] 601 mov ar3,r7
|
|
0000B2 89 82 [24] 602 mov dpl,r1
|
|
0000B4 8A 83 [24] 603 mov dph,r2
|
|
0000B6 8B F0 [24] 604 mov b,r3
|
|
0000B8 12r00r00 [24] 605 lcall __gptrget
|
|
0000BB F5*00 [12] 606 mov _pwm_set_from_sbus_PARM_2,a
|
|
0000BD A3 [24] 607 inc dptr
|
|
0000BE 12r00r00 [24] 608 lcall __gptrget
|
|
0000C1 F5*01 [12] 609 mov (_pwm_set_from_sbus_PARM_2 + 1),a
|
|
0000C3 75 82 01 [24] 610 mov dpl,#0x01
|
|
0000C6 C0 07 [24] 611 push ar7
|
|
0000C8 C0 06 [24] 612 push ar6
|
|
0000CA C0 05 [24] 613 push ar5
|
|
0000CC 12r00r00 [24] 614 lcall _pwm_set_from_sbus
|
|
0000CF D0 05 [24] 615 pop ar5
|
|
0000D1 D0 06 [24] 616 pop ar6
|
|
0000D3 D0 07 [24] 617 pop ar7
|
|
618 ; src/main.c:85: pwm_set_from_sbus(2, ch[2]);
|
|
0000D5 74 04 [12] 619 mov a,#0x04
|
|
0000D7 2D [12] 620 add a,r5
|
|
0000D8 F9 [12] 621 mov r1,a
|
|
0000D9 E4 [12] 622 clr a
|
|
0000DA 3E [12] 623 addc a,r6
|
|
0000DB FA [12] 624 mov r2,a
|
|
0000DC 8F 03 [24] 625 mov ar3,r7
|
|
0000DE 89 82 [24] 626 mov dpl,r1
|
|
0000E0 8A 83 [24] 627 mov dph,r2
|
|
0000E2 8B F0 [24] 628 mov b,r3
|
|
0000E4 12r00r00 [24] 629 lcall __gptrget
|
|
0000E7 F5*00 [12] 630 mov _pwm_set_from_sbus_PARM_2,a
|
|
0000E9 A3 [24] 631 inc dptr
|
|
0000EA 12r00r00 [24] 632 lcall __gptrget
|
|
0000ED F5*01 [12] 633 mov (_pwm_set_from_sbus_PARM_2 + 1),a
|
|
0000EF 75 82 02 [24] 634 mov dpl,#0x02
|
|
0000F2 C0 07 [24] 635 push ar7
|
|
0000F4 C0 06 [24] 636 push ar6
|
|
0000F6 C0 05 [24] 637 push ar5
|
|
0000F8 12r00r00 [24] 638 lcall _pwm_set_from_sbus
|
|
0000FB D0 05 [24] 639 pop ar5
|
|
0000FD D0 06 [24] 640 pop ar6
|
|
0000FF D0 07 [24] 641 pop ar7
|
|
642 ; src/main.c:86: pwm_set_from_sbus(3, ch[3]);
|
|
000101 74 06 [12] 643 mov a,#0x06
|
|
000103 2D [12] 644 add a,r5
|
|
000104 F9 [12] 645 mov r1,a
|
|
000105 E4 [12] 646 clr a
|
|
000106 3E [12] 647 addc a,r6
|
|
000107 FA [12] 648 mov r2,a
|
|
000108 8F 03 [24] 649 mov ar3,r7
|
|
00010A 89 82 [24] 650 mov dpl,r1
|
|
00010C 8A 83 [24] 651 mov dph,r2
|
|
00010E 8B F0 [24] 652 mov b,r3
|
|
000110 12r00r00 [24] 653 lcall __gptrget
|
|
000113 F5*00 [12] 654 mov _pwm_set_from_sbus_PARM_2,a
|
|
000115 A3 [24] 655 inc dptr
|
|
000116 12r00r00 [24] 656 lcall __gptrget
|
|
000119 F5*01 [12] 657 mov (_pwm_set_from_sbus_PARM_2 + 1),a
|
|
00011B 75 82 03 [24] 658 mov dpl,#0x03
|
|
00011E 02r00r00 [24] 659 ljmp _pwm_set_from_sbus
|
|
000121 660 00105$:
|
|
661 ; src/main.c:87: } else if (mode == MODE_SBUS) {
|
|
000121 EC [12] 662 mov a,r4
|
|
663 ; src/main.c:90: sbus_make_uart_frame(ch, frame);
|
|
000122 70 1D [24] 664 jnz 00107$
|
|
000124 75*00r00 [24] 665 mov _sbus_make_uart_frame_PARM_2,#_output_channels_frame_131072_54
|
|
000127 F5*01 [12] 666 mov (_sbus_make_uart_frame_PARM_2 + 1),a
|
|
000129 75*02 40 [24] 667 mov (_sbus_make_uart_frame_PARM_2 + 2),#0x40
|
|
00012C 8D 82 [24] 668 mov dpl,r5
|
|
00012E 8E 83 [24] 669 mov dph,r6
|
|
000130 8F F0 [24] 670 mov b,r7
|
|
000132 12r00r00 [24] 671 lcall _sbus_make_uart_frame
|
|
672 ; src/main.c:91: uart1_send_bytes(frame, 25);
|
|
000135 75*00 19 [24] 673 mov _uart1_send_bytes_PARM_2,#0x19
|
|
000138 90r00r00 [24] 674 mov dptr,#_output_channels_frame_131072_54
|
|
00013B 75 F0 40 [24] 675 mov b,#0x40
|
|
676 ; src/main.c:92: } else if (mode == MODE_UART) {
|
|
677 ; src/main.c:95: }
|
|
00013E 02r00r00 [24] 678 ljmp _uart1_send_bytes
|
|
000141 679 00107$:
|
|
000141 22 [24] 680 ret
|
|
681 ;------------------------------------------------------------
|
|
682 ;Allocation info for local variables in function 'make_ack_payload'
|
|
683 ;------------------------------------------------------------
|
|
684 ;buf Allocated to registers r5 r6 r7
|
|
685 ;mv Allocated with name '_make_ack_payload_mv_65536_57'
|
|
686 ;i Allocated to registers r4
|
|
687 ;------------------------------------------------------------
|
|
688 ; src/main.c:98: static void make_ack_payload(uint8_t *buf)
|
|
689 ; -----------------------------------------
|
|
690 ; function make_ack_payload
|
|
691 ; -----------------------------------------
|
|
000142 692 _make_ack_payload:
|
|
000142 AD 82 [24] 693 mov r5,dpl
|
|
000144 AE 83 [24] 694 mov r6,dph
|
|
000146 AF F0 [24] 695 mov r7,b
|
|
696 ; src/main.c:100: uint16_t mv = battery_read_mv(); /* mV */
|
|
000148 C0 07 [24] 697 push ar7
|
|
00014A C0 06 [24] 698 push ar6
|
|
00014C C0 05 [24] 699 push ar5
|
|
00014E 12r00r00 [24] 700 lcall _battery_read_mv
|
|
000151 85 82*19 [24] 701 mov _make_ack_payload_mv_65536_57,dpl
|
|
000154 85 83*1A [24] 702 mov (_make_ack_payload_mv_65536_57 + 1),dph
|
|
000157 D0 05 [24] 703 pop ar5
|
|
000159 D0 06 [24] 704 pop ar6
|
|
00015B D0 07 [24] 705 pop ar7
|
|
706 ; src/main.c:101: buf[0] = FRAME_ID_TELEMETRY;
|
|
00015D 8D 82 [24] 707 mov dpl,r5
|
|
00015F 8E 83 [24] 708 mov dph,r6
|
|
000161 8F F0 [24] 709 mov b,r7
|
|
000163 74 B0 [12] 710 mov a,#0xb0
|
|
000165 12r00r00 [24] 711 lcall __gptrput
|
|
712 ; src/main.c:102: buf[1] = s_frame_seq;
|
|
000168 74 01 [12] 713 mov a,#0x01
|
|
00016A 2D [12] 714 add a,r5
|
|
00016B F8 [12] 715 mov r0,a
|
|
00016C E4 [12] 716 clr a
|
|
00016D 3E [12] 717 addc a,r6
|
|
00016E F9 [12] 718 mov r1,a
|
|
00016F 8F 02 [24] 719 mov ar2,r7
|
|
000171 90r00r00 [24] 720 mov dptr,#_s_frame_seq
|
|
000174 E0 [24] 721 movx a,@dptr
|
|
000175 88 82 [24] 722 mov dpl,r0
|
|
000177 89 83 [24] 723 mov dph,r1
|
|
000179 8A F0 [24] 724 mov b,r2
|
|
00017B 12r00r00 [24] 725 lcall __gptrput
|
|
726 ; src/main.c:103: buf[2] = (uint8_t)(mv >> 8); /* voltage mV high */
|
|
00017E 74 02 [12] 727 mov a,#0x02
|
|
000180 2D [12] 728 add a,r5
|
|
000181 FA [12] 729 mov r2,a
|
|
000182 E4 [12] 730 clr a
|
|
000183 3E [12] 731 addc a,r6
|
|
000184 FB [12] 732 mov r3,a
|
|
000185 8F 04 [24] 733 mov ar4,r7
|
|
000187 A9*1A [24] 734 mov r1,(_make_ack_payload_mv_65536_57 + 1)
|
|
000189 8A 82 [24] 735 mov dpl,r2
|
|
00018B 8B 83 [24] 736 mov dph,r3
|
|
00018D 8C F0 [24] 737 mov b,r4
|
|
00018F E9 [12] 738 mov a,r1
|
|
000190 12r00r00 [24] 739 lcall __gptrput
|
|
740 ; src/main.c:104: buf[3] = (uint8_t)(mv & 0xFF); /* voltage mV low */
|
|
000193 74 03 [12] 741 mov a,#0x03
|
|
000195 2D [12] 742 add a,r5
|
|
000196 FA [12] 743 mov r2,a
|
|
000197 E4 [12] 744 clr a
|
|
000198 3E [12] 745 addc a,r6
|
|
000199 FB [12] 746 mov r3,a
|
|
00019A 8F 04 [24] 747 mov ar4,r7
|
|
00019C A9*19 [24] 748 mov r1,_make_ack_payload_mv_65536_57
|
|
00019E 8A 82 [24] 749 mov dpl,r2
|
|
0001A0 8B 83 [24] 750 mov dph,r3
|
|
0001A2 8C F0 [24] 751 mov b,r4
|
|
0001A4 E9 [12] 752 mov a,r1
|
|
0001A5 12r00r00 [24] 753 lcall __gptrput
|
|
754 ; src/main.c:105: buf[4] = 0; /* current (预留) */
|
|
0001A8 74 04 [12] 755 mov a,#0x04
|
|
0001AA 2D [12] 756 add a,r5
|
|
0001AB FA [12] 757 mov r2,a
|
|
0001AC E4 [12] 758 clr a
|
|
0001AD 3E [12] 759 addc a,r6
|
|
0001AE FB [12] 760 mov r3,a
|
|
0001AF 8F 04 [24] 761 mov ar4,r7
|
|
0001B1 8A 82 [24] 762 mov dpl,r2
|
|
0001B3 8B 83 [24] 763 mov dph,r3
|
|
0001B5 8C F0 [24] 764 mov b,r4
|
|
0001B7 E4 [12] 765 clr a
|
|
0001B8 12r00r00 [24] 766 lcall __gptrput
|
|
767 ; src/main.c:107: for (uint8_t i = 5; i < NRF_PAYLOAD_LEN; i++) buf[i] = 0;
|
|
0001BB 7C 05 [12] 768 mov r4,#0x05
|
|
0001BD 769 00103$:
|
|
0001BD BC 20 00 [24] 770 cjne r4,#0x20,00116$
|
|
0001C0 771 00116$:
|
|
0001C0 50 15 [24] 772 jnc 00105$
|
|
0001C2 EC [12] 773 mov a,r4
|
|
0001C3 2D [12] 774 add a,r5
|
|
0001C4 F9 [12] 775 mov r1,a
|
|
0001C5 E4 [12] 776 clr a
|
|
0001C6 3E [12] 777 addc a,r6
|
|
0001C7 FA [12] 778 mov r2,a
|
|
0001C8 8F 03 [24] 779 mov ar3,r7
|
|
0001CA 89 82 [24] 780 mov dpl,r1
|
|
0001CC 8A 83 [24] 781 mov dph,r2
|
|
0001CE 8B F0 [24] 782 mov b,r3
|
|
0001D0 E4 [12] 783 clr a
|
|
0001D1 12r00r00 [24] 784 lcall __gptrput
|
|
0001D4 0C [12] 785 inc r4
|
|
0001D5 80 E6 [24] 786 sjmp 00103$
|
|
0001D7 787 00105$:
|
|
788 ; src/main.c:108: }
|
|
0001D7 22 [24] 789 ret
|
|
790 ;------------------------------------------------------------
|
|
791 ;Allocation info for local variables in function 'handle_rx_frame'
|
|
792 ;------------------------------------------------------------
|
|
793 ;p Allocated to registers
|
|
794 ;------------------------------------------------------------
|
|
795 ; src/main.c:110: static void handle_rx_frame(void)
|
|
796 ; -----------------------------------------
|
|
797 ; function handle_rx_frame
|
|
798 ; -----------------------------------------
|
|
0001D8 799 _handle_rx_frame:
|
|
800 ; src/main.c:112: uint8_t *p = g_nrf_status.ack_payload; /* 复用 */
|
|
801 ; src/main.c:113: if (p[0] != FRAME_ID_CHANNELS) return;
|
|
0001D8 90r00r04 [24] 802 mov dptr,#(_g_nrf_status + 0x0004)
|
|
0001DB E0 [24] 803 movx a,@dptr
|
|
0001DC FF [12] 804 mov r7,a
|
|
0001DD BF A0 3F [24] 805 cjne r7,#0xa0,00103$
|
|
806 ; src/main.c:114: s_frame_seq = p[1];
|
|
0001E0 90r00r05 [24] 807 mov dptr,#(_g_nrf_status + 0x0005)
|
|
0001E3 75 F0 00 [24] 808 mov b,#0x00
|
|
0001E6 12r00r00 [24] 809 lcall __gptrget
|
|
0001E9 90r00r00 [24] 810 mov dptr,#_s_frame_seq
|
|
0001EC F0 [24] 811 movx @dptr,a
|
|
812 ; src/main.c:117: sbus_unpack_channels(&p[4], (uint16_t *)s_channels);
|
|
0001ED 75*00r00 [24] 813 mov _sbus_unpack_channels_PARM_2,#_s_channels
|
|
0001F0 75*01s00 [24] 814 mov (_sbus_unpack_channels_PARM_2 + 1),#(_s_channels >> 8)
|
|
0001F3 75*02 00 [24] 815 mov (_sbus_unpack_channels_PARM_2 + 2),#0x00
|
|
0001F6 90r00r08 [24] 816 mov dptr,#(_g_nrf_status + 0x0008)
|
|
0001F9 75 F0 00 [24] 817 mov b,#0x00
|
|
0001FC 12r00r00 [24] 818 lcall _sbus_unpack_channels
|
|
819 ; src/main.c:119: s_frame_lost = 0;
|
|
0001FF 90r00r01 [24] 820 mov dptr,#_s_frame_lost
|
|
000202 E4 [12] 821 clr a
|
|
000203 F0 [24] 822 movx @dptr,a
|
|
823 ; src/main.c:120: output_channels(s_channels);
|
|
000204 90r00r00 [24] 824 mov dptr,#_s_channels
|
|
000207 75 F0 00 [24] 825 mov b,#0x00
|
|
00020A 12r00r67 [24] 826 lcall _output_channels
|
|
827 ; src/main.c:123: make_ack_payload(p);
|
|
00020D 90r00r04 [24] 828 mov dptr,#(_g_nrf_status + 0x0004)
|
|
000210 75 F0 00 [24] 829 mov b,#0x00
|
|
000213 12r01r42 [24] 830 lcall _make_ack_payload
|
|
831 ; src/main.c:124: nrf24_write_ack_payload(p);
|
|
000216 90r00r04 [24] 832 mov dptr,#(_g_nrf_status + 0x0004)
|
|
000219 75 F0 00 [24] 833 mov b,#0x00
|
|
834 ; src/main.c:125: }
|
|
00021C 02r00r00 [24] 835 ljmp _nrf24_write_ack_payload
|
|
00021F 836 00103$:
|
|
00021F 22 [24] 837 ret
|
|
838 ;------------------------------------------------------------
|
|
839 ;Allocation info for local variables in function 'ms_tick_isr'
|
|
840 ;------------------------------------------------------------
|
|
841 ;last_rx_count Allocated with name '_ms_tick_isr_last_rx_count_65537_63'
|
|
842 ;------------------------------------------------------------
|
|
843 ; src/main.c:131: void ms_tick_isr(void) __interrupt (INT_ADDR_T1)
|
|
844 ; -----------------------------------------
|
|
845 ; function ms_tick_isr
|
|
846 ; -----------------------------------------
|
|
000220 847 _ms_tick_isr:
|
|
000220 C0*00 [24] 848 push bits
|
|
000222 C0 E0 [24] 849 push acc
|
|
000224 C0 F0 [24] 850 push b
|
|
000226 C0 82 [24] 851 push dpl
|
|
000228 C0 83 [24] 852 push dph
|
|
00022A C0 07 [24] 853 push (0+7)
|
|
00022C C0 06 [24] 854 push (0+6)
|
|
00022E C0 05 [24] 855 push (0+5)
|
|
000230 C0 04 [24] 856 push (0+4)
|
|
000232 C0 03 [24] 857 push (0+3)
|
|
000234 C0 02 [24] 858 push (0+2)
|
|
000236 C0 01 [24] 859 push (0+1)
|
|
000238 C0 00 [24] 860 push (0+0)
|
|
00023A C0 D0 [24] 861 push psw
|
|
00023C 75 D0 00 [24] 862 mov psw,#0x00
|
|
863 ; src/main.c:134: s_ms_count++;
|
|
00023F AE*1C [24] 864 mov r6,_s_ms_count
|
|
000241 AF*1D [24] 865 mov r7,(_s_ms_count + 1)
|
|
000243 74 01 [12] 866 mov a,#0x01
|
|
000245 2E [12] 867 add a,r6
|
|
000246 F5*1C [12] 868 mov _s_ms_count,a
|
|
000248 E4 [12] 869 clr a
|
|
000249 3F [12] 870 addc a,r7
|
|
00024A F5*1D [12] 871 mov (_s_ms_count + 1),a
|
|
872 ; src/main.c:138: if (g_nrf_status.rx_count != last_rx_count) {
|
|
00024C 90r00r01 [24] 873 mov dptr,#(_g_nrf_status + 0x0001)
|
|
00024F E0 [24] 874 movx a,@dptr
|
|
000250 FF [12] 875 mov r7,a
|
|
000251 B5*1E 02 [24] 876 cjne a,_ms_tick_isr_last_rx_count_65537_63,00116$
|
|
000254 80 0D [24] 877 sjmp 00102$
|
|
000256 878 00116$:
|
|
879 ; src/main.c:139: s_frame_lost = 0;
|
|
000256 90r00r01 [24] 880 mov dptr,#_s_frame_lost
|
|
000259 E4 [12] 881 clr a
|
|
00025A F0 [24] 882 movx @dptr,a
|
|
883 ; src/main.c:140: last_rx_count = g_nrf_status.rx_count;
|
|
00025B 90r00r01 [24] 884 mov dptr,#(_g_nrf_status + 0x0001)
|
|
00025E E0 [24] 885 movx a,@dptr
|
|
00025F F5*1E [12] 886 mov _ms_tick_isr_last_rx_count_65537_63,a
|
|
000261 80 06 [24] 887 sjmp 00103$
|
|
000263 888 00102$:
|
|
889 ; src/main.c:142: s_frame_lost = 1;
|
|
000263 90r00r01 [24] 890 mov dptr,#_s_frame_lost
|
|
000266 74 01 [12] 891 mov a,#0x01
|
|
000268 F0 [24] 892 movx @dptr,a
|
|
000269 893 00103$:
|
|
894 ; src/main.c:145: led_blink_tick();
|
|
000269 12r00r2B [24] 895 lcall _led_blink_tick
|
|
896 ; src/main.c:148: if (s_frame_lost) {
|
|
00026C 90r00r01 [24] 897 mov dptr,#_s_frame_lost
|
|
00026F E0 [24] 898 movx a,@dptr
|
|
000270 60 30 [24] 899 jz 00106$
|
|
900 ; src/main.c:149: pwm_set(0, 1500); /* 失联时输出中位 */
|
|
000272 75*00 DC [24] 901 mov _pwm_set_PARM_2,#0xdc
|
|
000275 75*01 05 [24] 902 mov (_pwm_set_PARM_2 + 1),#0x05
|
|
000278 75 82 00 [24] 903 mov dpl,#0x00
|
|
00027B 12r00r00 [24] 904 lcall _pwm_set
|
|
905 ; src/main.c:150: pwm_set(1, 1500);
|
|
00027E 75*00 DC [24] 906 mov _pwm_set_PARM_2,#0xdc
|
|
000281 75*01 05 [24] 907 mov (_pwm_set_PARM_2 + 1),#0x05
|
|
000284 75 82 01 [24] 908 mov dpl,#0x01
|
|
000287 12r00r00 [24] 909 lcall _pwm_set
|
|
910 ; src/main.c:151: pwm_set(2, 1500);
|
|
00028A 75*00 DC [24] 911 mov _pwm_set_PARM_2,#0xdc
|
|
00028D 75*01 05 [24] 912 mov (_pwm_set_PARM_2 + 1),#0x05
|
|
000290 75 82 02 [24] 913 mov dpl,#0x02
|
|
000293 12r00r00 [24] 914 lcall _pwm_set
|
|
915 ; src/main.c:152: pwm_set(3, 1500);
|
|
000296 75*00 DC [24] 916 mov _pwm_set_PARM_2,#0xdc
|
|
000299 75*01 05 [24] 917 mov (_pwm_set_PARM_2 + 1),#0x05
|
|
00029C 75 82 03 [24] 918 mov dpl,#0x03
|
|
00029F 12r00r00 [24] 919 lcall _pwm_set
|
|
0002A2 920 00106$:
|
|
921 ; src/main.c:154: }
|
|
0002A2 D0 D0 [24] 922 pop psw
|
|
0002A4 D0 00 [24] 923 pop (0+0)
|
|
0002A6 D0 01 [24] 924 pop (0+1)
|
|
0002A8 D0 02 [24] 925 pop (0+2)
|
|
0002AA D0 03 [24] 926 pop (0+3)
|
|
0002AC D0 04 [24] 927 pop (0+4)
|
|
0002AE D0 05 [24] 928 pop (0+5)
|
|
0002B0 D0 06 [24] 929 pop (0+6)
|
|
0002B2 D0 07 [24] 930 pop (0+7)
|
|
0002B4 D0 83 [24] 931 pop dph
|
|
0002B6 D0 82 [24] 932 pop dpl
|
|
0002B8 D0 F0 [24] 933 pop b
|
|
0002BA D0 E0 [24] 934 pop acc
|
|
0002BC D0*00 [24] 935 pop bits
|
|
0002BE 32 [24] 936 reti
|
|
937 ;------------------------------------------------------------
|
|
938 ;Allocation info for local variables in function 'tick_init'
|
|
939 ;------------------------------------------------------------
|
|
940 ; src/main.c:156: static void tick_init(void)
|
|
941 ; -----------------------------------------
|
|
942 ; function tick_init
|
|
943 ; -----------------------------------------
|
|
0002BF 944 _tick_init:
|
|
945 ; src/main.c:159: TMOD &= 0x0F;
|
|
0002BF 53 89 0F [24] 946 anl _TMOD,#0x0f
|
|
947 ; src/main.c:160: TMOD |= 0x00; /* T1 模式 0 (16 位自动重载) */
|
|
0002C2 85 89 89 [24] 948 mov _TMOD,_TMOD
|
|
949 ; src/main.c:161: AUXR &= ~0x40; /* T1x12 = 0: 12T 模式 */
|
|
0002C5 53 8E BF [24] 950 anl _AUXR,#0xbf
|
|
951 ; src/main.c:163: TL1 = 0xC0;
|
|
0002C8 75 8B C0 [24] 952 mov _TL1,#0xc0
|
|
953 ; src/main.c:164: TH1 = 0x63;
|
|
0002CB 75 8D 63 [24] 954 mov _TH1,#0x63
|
|
955 ; src/main.c:165: ET1 = 1;
|
|
956 ; assignBit
|
|
0002CE D2 AB [12] 957 setb _ET1
|
|
958 ; src/main.c:166: TR1 = 1;
|
|
959 ; assignBit
|
|
0002D0 D2 8E [12] 960 setb _TR1
|
|
961 ; src/main.c:167: }
|
|
0002D2 22 [24] 962 ret
|
|
963 ;------------------------------------------------------------
|
|
964 ;Allocation info for local variables in function 'main'
|
|
965 ;------------------------------------------------------------
|
|
966 ; src/main.c:169: int main(void)
|
|
967 ; -----------------------------------------
|
|
968 ; function main
|
|
969 ; -----------------------------------------
|
|
0002D3 970 _main:
|
|
971 ; src/main.c:171: sys_clock_init();
|
|
0002D3 12r00r00 [24] 972 lcall _sys_clock_init
|
|
973 ; src/main.c:172: delay_ms(50); /* 等电源稳定 */
|
|
0002D6 90 00 32 [24] 974 mov dptr,#0x0032
|
|
0002D9 12r00r00 [24] 975 lcall _delay_ms
|
|
976 ; src/main.c:174: led_init();
|
|
0002DC 12r00r13 [24] 977 lcall _led_init
|
|
978 ; src/main.c:177: uart1_init(UART_BAUD_CMD);
|
|
0002DF 90 C2 00 [24] 979 mov dptr,#0xc200
|
|
0002E2 75 F0 01 [24] 980 mov b,#0x01
|
|
0002E5 E4 [12] 981 clr a
|
|
0002E6 12r00r00 [24] 982 lcall _uart1_init
|
|
983 ; src/main.c:179: uart1_send_bytes("LoliRX boot\r\n", 14);
|
|
0002E9 75*00 0E [24] 984 mov _uart1_send_bytes_PARM_2,#0x0e
|
|
0002EC 90r00r05 [24] 985 mov dptr,#___str_0
|
|
0002EF 75 F0 80 [24] 986 mov b,#0x80
|
|
0002F2 12r00r00 [24] 987 lcall _uart1_send_bytes
|
|
988 ; src/main.c:181: spi_init();
|
|
0002F5 12r00r00 [24] 989 lcall _spi_init
|
|
990 ; src/main.c:182: adc_init();
|
|
0002F8 12r00r00 [24] 991 lcall _adc_init
|
|
992 ; src/main.c:185: if (nrf24_check() == NRF_OK) {
|
|
0002FB 12r00r00 [24] 993 lcall _nrf24_check
|
|
0002FE E5 82 [12] 994 mov a,dpl
|
|
000300 70 0E [24] 995 jnz 00102$
|
|
996 ; src/main.c:186: uart1_send_bytes("NRF OK\r\n", 8);
|
|
000302 75*00 08 [24] 997 mov _uart1_send_bytes_PARM_2,#0x08
|
|
000305 90r00r13 [24] 998 mov dptr,#___str_1
|
|
000308 75 F0 80 [24] 999 mov b,#0x80
|
|
00030B 12r00r00 [24] 1000 lcall _uart1_send_bytes
|
|
00030E 80 0C [24] 1001 sjmp 00103$
|
|
000310 1002 00102$:
|
|
1003 ; src/main.c:188: uart1_send_bytes("NRF FAIL\r\n", 10);
|
|
000310 75*00 0A [24] 1004 mov _uart1_send_bytes_PARM_2,#0x0a
|
|
000313 90r00r1C [24] 1005 mov dptr,#___str_2
|
|
000316 75 F0 80 [24] 1006 mov b,#0x80
|
|
000319 12r00r00 [24] 1007 lcall _uart1_send_bytes
|
|
00031C 1008 00103$:
|
|
1009 ; src/main.c:192: model_init();
|
|
00031C 12r00r00 [24] 1010 lcall _model_init
|
|
1011 ; src/main.c:195: nrf24_init();
|
|
00031F 12r00r00 [24] 1012 lcall _nrf24_init
|
|
1013 ; src/main.c:196: nrf24_set_rx_mode();
|
|
000322 12r00r00 [24] 1014 lcall _nrf24_set_rx_mode
|
|
1015 ; src/main.c:199: pwm_init();
|
|
000325 12r00r00 [24] 1016 lcall _pwm_init
|
|
1017 ; src/main.c:202: tick_init();
|
|
000328 12r02rBF [24] 1018 lcall _tick_init
|
|
1019 ; src/main.c:204: EA = 1;
|
|
1020 ; assignBit
|
|
00032B D2 AF [12] 1021 setb _EA
|
|
1022 ; src/main.c:206: uart1_send_bytes("Ready\r\n", 7);
|
|
00032D 75*00 07 [24] 1023 mov _uart1_send_bytes_PARM_2,#0x07
|
|
000330 90r00r27 [24] 1024 mov dptr,#___str_3
|
|
000333 75 F0 80 [24] 1025 mov b,#0x80
|
|
000336 12r00r00 [24] 1026 lcall _uart1_send_bytes
|
|
000339 1027 00107$:
|
|
1028 ; src/main.c:210: cmd_poll();
|
|
000339 12r00r00 [24] 1029 lcall _cmd_poll
|
|
1030 ; src/main.c:213: if (nrf24_data_ready()) {
|
|
00033C 12r00r00 [24] 1031 lcall _nrf24_data_ready
|
|
00033F E5 82 [12] 1032 mov a,dpl
|
|
000341 60 F6 [24] 1033 jz 00107$
|
|
1034 ; src/main.c:214: handle_rx_frame();
|
|
000343 12r01rD8 [24] 1035 lcall _handle_rx_frame
|
|
1036 ; src/main.c:217: }
|
|
000346 80 F1 [24] 1037 sjmp 00107$
|
|
1038 .area CSEG (CODE)
|
|
1039 .area CONST (CODE)
|
|
000000 1040 _DEFAULT_ADDR:
|
|
000000 E7 1041 .db #0xe7 ; 231
|
|
000001 E7 1042 .db #0xe7 ; 231
|
|
000002 E7 1043 .db #0xe7 ; 231
|
|
000003 E7 1044 .db #0xe7 ; 231
|
|
000004 C2 1045 .db #0xc2 ; 194
|
|
1046 .area CONST (CODE)
|
|
000005 1047 ___str_0:
|
|
000005 4C 6F 6C 69 52 58 20 1048 .ascii "LoliRX boot"
|
|
62 6F 6F 74
|
|
000010 0D 1049 .db 0x0d
|
|
000011 0A 1050 .db 0x0a
|
|
000012 00 1051 .db 0x00
|
|
1052 .area CSEG (CODE)
|
|
1053 .area CONST (CODE)
|
|
000013 1054 ___str_1:
|
|
000013 4E 52 46 20 4F 4B 1055 .ascii "NRF OK"
|
|
000019 0D 1056 .db 0x0d
|
|
00001A 0A 1057 .db 0x0a
|
|
00001B 00 1058 .db 0x00
|
|
1059 .area CSEG (CODE)
|
|
1060 .area CONST (CODE)
|
|
00001C 1061 ___str_2:
|
|
00001C 4E 52 46 20 46 41 49 1062 .ascii "NRF FAIL"
|
|
4C
|
|
000024 0D 1063 .db 0x0d
|
|
000025 0A 1064 .db 0x0a
|
|
000026 00 1065 .db 0x00
|
|
1066 .area CSEG (CODE)
|
|
1067 .area CONST (CODE)
|
|
000027 1068 ___str_3:
|
|
000027 52 65 61 64 79 1069 .ascii "Ready"
|
|
00002C 0D 1070 .db 0x0d
|
|
00002D 0A 1071 .db 0x0a
|
|
00002E 00 1072 .db 0x00
|
|
1073 .area CSEG (CODE)
|
|
1074 .area XINIT (CODE)
|
|
000000 1075 __xinit__s_frame_seq:
|
|
000000 00 1076 .db #0x00 ; 0
|
|
000001 1077 __xinit__s_frame_lost:
|
|
000001 01 1078 .db #0x01 ; 1
|
|
000002 1079 __xinit__s_led_tick_ms:
|
|
000002 00 00 1080 .byte #0x00, #0x00 ; 0
|
|
000004 1081 __xinit__s_led_state:
|
|
000004 00 1082 .db #0x00 ; 0
|
|
1083 .area CABS (ABS,CODE)
|