Files

681 lines
43 KiB
Plaintext

1 ;--------------------------------------------------------
2 ; File Created by SDCC : free open source ANSI-C Compiler
3 ; Version 4.2.0 #13081 (Linux)
4 ;--------------------------------------------------------
5 .module sbus
6 .optsdcc -mmcs51 --model-small
7
8 ;--------------------------------------------------------
9 ; Public variables in this module
10 ;--------------------------------------------------------
11 .globl _sbus_make_uart_frame_PARM_2
12 .globl _sbus_unpack_channels_PARM_2
13 .globl _EADC
14 .globl _ET1
15 .globl _ET0
16 .globl _ES
17 .globl _EA
18 .globl _REN
19 .globl _RI
20 .globl _TI
21 .globl _TR1
22 .globl _TF1
23 .globl _IT0
24 .globl _IE0
25 .globl _TR0
26 .globl _TF0
27 .globl _CMPCR2
28 .globl _CMPCR1
29 .globl _TA
30 .globl _IRCBAND_REG
31 .globl _IAP_TPS
32 .globl _IAP_CONTR
33 .globl _IAP_TRIG
34 .globl _IAP_CMD
35 .globl _IAP_ADDRL
36 .globl _IAP_ADDRH
37 .globl _IAP_DATA
38 .globl _WDT_CONTR
39 .globl _PCA_PWM3
40 .globl _PCA_PWM2
41 .globl _PCA_PWM1
42 .globl _PCA_PWM0
43 .globl _CCAP3L
44 .globl _CCAP2L
45 .globl _CCAP1L
46 .globl _CCAP0L
47 .globl _CCAPM3
48 .globl _CCAPM2
49 .globl _CCAPM1
50 .globl _CCAPM0
51 .globl _CMOD
52 .globl _CCON
53 .globl _ADCTIM_X
54 .globl _ADCCFG
55 .globl _ADC_RESL
56 .globl _ADC_RES
57 .globl _ADC_CONTR
58 .globl _SPDAT
59 .globl _SPCTL
60 .globl _SPSTAT
61 .globl _IP2H
62 .globl _IP2
63 .globl _IP
64 .globl _IE2
65 .globl _IE
66 .globl _BRT
67 .globl _P_SW1
68 .globl _SADEN
69 .globl _SADDR
70 .globl _S2BUF
71 .globl _S2CON
72 .globl _SBUF
73 .globl _SCON
74 .globl _TM4PS_X
75 .globl _TM3PS_X
76 .globl _TM2PS_X
77 .globl _T4T3M
78 .globl _T4L
79 .globl _T4H
80 .globl _T3L
81 .globl _T3H
82 .globl _T2L
83 .globl _T2H
84 .globl _INTCLKO
85 .globl _AUXR
86 .globl _TH1
87 .globl _TH0
88 .globl _TL1
89 .globl _TL0
90 .globl _TMOD
91 .globl _TCON
92 .globl _P_SW2
93 .globl _P5M0
94 .globl _P5M1
95 .globl _P4M0
96 .globl _P4M1
97 .globl _P3M0
98 .globl _P3M1
99 .globl _P2M0
100 .globl _P2M1
101 .globl _P1M0
102 .globl _P1M1
103 .globl _P0M0
104 .globl _P0M1
105 .globl _PSW
106 .globl _B
107 .globl _ACC
108 .globl _PCON
109 .globl _DPH
110 .globl _DPL
111 .globl _SP
112 .globl _P5
113 .globl _P4
114 .globl _P3
115 .globl _P2
116 .globl _P1
117 .globl _P0
118 .globl _sbus_unpack_channels
119 .globl _sbus_make_uart_frame
120 ;--------------------------------------------------------
121 ; special function registers
122 ;--------------------------------------------------------
123 .area RSEG (ABS,DATA)
000000 124 .org 0x0000
000080 125 _P0 = 0x0080
000090 126 _P1 = 0x0090
0000A0 127 _P2 = 0x00a0
0000B0 128 _P3 = 0x00b0
0000C0 129 _P4 = 0x00c0
0000C8 130 _P5 = 0x00c8
000081 131 _SP = 0x0081
000082 132 _DPL = 0x0082
000083 133 _DPH = 0x0083
000087 134 _PCON = 0x0087
0000E0 135 _ACC = 0x00e0
0000F0 136 _B = 0x00f0
0000D0 137 _PSW = 0x00d0
000093 138 _P0M1 = 0x0093
000094 139 _P0M0 = 0x0094
000091 140 _P1M1 = 0x0091
000092 141 _P1M0 = 0x0092
000095 142 _P2M1 = 0x0095
000096 143 _P2M0 = 0x0096
0000B1 144 _P3M1 = 0x00b1
0000B2 145 _P3M0 = 0x00b2
0000B3 146 _P4M1 = 0x00b3
0000B4 147 _P4M0 = 0x00b4
0000C9 148 _P5M1 = 0x00c9
0000CA 149 _P5M0 = 0x00ca
0000BA 150 _P_SW2 = 0x00ba
000088 151 _TCON = 0x0088
000089 152 _TMOD = 0x0089
00008A 153 _TL0 = 0x008a
00008B 154 _TL1 = 0x008b
00008C 155 _TH0 = 0x008c
00008D 156 _TH1 = 0x008d
00008E 157 _AUXR = 0x008e
00008F 158 _INTCLKO = 0x008f
0000D6 159 _T2H = 0x00d6
0000D7 160 _T2L = 0x00d7
0000D4 161 _T3H = 0x00d4
0000D5 162 _T3L = 0x00d5
0000D2 163 _T4H = 0x00d2
0000D3 164 _T4L = 0x00d3
0000D1 165 _T4T3M = 0x00d1
00FEA1 166 _TM2PS_X = 0xfea1
00FEA2 167 _TM3PS_X = 0xfea2
00FEA3 168 _TM4PS_X = 0xfea3
000098 169 _SCON = 0x0098
000099 170 _SBUF = 0x0099
00009A 171 _S2CON = 0x009a
00009B 172 _S2BUF = 0x009b
0000A9 173 _SADDR = 0x00a9
0000B9 174 _SADEN = 0x00b9
0000A2 175 _P_SW1 = 0x00a2
00009C 176 _BRT = 0x009c
0000A8 177 _IE = 0x00a8
0000AF 178 _IE2 = 0x00af
0000B8 179 _IP = 0x00b8
0000B6 180 _IP2 = 0x00b6
0000B7 181 _IP2H = 0x00b7
0000CD 182 _SPSTAT = 0x00cd
0000CE 183 _SPCTL = 0x00ce
0000CF 184 _SPDAT = 0x00cf
0000BC 185 _ADC_CONTR = 0x00bc
0000BD 186 _ADC_RES = 0x00bd
0000BE 187 _ADC_RESL = 0x00be
0000DE 188 _ADCCFG = 0x00de
00FEA8 189 _ADCTIM_X = 0xfea8
0000D8 190 _CCON = 0x00d8
0000D9 191 _CMOD = 0x00d9
0000DA 192 _CCAPM0 = 0x00da
0000DB 193 _CCAPM1 = 0x00db
0000DC 194 _CCAPM2 = 0x00dc
0000DD 195 _CCAPM3 = 0x00dd
0000EA 196 _CCAP0L = 0x00ea
0000EB 197 _CCAP1L = 0x00eb
0000EC 198 _CCAP2L = 0x00ec
0000ED 199 _CCAP3L = 0x00ed
0000F2 200 _PCA_PWM0 = 0x00f2
0000F3 201 _PCA_PWM1 = 0x00f3
0000F4 202 _PCA_PWM2 = 0x00f4
0000F5 203 _PCA_PWM3 = 0x00f5
0000C1 204 _WDT_CONTR = 0x00c1
0000C2 205 _IAP_DATA = 0x00c2
0000C3 206 _IAP_ADDRH = 0x00c3
0000C4 207 _IAP_ADDRL = 0x00c4
0000C5 208 _IAP_CMD = 0x00c5
0000C6 209 _IAP_TRIG = 0x00c6
0000C7 210 _IAP_CONTR = 0x00c7
0000F7 211 _IAP_TPS = 0x00f7
00009D 212 _IRCBAND_REG = 0x009d
0000AE 213 _TA = 0x00ae
0000E6 214 _CMPCR1 = 0x00e6
0000E7 215 _CMPCR2 = 0x00e7
216 ;--------------------------------------------------------
217 ; special function bits
218 ;--------------------------------------------------------
219 .area RSEG (ABS,DATA)
000000 220 .org 0x0000
00008D 221 _TF0 = 0x008d
00008C 222 _TR0 = 0x008c
000089 223 _IE0 = 0x0089
000088 224 _IT0 = 0x0088
00008F 225 _TF1 = 0x008f
00008E 226 _TR1 = 0x008e
000099 227 _TI = 0x0099
000098 228 _RI = 0x0098
00009C 229 _REN = 0x009c
0000AF 230 _EA = 0x00af
0000AC 231 _ES = 0x00ac
0000A9 232 _ET0 = 0x00a9
0000AB 233 _ET1 = 0x00ab
0000AD 234 _EADC = 0x00ad
235 ;--------------------------------------------------------
236 ; overlayable register banks
237 ;--------------------------------------------------------
238 .area REG_BANK_0 (REL,OVR,DATA)
000000 239 .ds 8
240 ;--------------------------------------------------------
241 ; internal ram data
242 ;--------------------------------------------------------
243 .area DSEG (DATA)
244 ;--------------------------------------------------------
245 ; overlayable items in internal ram
246 ;--------------------------------------------------------
247 .area OSEG (OVR,DATA)
000000 248 _sbus_unpack_channels_PARM_2:
000000 249 .ds 3
000003 250 _sbus_unpack_channels_in_65536_3:
000003 251 .ds 3
000006 252 _sbus_unpack_channels_bit_buf_65536_4:
000006 253 .ds 4
00000A 254 _sbus_unpack_channels_in_idx_65536_4:
00000A 255 .ds 1
00000B 256 _sbus_unpack_channels_i_65536_4:
00000B 257 .ds 1
258 .area OSEG (OVR,DATA)
000000 259 _sbus_make_uart_frame_PARM_2:
000000 260 .ds 3
000003 261 _sbus_make_uart_frame_ch_65536_8:
000003 262 .ds 3
000006 263 _sbus_make_uart_frame_bit_buf_65536_9:
000006 264 .ds 4
00000A 265 _sbus_make_uart_frame_bit_count_65536_9:
00000A 266 .ds 1
00000B 267 _sbus_make_uart_frame_out_idx_65536_9:
00000B 268 .ds 1
00000C 269 _sbus_make_uart_frame_i_65536_9:
00000C 270 .ds 1
271 ;--------------------------------------------------------
272 ; indirectly addressable internal ram data
273 ;--------------------------------------------------------
274 .area ISEG (DATA)
275 ;--------------------------------------------------------
276 ; absolute internal ram data
277 ;--------------------------------------------------------
278 .area IABS (ABS,DATA)
279 .area IABS (ABS,DATA)
280 ;--------------------------------------------------------
281 ; bit data
282 ;--------------------------------------------------------
283 .area BSEG (BIT)
284 ;--------------------------------------------------------
285 ; paged external ram data
286 ;--------------------------------------------------------
287 .area PSEG (PAG,XDATA)
288 ;--------------------------------------------------------
289 ; external ram data
290 ;--------------------------------------------------------
291 .area XSEG (XDATA)
292 ;--------------------------------------------------------
293 ; absolute external ram data
294 ;--------------------------------------------------------
295 .area XABS (ABS,XDATA)
296 ;--------------------------------------------------------
297 ; external initialized ram data
298 ;--------------------------------------------------------
299 .area XISEG (XDATA)
300 .area HOME (CODE)
301 .area GSINIT0 (CODE)
302 .area GSINIT1 (CODE)
303 .area GSINIT2 (CODE)
304 .area GSINIT3 (CODE)
305 .area GSINIT4 (CODE)
306 .area GSINIT5 (CODE)
307 .area GSINIT (CODE)
308 .area GSFINAL (CODE)
309 .area CSEG (CODE)
310 ;--------------------------------------------------------
311 ; global & static initialisations
312 ;--------------------------------------------------------
313 .area HOME (CODE)
314 .area GSINIT (CODE)
315 .area GSFINAL (CODE)
316 .area GSINIT (CODE)
317 ;--------------------------------------------------------
318 ; Home
319 ;--------------------------------------------------------
320 .area HOME (CODE)
321 .area HOME (CODE)
322 ;--------------------------------------------------------
323 ; code
324 ;--------------------------------------------------------
325 .area CSEG (CODE)
326 ;------------------------------------------------------------
327 ;Allocation info for local variables in function 'sbus_unpack_channels'
328 ;------------------------------------------------------------
329 ;ch Allocated with name '_sbus_unpack_channels_PARM_2'
330 ;in Allocated with name '_sbus_unpack_channels_in_65536_3'
331 ;bit_buf Allocated with name '_sbus_unpack_channels_bit_buf_65536_4'
332 ;bit_count Allocated to registers r0
333 ;in_idx Allocated with name '_sbus_unpack_channels_in_idx_65536_4'
334 ;i Allocated with name '_sbus_unpack_channels_i_65536_4'
335 ;------------------------------------------------------------
336 ; src/sbus.c:7: void sbus_unpack_channels(const uint8_t in[22], uint16_t ch[SBUS_CH_COUNT])
337 ; -----------------------------------------
338 ; function sbus_unpack_channels
339 ; -----------------------------------------
000000 340 _sbus_unpack_channels:
000007 341 ar7 = 0x07
000006 342 ar6 = 0x06
000005 343 ar5 = 0x05
000004 344 ar4 = 0x04
000003 345 ar3 = 0x03
000002 346 ar2 = 0x02
000001 347 ar1 = 0x01
000000 348 ar0 = 0x00
000000 85 82*03 [24] 349 mov _sbus_unpack_channels_in_65536_3,dpl
000003 85 83*04 [24] 350 mov (_sbus_unpack_channels_in_65536_3 + 1),dph
000006 85 F0*05 [24] 351 mov (_sbus_unpack_channels_in_65536_3 + 2),b
352 ; src/sbus.c:10: uint32_t bit_buf = 0;
000009 E4 [12] 353 clr a
00000A F5*06 [12] 354 mov _sbus_unpack_channels_bit_buf_65536_4,a
00000C F5*07 [12] 355 mov (_sbus_unpack_channels_bit_buf_65536_4 + 1),a
00000E F5*08 [12] 356 mov (_sbus_unpack_channels_bit_buf_65536_4 + 2),a
000010 F5*09 [12] 357 mov (_sbus_unpack_channels_bit_buf_65536_4 + 3),a
358 ; src/sbus.c:11: uint8_t bit_count = 0;
000012 78 00 [12] 359 mov r0,#0x00
360 ; src/sbus.c:16: while (bit_count < 11) {
361 ; 1-genFromRTrack replaced mov _sbus_unpack_channels_in_idx_65536_4,#0x00
000014 F5*0A [12] 362 mov _sbus_unpack_channels_in_idx_65536_4,a
363 ; 1-genFromRTrack replaced mov _sbus_unpack_channels_i_65536_4,#0x00
000016 F5*0B [12] 364 mov _sbus_unpack_channels_i_65536_4,a
000018 365 00101$:
000018 B8 0B 00 [24] 366 cjne r0,#0x0b,00118$
00001B 367 00118$:
00001B 50 46 [24] 368 jnc 00103$
369 ; src/sbus.c:17: bit_buf |= ((uint32_t)in[in_idx++]) << bit_count;
00001D E5*0A [12] 370 mov a,_sbus_unpack_channels_in_idx_65536_4
00001F 25*03 [12] 371 add a,_sbus_unpack_channels_in_65536_3
000021 FD [12] 372 mov r5,a
000022 E4 [12] 373 clr a
000023 35*04 [12] 374 addc a,(_sbus_unpack_channels_in_65536_3 + 1)
000025 FE [12] 375 mov r6,a
000026 AF*05 [24] 376 mov r7,(_sbus_unpack_channels_in_65536_3 + 2)
000028 05*0A [12] 377 inc _sbus_unpack_channels_in_idx_65536_4
00002A 8D 82 [24] 378 mov dpl,r5
00002C 8E 83 [24] 379 mov dph,r6
00002E 8F F0 [24] 380 mov b,r7
000030 12r00r00 [24] 381 lcall __gptrget
000033 FF [12] 382 mov r7,a
000034 7D 00 [12] 383 mov r5,#0x00
000036 7E 00 [12] 384 mov r6,#0x00
000038 7C 00 [12] 385 mov r4,#0x00
00003A 88 F0 [24] 386 mov b,r0
00003C 05 F0 [12] 387 inc b
00003E 80 0C [24] 388 sjmp 00121$
000040 389 00120$:
000040 EF [12] 390 mov a,r7
000041 2F [12] 391 add a,r7
000042 FF [12] 392 mov r7,a
000043 ED [12] 393 mov a,r5
000044 33 [12] 394 rlc a
000045 FD [12] 395 mov r5,a
000046 EE [12] 396 mov a,r6
000047 33 [12] 397 rlc a
000048 FE [12] 398 mov r6,a
000049 EC [12] 399 mov a,r4
00004A 33 [12] 400 rlc a
00004B FC [12] 401 mov r4,a
00004C 402 00121$:
00004C D5 F0 F1 [24] 403 djnz b,00120$
00004F EF [12] 404 mov a,r7
000050 42*06 [12] 405 orl _sbus_unpack_channels_bit_buf_65536_4,a
000052 ED [12] 406 mov a,r5
000053 42*07 [12] 407 orl (_sbus_unpack_channels_bit_buf_65536_4 + 1),a
000055 EE [12] 408 mov a,r6
000056 42*08 [12] 409 orl (_sbus_unpack_channels_bit_buf_65536_4 + 2),a
000058 EC [12] 410 mov a,r4
000059 42*09 [12] 411 orl (_sbus_unpack_channels_bit_buf_65536_4 + 3),a
412 ; src/sbus.c:18: bit_count += 8;
00005B 88 07 [24] 413 mov ar7,r0
00005D 74 08 [12] 414 mov a,#0x08
00005F 2F [12] 415 add a,r7
000060 F8 [12] 416 mov r0,a
000061 80 B5 [24] 417 sjmp 00101$
000063 418 00103$:
419 ; src/sbus.c:20: ch[i] = (uint16_t)(bit_buf & 0x07FF);
000063 E5*0B [12] 420 mov a,_sbus_unpack_channels_i_65536_4
000065 75 F0 02 [24] 421 mov b,#0x02
000068 A4 [48] 422 mul ab
000069 25*00 [12] 423 add a,_sbus_unpack_channels_PARM_2
00006B FD [12] 424 mov r5,a
00006C E5*01 [12] 425 mov a,(_sbus_unpack_channels_PARM_2 + 1)
00006E 35 F0 [12] 426 addc a,b
000070 FE [12] 427 mov r6,a
000071 AF*02 [24] 428 mov r7,(_sbus_unpack_channels_PARM_2 + 2)
000073 A9*06 [24] 429 mov r1,_sbus_unpack_channels_bit_buf_65536_4
000075 AA*07 [24] 430 mov r2,(_sbus_unpack_channels_bit_buf_65536_4 + 1)
000077 53 02 07 [24] 431 anl ar2,#0x07
00007A 8D 82 [24] 432 mov dpl,r5
00007C 8E 83 [24] 433 mov dph,r6
00007E 8F F0 [24] 434 mov b,r7
000080 E9 [12] 435 mov a,r1
000081 12r00r00 [24] 436 lcall __gptrput
000084 A3 [24] 437 inc dptr
000085 EA [12] 438 mov a,r2
000086 12r00r00 [24] 439 lcall __gptrput
440 ; src/sbus.c:21: bit_buf >>= 11;
000089 85*07*06 [24] 441 mov _sbus_unpack_channels_bit_buf_65536_4,(_sbus_unpack_channels_bit_buf_65536_4 + 1)
00008C E5*08 [12] 442 mov a,(_sbus_unpack_channels_bit_buf_65536_4 + 2)
00008E C4 [12] 443 swap a
00008F 23 [12] 444 rl a
000090 C5*06 [12] 445 xch a,_sbus_unpack_channels_bit_buf_65536_4
000092 C4 [12] 446 swap a
000093 23 [12] 447 rl a
000094 54 1F [12] 448 anl a,#0x1f
000096 65*06 [12] 449 xrl a,_sbus_unpack_channels_bit_buf_65536_4
000098 C5*06 [12] 450 xch a,_sbus_unpack_channels_bit_buf_65536_4
00009A 54 1F [12] 451 anl a,#0x1f
00009C C5*06 [12] 452 xch a,_sbus_unpack_channels_bit_buf_65536_4
00009E 65*06 [12] 453 xrl a,_sbus_unpack_channels_bit_buf_65536_4
0000A0 C5*06 [12] 454 xch a,_sbus_unpack_channels_bit_buf_65536_4
0000A2 F5*07 [12] 455 mov (_sbus_unpack_channels_bit_buf_65536_4 + 1),a
0000A4 E5*09 [12] 456 mov a,(_sbus_unpack_channels_bit_buf_65536_4 + 3)
0000A6 C4 [12] 457 swap a
0000A7 23 [12] 458 rl a
0000A8 54 E0 [12] 459 anl a,#0xe0
0000AA 45*07 [12] 460 orl a,(_sbus_unpack_channels_bit_buf_65536_4 + 1)
0000AC F5*07 [12] 461 mov (_sbus_unpack_channels_bit_buf_65536_4 + 1),a
0000AE E5*09 [12] 462 mov a,(_sbus_unpack_channels_bit_buf_65536_4 + 3)
0000B0 C4 [12] 463 swap a
0000B1 23 [12] 464 rl a
0000B2 54 1F [12] 465 anl a,#0x1f
0000B4 F5*08 [12] 466 mov (_sbus_unpack_channels_bit_buf_65536_4 + 2),a
0000B6 75*09 00 [24] 467 mov (_sbus_unpack_channels_bit_buf_65536_4 + 3),#0x00
468 ; src/sbus.c:22: bit_count -= 11;
0000B9 88 07 [24] 469 mov ar7,r0
0000BB EF [12] 470 mov a,r7
0000BC 24 F5 [12] 471 add a,#0xf5
0000BE F8 [12] 472 mov r0,a
473 ; src/sbus.c:15: for (i = 0; i < SBUS_CH_COUNT; i++) {
0000BF 05*0B [12] 474 inc _sbus_unpack_channels_i_65536_4
0000C1 74 F0 [12] 475 mov a,#0x100 - 0x10
0000C3 25*0B [12] 476 add a,_sbus_unpack_channels_i_65536_4
0000C5 40 03 [24] 477 jc 00122$
0000C7 02r00r18 [24] 478 ljmp 00101$
0000CA 479 00122$:
480 ; src/sbus.c:24: }
0000CA 22 [24] 481 ret
482 ;------------------------------------------------------------
483 ;Allocation info for local variables in function 'sbus_make_uart_frame'
484 ;------------------------------------------------------------
485 ;out Allocated with name '_sbus_make_uart_frame_PARM_2'
486 ;ch Allocated with name '_sbus_make_uart_frame_ch_65536_8'
487 ;bit_buf Allocated with name '_sbus_make_uart_frame_bit_buf_65536_9'
488 ;bit_count Allocated with name '_sbus_make_uart_frame_bit_count_65536_9'
489 ;out_idx Allocated with name '_sbus_make_uart_frame_out_idx_65536_9'
490 ;i Allocated with name '_sbus_make_uart_frame_i_65536_9'
491 ;------------------------------------------------------------
492 ; src/sbus.c:26: void sbus_make_uart_frame(const uint16_t ch[SBUS_CH_COUNT], uint8_t out[25])
493 ; -----------------------------------------
494 ; function sbus_make_uart_frame
495 ; -----------------------------------------
0000CB 496 _sbus_make_uart_frame:
0000CB 85 82*03 [24] 497 mov _sbus_make_uart_frame_ch_65536_8,dpl
0000CE 85 83*04 [24] 498 mov (_sbus_make_uart_frame_ch_65536_8 + 1),dph
0000D1 85 F0*05 [24] 499 mov (_sbus_make_uart_frame_ch_65536_8 + 2),b
500 ; src/sbus.c:28: uint32_t bit_buf = 0;
0000D4 E4 [12] 501 clr a
0000D5 F5*06 [12] 502 mov _sbus_make_uart_frame_bit_buf_65536_9,a
0000D7 F5*07 [12] 503 mov (_sbus_make_uart_frame_bit_buf_65536_9 + 1),a
0000D9 F5*08 [12] 504 mov (_sbus_make_uart_frame_bit_buf_65536_9 + 2),a
0000DB F5*09 [12] 505 mov (_sbus_make_uart_frame_bit_buf_65536_9 + 3),a
506 ; src/sbus.c:29: uint8_t bit_count = 0;
507 ; 1-genFromRTrack replaced mov _sbus_make_uart_frame_bit_count_65536_9,#0x00
0000DD F5*0A [12] 508 mov _sbus_make_uart_frame_bit_count_65536_9,a
509 ; src/sbus.c:30: uint8_t out_idx = 0;
510 ; 1-genFromRTrack replaced mov _sbus_make_uart_frame_out_idx_65536_9,#0x00
0000DF F5*0B [12] 511 mov _sbus_make_uart_frame_out_idx_65536_9,a
512 ; src/sbus.c:33: out[0] = 0x0F; /* start byte */
0000E1 AD*00 [24] 513 mov r5,_sbus_make_uart_frame_PARM_2
0000E3 AE*01 [24] 514 mov r6,(_sbus_make_uart_frame_PARM_2 + 1)
0000E5 AF*02 [24] 515 mov r7,(_sbus_make_uart_frame_PARM_2 + 2)
0000E7 8D 82 [24] 516 mov dpl,r5
0000E9 8E 83 [24] 517 mov dph,r6
0000EB 8F F0 [24] 518 mov b,r7
0000ED 74 0F [12] 519 mov a,#0x0f
0000EF 12r00r00 [24] 520 lcall __gptrput
521 ; src/sbus.c:35: for (i = 0; i < SBUS_CH_COUNT; i++) {
0000F2 75*0C 00 [24] 522 mov _sbus_make_uart_frame_i_65536_9,#0x00
0000F5 523 00107$:
524 ; src/sbus.c:36: bit_buf |= ((uint32_t)(ch[i] & 0x07FF)) << bit_count;
0000F5 E5*0C [12] 525 mov a,_sbus_make_uart_frame_i_65536_9
0000F7 75 F0 02 [24] 526 mov b,#0x02
0000FA A4 [48] 527 mul ab
0000FB 25*03 [12] 528 add a,_sbus_make_uart_frame_ch_65536_8
0000FD F9 [12] 529 mov r1,a
0000FE E5*04 [12] 530 mov a,(_sbus_make_uart_frame_ch_65536_8 + 1)
000100 35 F0 [12] 531 addc a,b
000102 FA [12] 532 mov r2,a
000103 AB*05 [24] 533 mov r3,(_sbus_make_uart_frame_ch_65536_8 + 2)
000105 89 82 [24] 534 mov dpl,r1
000107 8A 83 [24] 535 mov dph,r2
000109 8B F0 [24] 536 mov b,r3
00010B 12r00r00 [24] 537 lcall __gptrget
00010E F9 [12] 538 mov r1,a
00010F A3 [24] 539 inc dptr
000110 12r00r00 [24] 540 lcall __gptrget
000113 FA [12] 541 mov r2,a
000114 53 02 07 [24] 542 anl ar2,#0x07
000117 7B 00 [12] 543 mov r3,#0x00
000119 7C 00 [12] 544 mov r4,#0x00
00011B 85*0A F0 [24] 545 mov b,_sbus_make_uart_frame_bit_count_65536_9
00011E 05 F0 [12] 546 inc b
000120 80 0C [24] 547 sjmp 00134$
000122 548 00133$:
000122 E9 [12] 549 mov a,r1
000123 29 [12] 550 add a,r1
000124 F9 [12] 551 mov r1,a
000125 EA [12] 552 mov a,r2
000126 33 [12] 553 rlc a
000127 FA [12] 554 mov r2,a
000128 EB [12] 555 mov a,r3
000129 33 [12] 556 rlc a
00012A FB [12] 557 mov r3,a
00012B EC [12] 558 mov a,r4
00012C 33 [12] 559 rlc a
00012D FC [12] 560 mov r4,a
00012E 561 00134$:
00012E D5 F0 F1 [24] 562 djnz b,00133$
000131 E9 [12] 563 mov a,r1
000132 42*06 [12] 564 orl _sbus_make_uart_frame_bit_buf_65536_9,a
000134 EA [12] 565 mov a,r2
000135 42*07 [12] 566 orl (_sbus_make_uart_frame_bit_buf_65536_9 + 1),a
000137 EB [12] 567 mov a,r3
000138 42*08 [12] 568 orl (_sbus_make_uart_frame_bit_buf_65536_9 + 2),a
00013A EC [12] 569 mov a,r4
00013B 42*09 [12] 570 orl (_sbus_make_uart_frame_bit_buf_65536_9 + 3),a
571 ; src/sbus.c:37: bit_count += 11;
00013D AC*0A [24] 572 mov r4,_sbus_make_uart_frame_bit_count_65536_9
00013F 74 0B [12] 573 mov a,#0x0b
000141 2C [12] 574 add a,r4
000142 F5*0A [12] 575 mov _sbus_make_uart_frame_bit_count_65536_9,a
576 ; src/sbus.c:38: while (bit_count >= 8) {
000144 AC*0B [24] 577 mov r4,_sbus_make_uart_frame_out_idx_65536_9
000146 578 00101$:
000146 74 F8 [12] 579 mov a,#0x100 - 0x08
000148 25*0A [12] 580 add a,_sbus_make_uart_frame_bit_count_65536_9
00014A 50 33 [24] 581 jnc 00116$
582 ; src/sbus.c:39: out[1 + out_idx++] = (uint8_t)(bit_buf & 0xFF);
00014C 8C 02 [24] 583 mov ar2,r4
00014E 7B 00 [12] 584 mov r3,#0x00
000150 0C [12] 585 inc r4
000151 0A [12] 586 inc r2
000152 BA 00 01 [24] 587 cjne r2,#0x00,00136$
000155 0B [12] 588 inc r3
000156 589 00136$:
000156 EA [12] 590 mov a,r2
000157 2D [12] 591 add a,r5
000158 FA [12] 592 mov r2,a
000159 EB [12] 593 mov a,r3
00015A 3E [12] 594 addc a,r6
00015B F9 [12] 595 mov r1,a
00015C 8F 03 [24] 596 mov ar3,r7
00015E A8*06 [24] 597 mov r0,_sbus_make_uart_frame_bit_buf_65536_9
000160 8A 82 [24] 598 mov dpl,r2
000162 89 83 [24] 599 mov dph,r1
000164 8B F0 [24] 600 mov b,r3
000166 E8 [12] 601 mov a,r0
000167 12r00r00 [24] 602 lcall __gptrput
603 ; src/sbus.c:40: bit_buf >>= 8;
00016A 85*07*06 [24] 604 mov _sbus_make_uart_frame_bit_buf_65536_9,(_sbus_make_uart_frame_bit_buf_65536_9 + 1)
00016D 85*08*07 [24] 605 mov (_sbus_make_uart_frame_bit_buf_65536_9 + 1),(_sbus_make_uart_frame_bit_buf_65536_9 + 2)
000170 85*09*08 [24] 606 mov (_sbus_make_uart_frame_bit_buf_65536_9 + 2),(_sbus_make_uart_frame_bit_buf_65536_9 + 3)
000173 75*09 00 [24] 607 mov (_sbus_make_uart_frame_bit_buf_65536_9 + 3),#0x00
608 ; src/sbus.c:41: bit_count -= 8;
000176 E5*0A [12] 609 mov a,_sbus_make_uart_frame_bit_count_65536_9
000178 F8 [12] 610 mov r0,a
000179 24 F8 [12] 611 add a,#0xf8
00017B F5*0A [12] 612 mov _sbus_make_uart_frame_bit_count_65536_9,a
00017D 80 C7 [24] 613 sjmp 00101$
00017F 614 00116$:
00017F 8C*0B [24] 615 mov _sbus_make_uart_frame_out_idx_65536_9,r4
616 ; src/sbus.c:35: for (i = 0; i < SBUS_CH_COUNT; i++) {
000181 05*0C [12] 617 inc _sbus_make_uart_frame_i_65536_9
000183 74 F0 [12] 618 mov a,#0x100 - 0x10
000185 25*0C [12] 619 add a,_sbus_make_uart_frame_i_65536_9
000187 40 03 [24] 620 jc 00137$
000189 02r00rF5 [24] 621 ljmp 00107$
00018C 622 00137$:
623 ; src/sbus.c:45: if (bit_count > 0) out[1 + out_idx++] = (uint8_t)(bit_buf & 0xFF);
00018C E5*0A [12] 624 mov a,_sbus_make_uart_frame_bit_count_65536_9
00018E 60 1B [24] 625 jz 00106$
000190 7B 00 [12] 626 mov r3,#0x00
000192 0C [12] 627 inc r4
000193 BC 00 01 [24] 628 cjne r4,#0x00,00139$
000196 0B [12] 629 inc r3
000197 630 00139$:
000197 EC [12] 631 mov a,r4
000198 2D [12] 632 add a,r5
000199 FC [12] 633 mov r4,a
00019A EB [12] 634 mov a,r3
00019B 3E [12] 635 addc a,r6
00019C FB [12] 636 mov r3,a
00019D 8F 02 [24] 637 mov ar2,r7
00019F A9*06 [24] 638 mov r1,_sbus_make_uart_frame_bit_buf_65536_9
0001A1 8C 82 [24] 639 mov dpl,r4
0001A3 8B 83 [24] 640 mov dph,r3
0001A5 8A F0 [24] 641 mov b,r2
0001A7 E9 [12] 642 mov a,r1
0001A8 12r00r00 [24] 643 lcall __gptrput
0001AB 644 00106$:
645 ; src/sbus.c:47: out[23] = 0x00; /* flags (no failsafe) */
0001AB 74 17 [12] 646 mov a,#0x17
0001AD 2D [12] 647 add a,r5
0001AE FA [12] 648 mov r2,a
0001AF E4 [12] 649 clr a
0001B0 3E [12] 650 addc a,r6
0001B1 FB [12] 651 mov r3,a
0001B2 8F 04 [24] 652 mov ar4,r7
0001B4 8A 82 [24] 653 mov dpl,r2
0001B6 8B 83 [24] 654 mov dph,r3
0001B8 8C F0 [24] 655 mov b,r4
0001BA E4 [12] 656 clr a
0001BB 12r00r00 [24] 657 lcall __gptrput
658 ; src/sbus.c:48: out[24] = 0x00; /* end */
0001BE 74 18 [12] 659 mov a,#0x18
0001C0 2D [12] 660 add a,r5
0001C1 FD [12] 661 mov r5,a
0001C2 E4 [12] 662 clr a
0001C3 3E [12] 663 addc a,r6
0001C4 FE [12] 664 mov r6,a
0001C5 8D 82 [24] 665 mov dpl,r5
0001C7 8E 83 [24] 666 mov dph,r6
0001C9 8F F0 [24] 667 mov b,r7
0001CB E4 [12] 668 clr a
669 ; src/sbus.c:49: }
0001CC 02r00r00 [24] 670 ljmp __gptrput
671 .area CSEG (CODE)
672 .area CONST (CODE)
000000 673 _DEFAULT_ADDR:
000000 E7 674 .db #0xe7 ; 231
000001 E7 675 .db #0xe7 ; 231
000002 E7 676 .db #0xe7 ; 231
000003 E7 677 .db #0xe7 ; 231
000004 C2 678 .db #0xc2 ; 194
679 .area XINIT (CODE)
680 .area CABS (ABS,CODE)