Files

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)