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)