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)