1 ;-------------------------------------------------------- 2 ; File Created by SDCC : FreeWare ANSI-C Compiler 3 ; Version 2.4.0 Wed Mar 31 11:35:44 2004 4 5 ;-------------------------------------------------------- 6 .module firm 7 .optsdcc -mmcs51 --model-small 8 9 ;-------------------------------------------------------- 10 ; Public variables in this module 11 ;-------------------------------------------------------- 12 .globl _main 13 .globl __vtable 14 .globl __vtol 15 .globl __firm_regulate 16 .globl __volt 17 .globl __adc 18 .globl __power_fail 19 .globl __resistor 20 .globl __buf 21 .globl _USBPAIR 22 .globl _ISOCTL 23 .globl _AUTODATA 24 .globl _AUTOPTRL 25 .globl _AUTOPTRH 26 .globl _OUT07VAL 27 .globl _IN07VAL 28 .globl _I2DAT 29 .globl _I2CS 30 .globl _SETUPDAT 31 .globl _SUDPTRL 32 .globl _SUDPTRH 33 .globl _TOGCTL 34 .globl _USBCS 35 .globl _USBBAV 36 .globl _USBIEN 37 .globl _USBIRQ 38 .globl _OUT07IEN 39 .globl _IN07IEN 40 .globl _OUT07IRQ 41 .globl _IN07IRQ 42 .globl _PORTCCFG 43 .globl _PORTBCFG 44 .globl _PORTACFG 45 .globl _PINSC 46 .globl _OUTC 47 .globl _OEC 48 .globl _OUTB 49 .globl _OEB 50 .globl _OUTA 51 .globl _OEA 52 .globl _OUT6CS 53 .globl _OUT6BC 54 .globl _OUT6BUF 55 .globl _IN6CS 56 .globl _IN6BC 57 .globl _IN6BUF 58 .globl _OUT5CS 59 .globl _OUT5BC 60 .globl _OUT5BUF 61 .globl _IN5CS 62 .globl _IN5BC 63 .globl _IN5BUF 64 .globl _OUT4CS 65 .globl _OUT4BC 66 .globl _OUT4BUF 67 .globl _IN4CS 68 .globl _IN4BC 69 .globl _IN4BUF 70 .globl _OUT3BUF 71 .globl _OUT3CS 72 .globl _OUT3BC 73 .globl _IN3CS 74 .globl _IN3BC 75 .globl _IN3BUF 76 .globl _OUT2BUF 77 .globl _OUT2CS 78 .globl _OUT2BC 79 .globl _IN2CS 80 .globl _IN2BC 81 .globl _IN2BUF 82 .globl _OUT1BC 83 .globl _OUT1CS 84 .globl _OUT1BUF 85 .globl _IN1BC 86 .globl _IN1BUF 87 .globl _IN1CS 88 .globl _OUT0BC 89 .globl _OUT0BUF 90 .globl _IN0BC 91 .globl _IN0BUF 92 .globl _EP0CS 93 ;-------------------------------------------------------- 94 ; special function registers 95 ;-------------------------------------------------------- 0080 96 _P0 = 0x0080 0081 97 _SP = 0x0081 0082 98 _DPL = 0x0082 0083 99 _DPH = 0x0083 0087 100 _PCON = 0x0087 0088 101 _TCON = 0x0088 0089 102 _TMOD = 0x0089 008A 103 _TL0 = 0x008a 008B 104 _TL1 = 0x008b 008C 105 _TH0 = 0x008c 008D 106 _TH1 = 0x008d 0090 107 _P1 = 0x0090 0098 108 _SCON = 0x0098 0099 109 _SBUF = 0x0099 00A0 110 _P2 = 0x00a0 00A8 111 _IE = 0x00a8 00B0 112 _P3 = 0x00b0 00B8 113 _IP = 0x00b8 00D0 114 _PSW = 0x00d0 00E0 115 _ACC = 0x00e0 00F0 116 _B = 0x00f0 0091 117 _EXIF = 0x0091 00E8 118 _EIE = 0x00e8 0098 119 _SCON0 = 0x0098 00C0 120 _SCON1 = 0x00c0 0099 121 _SBUF0 = 0x0099 00C1 122 _SBUF1 = 0x00c1 008E 123 _CKCON = 0x008e 00C8 124 _T2CON = 0x00c8 00CA 125 _RCAP2L = 0x00ca 00CB 126 _RCAP2H = 0x00cb 00CC 127 _TL2 = 0x00cc 00CD 128 _TH2 = 0x00cd 129 ;-------------------------------------------------------- 130 ; special function bits 131 ;-------------------------------------------------------- 0080 132 _P0_0 = 0x0080 0081 133 _P0_1 = 0x0081 0082 134 _P0_2 = 0x0082 0083 135 _P0_3 = 0x0083 0084 136 _P0_4 = 0x0084 0085 137 _P0_5 = 0x0085 0086 138 _P0_6 = 0x0086 0087 139 _P0_7 = 0x0087 0088 140 _IT0 = 0x0088 0089 141 _IE0 = 0x0089 008A 142 _IT1 = 0x008a 008B 143 _IE1 = 0x008b 008C 144 _TR0 = 0x008c 008D 145 _TF0 = 0x008d 008E 146 _TR1 = 0x008e 008F 147 _TF1 = 0x008f 0090 148 _P1_0 = 0x0090 0091 149 _P1_1 = 0x0091 0092 150 _P1_2 = 0x0092 0093 151 _P1_3 = 0x0093 0094 152 _P1_4 = 0x0094 0095 153 _P1_5 = 0x0095 0096 154 _P1_6 = 0x0096 0097 155 _P1_7 = 0x0097 0098 156 _RI = 0x0098 0099 157 _TI = 0x0099 009A 158 _RB8 = 0x009a 009B 159 _TB8 = 0x009b 009C 160 _REN = 0x009c 009D 161 _SM2 = 0x009d 009E 162 _SM1 = 0x009e 009F 163 _SM0 = 0x009f 00A0 164 _P2_0 = 0x00a0 00A1 165 _P2_1 = 0x00a1 00A2 166 _P2_2 = 0x00a2 00A3 167 _P2_3 = 0x00a3 00A4 168 _P2_4 = 0x00a4 00A5 169 _P2_5 = 0x00a5 00A6 170 _P2_6 = 0x00a6 00A7 171 _P2_7 = 0x00a7 00A8 172 _EX0 = 0x00a8 00A9 173 _ET0 = 0x00a9 00AA 174 _EX1 = 0x00aa 00AB 175 _ET1 = 0x00ab 00AC 176 _ES = 0x00ac 00AF 177 _EA = 0x00af 00B0 178 _P3_0 = 0x00b0 00B1 179 _P3_1 = 0x00b1 00B2 180 _P3_2 = 0x00b2 00B3 181 _P3_3 = 0x00b3 00B4 182 _P3_4 = 0x00b4 00B5 183 _P3_5 = 0x00b5 00B6 184 _P3_6 = 0x00b6 00B7 185 _P3_7 = 0x00b7 00B0 186 _RXD = 0x00b0 00B1 187 _TXD = 0x00b1 00B2 188 _INT0 = 0x00b2 00B3 189 _INT1 = 0x00b3 00B4 190 _T0 = 0x00b4 00B5 191 _T1 = 0x00b5 00B6 192 _WR = 0x00b6 00B7 193 _RD = 0x00b7 00B8 194 _PX0 = 0x00b8 00B9 195 _PT0 = 0x00b9 00BA 196 _PX1 = 0x00ba 00BB 197 _PT1 = 0x00bb 00BC 198 _PS = 0x00bc 00D0 199 _P = 0x00d0 00D1 200 _F1 = 0x00d1 00D2 201 _OV = 0x00d2 00D3 202 _RS0 = 0x00d3 00D4 203 _RS1 = 0x00d4 00D5 204 _F0 = 0x00d5 00D6 205 _AC = 0x00d6 00D7 206 _CY = 0x00d7 00E8 207 _EUSB = 0x00e8 00AC 208 _ES0 = 0x00ac 00AE 209 _ES1 = 0x00ae 0098 210 _RI_0 = 0x0098 0099 211 _TI_0 = 0x0099 00C0 212 _RI_1 = 0x00c0 00C1 213 _TI_1 = 0x00c1 00CA 214 _TR2 = 0x00ca 00CF 215 _TF2 = 0x00cf 00AD 216 _ET2 = 0x00ad 217 ;-------------------------------------------------------- 218 ; overlayable register banks 219 ;-------------------------------------------------------- 220 .area REG_BANK_0 (REL,OVR,DATA) 0000 221 .ds 8 222 .area REG_BANK_1 (REL,OVR,DATA) 0000 223 .ds 8 224 ;-------------------------------------------------------- 225 ; internal ram data 226 ;-------------------------------------------------------- 227 .area DSEG (DATA) 228 ;-------------------------------------------------------- 229 ; overlayable items in internal ram 230 ;-------------------------------------------------------- 231 .area OSEG (OVR,DATA) 232 ;-------------------------------------------------------- 233 ; Stack segment in internal ram 234 ;-------------------------------------------------------- 235 .area SSEG (DATA) 0000 236 __start__stack: 0000 237 .ds 1 238 239 ;-------------------------------------------------------- 240 ; indirectly addressable internal ram data 241 ;-------------------------------------------------------- 242 .area ISEG (DATA) 243 ;-------------------------------------------------------- 244 ; bit data 245 ;-------------------------------------------------------- 246 .area BSEG (BIT) 247 ;-------------------------------------------------------- 248 ; external ram data 249 ;-------------------------------------------------------- 250 .area XSEG (XDATA) 7FB4 251 _EP0CS = 0x7fb4 7F00 252 _IN0BUF = 0x7f00 7FB5 253 _IN0BC = 0x7fb5 7EC0 254 _OUT0BUF = 0x7ec0 7FC5 255 _OUT0BC = 0x7fc5 7FB6 256 _IN1CS = 0x7fb6 7E80 257 _IN1BUF = 0x7e80 7FB7 258 _IN1BC = 0x7fb7 7E40 259 _OUT1BUF = 0x7e40 7FC6 260 _OUT1CS = 0x7fc6 7FC7 261 _OUT1BC = 0x7fc7 7E00 262 _IN2BUF = 0x7e00 7FB9 263 _IN2BC = 0x7fb9 7FB8 264 _IN2CS = 0x7fb8 7FC9 265 _OUT2BC = 0x7fc9 7FC8 266 _OUT2CS = 0x7fc8 7DC0 267 _OUT2BUF = 0x7dc0 7D80 268 _IN3BUF = 0x7d80 7FBB 269 _IN3BC = 0x7fbb 7FBA 270 _IN3CS = 0x7fba 7FCB 271 _OUT3BC = 0x7fcb 7FCA 272 _OUT3CS = 0x7fca 7D40 273 _OUT3BUF = 0x7d40 7D00 274 _IN4BUF = 0x7d00 7FBD 275 _IN4BC = 0x7fbd 7FBC 276 _IN4CS = 0x7fbc 7CC0 277 _OUT4BUF = 0x7cc0 7FCD 278 _OUT4BC = 0x7fcd 7FCC 279 _OUT4CS = 0x7fcc 7C80 280 _IN5BUF = 0x7c80 7FBF 281 _IN5BC = 0x7fbf 7FBE 282 _IN5CS = 0x7fbe 7C40 283 _OUT5BUF = 0x7c40 7FCF 284 _OUT5BC = 0x7fcf 7FCE 285 _OUT5CS = 0x7fce 7C00 286 _IN6BUF = 0x7c00 7FC1 287 _IN6BC = 0x7fc1 7FC0 288 _IN6CS = 0x7fc0 7BC0 289 _OUT6BUF = 0x7bc0 7FD1 290 _OUT6BC = 0x7fd1 7FD0 291 _OUT6CS = 0x7fd0 7F9C 292 _OEA = 0x7f9c 7F96 293 _OUTA = 0x7f96 7F9D 294 _OEB = 0x7f9d 7F97 295 _OUTB = 0x7f97 7F9E 296 _OEC = 0x7f9e 7F98 297 _OUTC = 0x7f98 7F9B 298 _PINSC = 0x7f9b 7F93 299 _PORTACFG = 0x7f93 7F94 300 _PORTBCFG = 0x7f94 7F95 301 _PORTCCFG = 0x7f95 7FA9 302 _IN07IRQ = 0x7fa9 7FAA 303 _OUT07IRQ = 0x7faa 7FAC 304 _IN07IEN = 0x7fac 7FAD 305 _OUT07IEN = 0x7fad 7FAB 306 _USBIRQ = 0x7fab 7FAE 307 _USBIEN = 0x7fae 7FAF 308 _USBBAV = 0x7faf 7FD6 309 _USBCS = 0x7fd6 7FD7 310 _TOGCTL = 0x7fd7 7FD4 311 _SUDPTRH = 0x7fd4 7FD5 312 _SUDPTRL = 0x7fd5 7FE8 313 _SETUPDAT = 0x7fe8 7FA5 314 _I2CS = 0x7fa5 7FA6 315 _I2DAT = 0x7fa6 7FDE 316 _IN07VAL = 0x7fde 7FDF 317 _OUT07VAL = 0x7fdf 7FE3 318 _AUTOPTRH = 0x7fe3 7FE4 319 _AUTOPTRL = 0x7fe4 7FE5 320 _AUTODATA = 0x7fe5 7FA1 321 _ISOCTL = 0x7fa1 7FDD 322 _USBPAIR = 0x7fdd 1C04 323 __buf = 0x1c04 1C1C 324 __resistor = 0x1c1c 1C24 325 __power_fail = 0x1c24 1C25 326 __adc = 0x1c25 1C55 327 __volt = 0x1c55 1C65 328 __firm_regulate = 0x1c65 1C66 329 __vtol = 0x1c66 2000 330 __vtable = 0x2000 331 ;-------------------------------------------------------- 332 ; external initialized ram data 333 ;-------------------------------------------------------- 334 .area XISEG (XDATA) 335 ;-------------------------------------------------------- 336 ; interrupt vector 337 ;-------------------------------------------------------- 338 .area CSEG (CODE) 0000 339 __interrupt_vect: 0000 02s00r00 340 ljmp __sdcc_gsinit_startup 0003 32 341 reti 0004 342 .ds 7 000B 32 343 reti 000C 344 .ds 7 0013 32 345 reti 0014 346 .ds 7 001B 32 347 reti 001C 348 .ds 7 0023 32 349 reti 0024 350 .ds 7 002B 32 351 reti 002C 352 .ds 7 0033 32 353 reti 0034 354 .ds 7 003B 32 355 reti 003C 356 .ds 7 0043 02s00r00 357 ljmp _usb_isr 358 ;-------------------------------------------------------- 359 ; global & static initialisations 360 ;-------------------------------------------------------- 361 .area GSINIT (CODE) 362 .area GSFINAL (CODE) 363 .area GSINIT (CODE) 0000 364 __sdcc_gsinit_startup: 0000 75 81rFF 365 mov sp,#__start__stack - 1 0003 12s00r00 366 lcall __sdcc_external_startup 0006 E5 82 367 mov a,dpl 0008 60 03 368 jz __sdcc_init_data 000A 02s00r46 369 ljmp __sdcc_program_startup 000D 370 __sdcc_init_data: 371 ; _mcs51_genXINIT() start 000D 79r00 372 mov r1,#l_XINIT 000F E9 373 mov a,r1 0010 44s00 374 orl a,#(l_XINIT >> 8) 0012 60 1B 375 jz 00003$ 0014 7As00 376 mov r2,#((l_XINIT+255) >> 8) 0016 90s00r00 377 mov dptr,#s_XINIT 0019 78r00 378 mov r0,#s_XISEG 001B 75 A0s00 379 mov p2,#(s_XISEG >> 8) 001E E4 380 00001$: clr a 001F 93 381 movc a,@a+dptr 0020 F2 382 movx @r0,a 0021 A3 383 inc dptr 0022 08 384 inc r0 0023 B8 00 02 385 cjne r0,#0,00002$ 0026 05 A0 386 inc p2 0028 D9 F4 387 00002$: djnz r1,00001$ 002A DA F2 388 djnz r2,00001$ 002C 75 A0 FF 389 mov p2,#0xFF 002F 390 00003$: 391 ; _mcs51_genXINIT() end 392 ; _mcs51_genRAMCLEAR() start 002F 78r00 393 mov r0,#l_XSEG 0031 E8 394 mov a,r0 0032 44s00 395 orl a,#(l_XSEG >> 8) 0034 60 0C 396 jz 00005$ 0036 79s00 397 mov r1,#((l_XSEG + 255) >> 8) 0038 90s00r00 398 mov dptr,#s_XSEG 003B E4 399 clr a 003C F0 400 00004$: movx @dptr,a 003D A3 401 inc dptr 003E D8 FC 402 djnz r0,00004$ 0040 D9 FA 403 djnz r1,00004$ 0042 F6 404 00005$: mov @r0,a 0043 D8 FD 405 djnz r0,00005$ 406 ; _mcs51_genRAMCLEAR() end 407 .area GSFINAL (CODE) 0000 02s00r46 408 ljmp __sdcc_program_startup 409 ;-------------------------------------------------------- 410 ; Home 411 ;-------------------------------------------------------- 412 .area HOME (CODE) 413 .area CSEG (CODE) 414 ;-------------------------------------------------------- 415 ; code 416 ;-------------------------------------------------------- 417 .area CSEG (CODE) 0046 418 __sdcc_program_startup: 0046 12s00r4B 419 lcall _main 420 ; return from main will lock up 0049 80 FE 421 sjmp . 422 ;------------------------------------------------------------ 423 ;Allocation info for local variables in function 'main' 424 ;------------------------------------------------------------ 425 ;count Allocated to registers 426 ;i Allocated to registers 427 ;c Allocated to registers 428 ;c Allocated to registers 429 ;c Allocated to registers 430 ;c Allocated to registers 431 ;c Allocated to registers 432 ;c Allocated to registers 433 ;i Allocated to registers 434 ;c Allocated to registers 435 ;c Allocated to registers 436 ;c Allocated to registers 437 ;c Allocated to registers 438 ;v_sense Allocated to registers r5 r4 439 ;v_diff Allocated to registers r5 r4 440 ;v_board Allocated to registers r6 r7 441 ;------------------------------------------------------------ 442 ;firm.c:140: void main() 443 ; ----------------------------------------- 444 ; function main 445 ; ----------------------------------------- 004B 446 _main: 0002 447 ar2 = 0x02 0003 448 ar3 = 0x03 0004 449 ar4 = 0x04 0005 450 ar5 = 0x05 0006 451 ar6 = 0x06 0007 452 ar7 = 0x07 0000 453 ar0 = 0x00 0001 454 ar1 = 0x01 455 ;firm.c:146: PORTACFG = 0x0; /* is a port */ 456 ; genAssign 004B 90 7F 93 457 mov dptr,#_PORTACFG 458 ; Peephole 181 changed mov to clr 459 ;firm.c:147: OUTA = 0x0; /* initialized to 0 */ 460 ; genAssign 461 ; Peephole 181 changed mov to clr 462 ; Peephole 219 removed redundant clear 004E E4 463 clr a 004F F0 464 movx @dptr,a 0050 90 7F 96 465 mov dptr,#_OUTA 0053 F0 466 movx @dptr,a 467 ;firm.c:148: OEA = 0xff; /* and used for output */ 468 ; genAssign 0054 90 7F 9C 469 mov dptr,#_OEA 0057 74 FF 470 mov a,#0xFF 0059 F0 471 movx @dptr,a 472 ;firm.c:151: PORTBCFG = 0x0; /* is a port */ 473 ; genAssign 005A 90 7F 94 474 mov dptr,#_PORTBCFG 475 ; Peephole 181 changed mov to clr 005D E4 476 clr a 005E F0 477 movx @dptr,a 478 ;firm.c:152: OUTB = 0x01; /* initialized to 1 (bit 0 is the NRESET line) */ 479 ; genAssign 005F 90 7F 97 480 mov dptr,#_OUTB 0062 74 01 481 mov a,#0x01 0064 F0 482 movx @dptr,a 483 ;firm.c:153: OEB = 0xc9; /* and used partly for input, partly for output */ 484 ; genAssign 0065 90 7F 9D 485 mov dptr,#_OEB 0068 74 C9 486 mov a,#0xC9 006A F0 487 movx @dptr,a 488 ;firm.c:156: PORTCCFG = 0x03; 489 ; genAssign 006B 90 7F 95 490 mov dptr,#_PORTCCFG 006E 74 03 491 mov a,#0x03 0070 F0 492 movx @dptr,a 493 ;firm.c:157: OUTC |= 0x08; /* LED is off to begin with */ 494 ; genAssign 495 ; genOr 496 ; Peephole 248.a optimized or to xdata 0071 90 7F 98 497 mov dptr,#_OUTC 0074 E0 498 movx a,@dptr 0075 FA 499 mov r2,a 0076 44 08 500 orl a,#0x08 0078 F0 501 movx @dptr,a 502 ;firm.c:158: OEC |= 0x09; 503 ; genAssign 504 ; genOr 505 ; Peephole 248.a optimized or to xdata 0079 90 7F 9E 506 mov dptr,#_OEC 007C E0 507 movx a,@dptr 007D FA 508 mov r2,a 007E 44 09 509 orl a,#0x09 0080 F0 510 movx @dptr,a 511 ;firm.c:160: ISOCTL = 0x01; /* no isochronous endpoints */ 512 ; genAssign 0081 90 7F A1 513 mov dptr,#_ISOCTL 0084 74 01 514 mov a,#0x01 0086 F0 515 movx @dptr,a 516 ;firm.c:162: for (i = 0; i < 4; ++i) { 517 ; genAssign 0087 7A 00 518 mov r2,#0x00 0089 519 00171$: 520 ; genCmpLt 521 ; genCmp 0089 BA 04 00 522 cjne r2,#0x04,00256$ 008C 523 00256$: 524 ; genIfxJump 525 ; Peephole 108 removed ljmp by inverse jump logic 008C 50 13 526 jnc 00206$ 008E 527 00257$: 528 ;firm.c:163: RESISTOR(2 * i) = 0xa6; /* analog supplies at 1.8 V */ 529 ; genLeftShift 530 ; genLeftShiftLiteral 531 ; genlshOne 008E EA 532 mov a,r2 008F 25 E0 533 add a,acc 534 ; genPlus 535 ; Peephole 177.b removed redundant mov 0091 FB 536 mov r3,a 0092 24 1C 537 add a,#__resistor 0094 F5 82 538 mov dpl,a 539 ; Peephole 181 changed mov to clr 0096 E4 540 clr a 0097 34 1C 541 addc a,#(__resistor >> 8) 0099 F5 83 542 mov dph,a 543 ; genPointerSet 544 ; genFarPointerSet 009B 74 A6 545 mov a,#0xA6 009D F0 546 movx @dptr,a 547 ;firm.c:162: for (i = 0; i < 4; ++i) { 548 ; genPlus 549 ; genPlusIncr 009E 0A 550 inc r2 551 ;firm.c:166: for (i = 0; i < 4; ++i) { 552 ; Peephole 112.b changed ljmp to sjmp 009F 80 E8 553 sjmp 00171$ 00A1 554 00206$: 555 ; genAssign 00A1 7A 00 556 mov r2,#0x00 00A3 557 00175$: 558 ; genCmpLt 559 ; genCmp 00A3 BA 04 00 560 cjne r2,#0x04,00258$ 00A6 561 00258$: 562 ; genIfxJump 563 ; Peephole 108 removed ljmp by inverse jump logic 00A6 50 15 564 jnc 00178$ 00A8 565 00259$: 566 ;firm.c:167: RESISTOR(2 * i + 1) = 0x85; /* digital supplies at 2.0 V */ 567 ; genLeftShift 568 ; genLeftShiftLiteral 569 ; genlshOne 00A8 EA 570 mov a,r2 00A9 25 E0 571 add a,acc 572 ; genPlus 573 ; genPlusIncr 574 ; Peephole 236.a used r3 instead of ar3 575 ; Peephole 214 reduced some extra moves 00AB FB 576 mov r3,a 00AC 24 01 577 add a,#0x01 578 ; genPlus 00AE 24 1C 579 add a,#__resistor 00B0 F5 82 580 mov dpl,a 581 ; Peephole 240 use clr instead of addc a,#0 00B2 E4 582 clr a 00B3 34 1C 583 addc a,#(__resistor >> 8) 00B5 F5 83 584 mov dph,a 585 ; genPointerSet 586 ; genFarPointerSet 00B7 74 85 587 mov a,#0x85 00B9 F0 588 movx @dptr,a 589 ;firm.c:166: for (i = 0; i < 4; ++i) { 590 ; genPlus 591 ; genPlusIncr 00BA 0A 592 inc r2 593 ; Peephole 112.b changed ljmp to sjmp 00BB 80 E6 594 sjmp 00175$ 00BD 595 00178$: 596 ;firm.c:170: _firm_regulate = 0xff; 597 ; genAssign 00BD 90 1C 65 598 mov dptr,#__firm_regulate 00C0 74 FF 599 mov a,#0xFF 00C2 F0 600 movx @dptr,a 601 ;firm.c:172: for (i = 0; i < 8; ++i) { 602 ; genAssign 00C3 7A 00 603 mov r2,#0x00 00C5 604 00179$: 605 ; genCmpLt 606 ; genCmp 00C5 BA 08 00 607 cjne r2,#0x08,00260$ 00C8 608 00260$: 609 ; genIfxJump 610 ; Peephole 108 removed ljmp by inverse jump logic 00C8 50 23 611 jnc 00182$ 00CA 612 00261$: 613 ;firm.c:173: VOLT(i) = 0; 614 ; genMult 615 ; genMultOneByte 00CA EA 616 mov a,r2 00CB 75 F0 02 617 mov b,#0x02 00CE A4 618 mul ab 619 ; genPlus 00CF 24 55 620 add a,#__volt 00D1 F5 82 621 mov dpl,a 00D3 E5 F0 622 mov a,b 00D5 34 1C 623 addc a,#(__volt >> 8) 00D7 F5 83 624 mov dph,a 625 ; genPointerSet 626 ; genFarPointerSet 627 ; Peephole 101 removed redundant mov 628 ; Peephole 181 changed mov to clr 00D9 E4 629 clr a 00DA F0 630 movx @dptr,a 00DB A3 631 inc dptr 00DC F0 632 movx @dptr,a 633 ;firm.c:174: _vtol[i] = 0x40; 634 ; genPlus 635 ; Peephole 236.g used r2 instead of ar2 00DD EA 636 mov a,r2 00DE 24 66 637 add a,#__vtol 00E0 F5 82 638 mov dpl,a 639 ; Peephole 181 changed mov to clr 00E2 E4 640 clr a 00E3 34 1C 641 addc a,#(__vtol >> 8) 00E5 F5 83 642 mov dph,a 643 ; genPointerSet 644 ; genFarPointerSet 00E7 74 40 645 mov a,#0x40 00E9 F0 646 movx @dptr,a 647 ;firm.c:172: for (i = 0; i < 8; ++i) { 648 ; genPlus 649 ; genPlusIncr 00EA 0A 650 inc r2 651 ; Peephole 112.b changed ljmp to sjmp 00EB 80 D8 652 sjmp 00179$ 00ED 653 00182$: 654 ;firm.c:180: _power_fail = 0; 655 ; genAssign 00ED 90 1C 24 656 mov dptr,#__power_fail 657 ; Peephole 181 changed mov to clr 00F0 E4 658 clr a 00F1 F0 659 movx @dptr,a 660 ;firm.c:182: setup_usb_int(); 661 ; genAssign 00F2 C2 AF 662 clr _EA 663 ; genAssign 00F4 90 7F DD 664 mov dptr,#_USBPAIR 665 ; Peephole 181 changed mov to clr 666 ; genAssign 667 ; Peephole 181 changed mov to clr 668 ; Peephole 219 removed redundant clear 00F7 E4 669 clr a 00F8 F0 670 movx @dptr,a 00F9 90 7F AF 671 mov dptr,#_USBBAV 00FC F0 672 movx @dptr,a 673 ; genAssign 00FD 90 7F AE 674 mov dptr,#_USBIEN 0100 74 11 675 mov a,#0x11 0102 F0 676 movx @dptr,a 677 ; genAssign 0103 90 7F AC 678 mov dptr,#_IN07IEN 0106 74 01 679 mov a,#0x01 0108 F0 680 movx @dptr,a 681 ; genAssign 0109 90 7F AD 682 mov dptr,#_OUT07IEN 010C 74 1F 683 mov a,#0x1F 010E F0 684 movx @dptr,a 685 ; genAssign 010F 90 7F DE 686 mov dptr,#_IN07VAL 0112 74 1F 687 mov a,#0x1F 0114 F0 688 movx @dptr,a 689 ; genAssign 0115 90 7F DF 690 mov dptr,#_OUT07VAL 0118 74 1F 691 mov a,#0x1F 011A F0 692 movx @dptr,a 693 ; genAssign 011B D2 E8 694 setb _EUSB 695 ; genAssign 011D D2 AF 696 setb _EA 697 ;firm.c:183: setup_timer2_int(); 698 ; genAssign 011F C2 AD 699 clr _ET2 700 ; genAssign 0121 C2 CF 701 clr _TF2 702 ;firm.c:184: setup_v_table(); 703 ; genPointerSet 704 ; genFarPointerSet 0123 90 1C 04 705 mov dptr,#__buf 0126 74 27 706 mov a,#0x27 0128 F0 707 movx @dptr,a 708 ; genPointerSet 709 ; genFarPointerSet 0129 90 1C 05 710 mov dptr,#(__buf + 0x0001) 012C 74 20 711 mov a,#0x20 012E F0 712 movx @dptr,a 713 ; genAddrOf 012F 75*00 04 714 mov _i2c_write_PARM_2,#__buf 0132 75*01 1C 715 mov (_i2c_write_PARM_2 + 1),#(__buf >> 8) 716 ; genAssign 0135 E4 717 clr a 0136 F5*01 718 mov (_i2c_write_PARM_3 + 1),a 0138 75*00 02 719 mov _i2c_write_PARM_3,#0x02 720 ; genCall 013B 75 82 51 721 mov dpl,#0x51 013E 12s00r00 722 lcall _i2c_write 0141 AA 82 723 mov r2,dpl 0143 AB 83 724 mov r3,dph 725 ; genCmpEq 0145 BA 02 05 726 cjne r2,#0x02,00262$ 0148 BB 00 02 727 cjne r3,#0x00,00262$ 728 ; Peephole 112.b changed ljmp to sjmp 014B 80 08 729 sjmp 00210$ 014D 730 00262$: 731 ; genAssign 732 ; genAnd 733 ; Peephole 248.b optimized and to xdata 014D 90 7F 98 734 mov dptr,#_OUTC 0150 E0 735 movx a,@dptr 0151 FA 736 mov r2,a 0152 54 F7 737 anl a,#0xF7 0154 F0 738 movx @dptr,a 0155 739 00210$: 740 ; genAssign 0155 7A FF 741 mov r2,#0xFF 0157 7B 7F 742 mov r3,#0x7F 0159 743 00103$: 744 ; genAssign 0159 8A 04 745 mov ar4,r2 015B 8B 05 746 mov ar5,r3 747 ; genMinus 748 ; genMinusDec 015D 1A 749 dec r2 015E BA FF 01 750 cjne r2,#0xff,00263$ 0161 1B 751 dec r3 0162 752 00263$: 753 ; genIfx 0162 EC 754 mov a,r4 0163 4D 755 orl a,r5 756 ; genIfxJump 757 ; Peephole 109 removed ljmp by inverse jump logic 0164 70 F3 758 jnz 00103$ 0166 759 00264$: 760 ; genAssign 761 ; genOr 762 ; Peephole 248.a optimized or to xdata 0166 90 7F 98 763 mov dptr,#_OUTC 0169 E0 764 movx a,@dptr 016A FA 765 mov r2,a 016B 44 08 766 orl a,#0x08 016D F0 767 movx @dptr,a 768 ; genAddrOf 016E 75*00 00 769 mov _i2c_read_PARM_2,#__vtable 0171 75*01 20 770 mov (_i2c_read_PARM_2 + 1),#(__vtable >> 8) 771 ; genAssign 0174 75*00 00 772 mov _i2c_read_PARM_3,#0x00 0177 75*01 08 773 mov (_i2c_read_PARM_3 + 1),#0x08 774 ; genCall 017A 75 82 51 775 mov dpl,#0x51 017D 12s00r00 776 lcall _i2c_read 0180 AA 82 777 mov r2,dpl 0182 AB 83 778 mov r3,dph 779 ; genCmpEq 0184 BA 00 05 780 cjne r2,#0x00,00265$ 0187 BB 08 02 781 cjne r3,#0x08,00265$ 782 ; Peephole 112.b changed ljmp to sjmp 018A 80 08 783 sjmp 00213$ 018C 784 00265$: 785 ; genAssign 786 ; genAnd 787 ; Peephole 248.b optimized and to xdata 018C 90 7F 98 788 mov dptr,#_OUTC 018F E0 789 movx a,@dptr 0190 FA 790 mov r2,a 0191 54 F7 791 anl a,#0xF7 0193 F0 792 movx @dptr,a 0194 793 00213$: 794 ; genAssign 0194 7A FF 795 mov r2,#0xFF 0196 7B 7F 796 mov r3,#0x7F 0198 797 00108$: 798 ; genAssign 0198 8A 04 799 mov ar4,r2 019A 8B 05 800 mov ar5,r3 801 ; genMinus 802 ; genMinusDec 019C 1A 803 dec r2 019D BA FF 01 804 cjne r2,#0xff,00266$ 01A0 1B 805 dec r3 01A1 806 00266$: 807 ; genIfx 01A1 EC 808 mov a,r4 01A2 4D 809 orl a,r5 810 ; genIfxJump 811 ; Peephole 109 removed ljmp by inverse jump logic 01A3 70 F3 812 jnz 00108$ 01A5 813 00267$: 814 ; genAssign 815 ; genOr 816 ; Peephole 248.a optimized or to xdata 01A5 90 7F 98 817 mov dptr,#_OUTC 01A8 E0 818 movx a,@dptr 01A9 FA 819 mov r2,a 01AA 44 08 820 orl a,#0x08 01AC F0 821 movx @dptr,a 822 ;firm.c:187: EIE = 0xe1; 823 ; genAssign 01AD 75 E8 E1 824 mov _EIE,#0xE1 825 ;firm.c:190: ES1 = 0; 826 ; genAssign 01B0 C2 AE 827 clr _ES1 828 ;firm.c:191: ES0 = 0; 829 ; genAssign 01B2 C2 AC 830 clr _ES0 831 ;firm.c:195: BUF(0) = 0xd2; /* 1101 0010 */ 832 ; genPointerSet 833 ; genFarPointerSet 01B4 90 1C 04 834 mov dptr,#__buf 01B7 74 D2 835 mov a,#0xD2 01B9 F0 836 movx @dptr,a 837 ;firm.c:196: BUF(1) = 0x17; /* 0001 0111 */ 838 ; genPointerSet 839 ; genFarPointerSet 01BA 90 1C 05 840 mov dptr,#(__buf + 0x0001) 01BD 74 17 841 mov a,#0x17 01BF F0 842 movx @dptr,a 843 ;firm.c:197: if (i2c_write(ADC1ADDR, _buf, 2) != 2) { 844 ; genAddrOf 01C0 75*00 04 845 mov _i2c_write_PARM_2,#__buf 01C3 75*01 1C 846 mov (_i2c_write_PARM_2 + 1),#(__buf >> 8) 847 ; genAssign 01C6 E4 848 clr a 01C7 F5*01 849 mov (_i2c_write_PARM_3 + 1),a 01C9 75*00 02 850 mov _i2c_write_PARM_3,#0x02 851 ; genCall 01CC 75 82 31 852 mov dpl,#0x31 01CF 12s00r00 853 lcall _i2c_write 01D2 AA 82 854 mov r2,dpl 01D4 AB 83 855 mov r3,dph 856 ; genCmpEq 01D6 BA 02 05 857 cjne r2,#0x02,00268$ 01D9 BB 00 02 858 cjne r3,#0x00,00268$ 859 ; Peephole 112.b changed ljmp to sjmp 01DC 80 21 860 sjmp 00115$ 01DE 861 00268$: 862 ;firm.c:198: ERROR(EI2CNACK, ADC1ADDR); 863 ; genAssign 864 ; genAnd 865 ; Peephole 248.b optimized and to xdata 01DE 90 7F 98 866 mov dptr,#_OUTC 01E1 E0 867 movx a,@dptr 01E2 FA 868 mov r2,a 01E3 54 F7 869 anl a,#0xF7 01E5 F0 870 movx @dptr,a 871 ; genAssign 01E6 7A FF 872 mov r2,#0xFF 01E8 7B 7F 873 mov r3,#0x7F 01EA 874 00111$: 875 ; genAssign 01EA 8A 04 876 mov ar4,r2 01EC 8B 05 877 mov ar5,r3 878 ; genMinus 879 ; genMinusDec 01EE 1A 880 dec r2 01EF BA FF 01 881 cjne r2,#0xff,00269$ 01F2 1B 882 dec r3 01F3 883 00269$: 884 ; genIfx 01F3 EC 885 mov a,r4 01F4 4D 886 orl a,r5 887 ; genIfxJump 888 ; Peephole 109 removed ljmp by inverse jump logic 01F5 70 F3 889 jnz 00111$ 01F7 890 00270$: 891 ; genAssign 892 ; genOr 893 ; Peephole 248.a optimized or to xdata 01F7 90 7F 98 894 mov dptr,#_OUTC 01FA E0 895 movx a,@dptr 01FB FA 896 mov r2,a 01FC 44 08 897 orl a,#0x08 01FE F0 898 movx @dptr,a 01FF 899 00115$: 900 ;firm.c:200: BUF(0) = 0xd2; /* 1101 0010 */ 901 ; genPointerSet 902 ; genFarPointerSet 01FF 90 1C 04 903 mov dptr,#__buf 0202 74 D2 904 mov a,#0xD2 0204 F0 905 movx @dptr,a 906 ;firm.c:201: BUF(1) = 0x17; /* 0001 0111 */ 907 ; genPointerSet 908 ; genFarPointerSet 0205 90 1C 05 909 mov dptr,#(__buf + 0x0001) 0208 74 17 910 mov a,#0x17 020A F0 911 movx @dptr,a 912 ;firm.c:202: if (i2c_write(ADC2ADDR, _buf, 2) != 2) { 913 ; genAddrOf 020B 75*00 04 914 mov _i2c_write_PARM_2,#__buf 020E 75*01 1C 915 mov (_i2c_write_PARM_2 + 1),#(__buf >> 8) 916 ; genAssign 0211 E4 917 clr a 0212 F5*01 918 mov (_i2c_write_PARM_3 + 1),a 0214 75*00 02 919 mov _i2c_write_PARM_3,#0x02 920 ; genCall 0217 75 82 33 921 mov dpl,#0x33 021A 12s00r00 922 lcall _i2c_write 021D AA 82 923 mov r2,dpl 021F AB 83 924 mov r3,dph 925 ; genCmpEq 0221 BA 02 05 926 cjne r2,#0x02,00271$ 0224 BB 00 02 927 cjne r3,#0x00,00271$ 928 ; Peephole 112.b changed ljmp to sjmp 0227 80 21 929 sjmp 00228$ 0229 930 00271$: 931 ;firm.c:203: ERROR(EI2CNACK, ADC2ADDR); 932 ; genAssign 933 ; genAnd 934 ; Peephole 248.b optimized and to xdata 0229 90 7F 98 935 mov dptr,#_OUTC 022C E0 936 movx a,@dptr 022D FA 937 mov r2,a 022E 54 F7 938 anl a,#0xF7 0230 F0 939 movx @dptr,a 940 ; genAssign 0231 7A FF 941 mov r2,#0xFF 0233 7B 7F 942 mov r3,#0x7F 0235 943 00116$: 944 ; genAssign 0235 8A 04 945 mov ar4,r2 0237 8B 05 946 mov ar5,r3 947 ; genMinus 948 ; genMinusDec 0239 1A 949 dec r2 023A BA FF 01 950 cjne r2,#0xff,00272$ 023D 1B 951 dec r3 023E 952 00272$: 953 ; genIfx 023E EC 954 mov a,r4 023F 4D 955 orl a,r5 956 ; genIfxJump 957 ; Peephole 109 removed ljmp by inverse jump logic 0240 70 F3 958 jnz 00116$ 0242 959 00273$: 960 ; genAssign 961 ; genOr 962 ; Peephole 248.a optimized or to xdata 0242 90 7F 98 963 mov dptr,#_OUTC 0245 E0 964 movx a,@dptr 0246 FA 965 mov r2,a 0247 44 08 966 orl a,#0x08 0249 F0 967 movx @dptr,a 968 ;firm.c:206: for (i = 0; i < 4; ++i) { 024A 969 00228$: 970 ; genAssign 024A 7A 00 971 mov r2,#0x00 024C 972 00183$: 973 ; genCmpLt 974 ; genCmp 024C BA 04 00 975 cjne r2,#0x04,00274$ 024F 976 00274$: 977 ; genIfxJump 024F 40 03 978 jc 00275$ 0251 02s02rFB 979 ljmp 00169$ 0254 980 00275$: 981 ;firm.c:208: BUF(0) = 0x00; 982 ; genPointerSet 983 ; genFarPointerSet 0254 90 1C 04 984 mov dptr,#__buf 985 ; Peephole 181 changed mov to clr 0257 E4 986 clr a 0258 F0 987 movx @dptr,a 988 ;firm.c:209: BUF(1) = 0x10; 989 ; genPointerSet 990 ; genFarPointerSet 0259 90 1C 05 991 mov dptr,#(__buf + 0x0001) 025C 74 10 992 mov a,#0x10 025E F0 993 movx @dptr,a 994 ;firm.c:210: if (i2c_write(RDACADDR(i), _buf, 2) != 2) { 995 ; genPlus 025F 74 2C 996 mov a,#0x2C 997 ; Peephole 236.a used r2 instead of ar2 0261 2A 998 add a,r2 0262 FB 999 mov r3,a 1000 ; genAddrOf 0263 75*00 04 1001 mov _i2c_write_PARM_2,#__buf 0266 75*01 1C 1002 mov (_i2c_write_PARM_2 + 1),#(__buf >> 8) 1003 ; genAssign 0269 E4 1004 clr a 026A F5*01 1005 mov (_i2c_write_PARM_3 + 1),a 026C 75*00 02 1006 mov _i2c_write_PARM_3,#0x02 1007 ; genCall 026F 8B 82 1008 mov dpl,r3 0271 C0 02 1009 push ar2 0273 12s00r00 1010 lcall _i2c_write 0276 AB 82 1011 mov r3,dpl 0278 AC 83 1012 mov r4,dph 027A D0 02 1013 pop ar2 1014 ; genCmpEq 027C BB 02 05 1015 cjne r3,#0x02,00276$ 027F BC 00 02 1016 cjne r4,#0x00,00276$ 1017 ; Peephole 112.b changed ljmp to sjmp 0282 80 21 1018 sjmp 00125$ 0284 1019 00276$: 1020 ;firm.c:211: ERROR(EI2CNACK, RDACADDR(i)); 1021 ; genAssign 1022 ; genAnd 1023 ; Peephole 248.b optimized and to xdata 0284 90 7F 98 1024 mov dptr,#_OUTC 0287 E0 1025 movx a,@dptr 0288 FB 1026 mov r3,a 0289 54 F7 1027 anl a,#0xF7 028B F0 1028 movx @dptr,a 1029 ; genAssign 028C 7B FF 1030 mov r3,#0xFF 028E 7C 7F 1031 mov r4,#0x7F 0290 1032 00121$: 1033 ; genAssign 0290 8B 05 1034 mov ar5,r3 0292 8C 06 1035 mov ar6,r4 1036 ; genMinus 1037 ; genMinusDec 0294 1B 1038 dec r3 0295 BB FF 01 1039 cjne r3,#0xff,00277$ 0298 1C 1040 dec r4 0299 1041 00277$: 1042 ; genIfx 0299 ED 1043 mov a,r5 029A 4E 1044 orl a,r6 1045 ; genIfxJump 1046 ; Peephole 109 removed ljmp by inverse jump logic 029B 70 F3 1047 jnz 00121$ 029D 1048 00278$: 1049 ; genAssign 1050 ; genOr 1051 ; Peephole 248.a optimized or to xdata 029D 90 7F 98 1052 mov dptr,#_OUTC 02A0 E0 1053 movx a,@dptr 02A1 FB 1054 mov r3,a 02A2 44 08 1055 orl a,#0x08 02A4 F0 1056 movx @dptr,a 02A5 1057 00125$: 1058 ;firm.c:214: BUF(0) = 0x80; 1059 ; genPointerSet 1060 ; genFarPointerSet 02A5 90 1C 04 1061 mov dptr,#__buf 02A8 74 80 1062 mov a,#0x80 02AA F0 1063 movx @dptr,a 1064 ;firm.c:215: BUF(1) = 0x10; 1065 ; genPointerSet 1066 ; genFarPointerSet 02AB 90 1C 05 1067 mov dptr,#(__buf + 0x0001) 02AE 74 10 1068 mov a,#0x10 02B0 F0 1069 movx @dptr,a 1070 ;firm.c:216: if (i2c_write(RDACADDR(i), _buf, 2) != 2) { 1071 ; genPlus 02B1 74 2C 1072 mov a,#0x2C 1073 ; Peephole 236.a used r2 instead of ar2 02B3 2A 1074 add a,r2 02B4 FB 1075 mov r3,a 1076 ; genAddrOf 02B5 75*00 04 1077 mov _i2c_write_PARM_2,#__buf 02B8 75*01 1C 1078 mov (_i2c_write_PARM_2 + 1),#(__buf >> 8) 1079 ; genAssign 02BB E4 1080 clr a 02BC F5*01 1081 mov (_i2c_write_PARM_3 + 1),a 02BE 75*00 02 1082 mov _i2c_write_PARM_3,#0x02 1083 ; genCall 02C1 8B 82 1084 mov dpl,r3 02C3 C0 02 1085 push ar2 02C5 12s00r00 1086 lcall _i2c_write 02C8 AB 82 1087 mov r3,dpl 02CA AC 83 1088 mov r4,dph 02CC D0 02 1089 pop ar2 1090 ; genCmpEq 02CE BB 02 05 1091 cjne r3,#0x02,00279$ 02D1 BC 00 02 1092 cjne r4,#0x00,00279$ 1093 ; Peephole 112.b changed ljmp to sjmp 02D4 80 21 1094 sjmp 00185$ 02D6 1095 00279$: 1096 ;firm.c:217: ERROR(EI2CNACK, RDACADDR(i)); 1097 ; genAssign 1098 ; genAnd 1099 ; Peephole 248.b optimized and to xdata 02D6 90 7F 98 1100 mov dptr,#_OUTC 02D9 E0 1101 movx a,@dptr 02DA FB 1102 mov r3,a 02DB 54 F7 1103 anl a,#0xF7 02DD F0 1104 movx @dptr,a 1105 ; genAssign 02DE 7B FF 1106 mov r3,#0xFF 02E0 7C 7F 1107 mov r4,#0x7F 02E2 1108 00126$: 1109 ; genAssign 02E2 8B 05 1110 mov ar5,r3 02E4 8C 06 1111 mov ar6,r4 1112 ; genMinus 1113 ; genMinusDec 02E6 1B 1114 dec r3 02E7 BB FF 01 1115 cjne r3,#0xff,00280$ 02EA 1C 1116 dec r4 02EB 1117 00280$: 1118 ; genIfx 02EB ED 1119 mov a,r5 02EC 4E 1120 orl a,r6 1121 ; genIfxJump 1122 ; Peephole 109 removed ljmp by inverse jump logic 02ED 70 F3 1123 jnz 00126$ 02EF 1124 00281$: 1125 ; genAssign 1126 ; genOr 1127 ; Peephole 248.a optimized or to xdata 02EF 90 7F 98 1128 mov dptr,#_OUTC 02F2 E0 1129 movx a,@dptr 02F3 FB 1130 mov r3,a 02F4 44 08 1131 orl a,#0x08 02F6 F0 1132 movx @dptr,a 02F7 1133 00185$: 1134 ;firm.c:206: for (i = 0; i < 4; ++i) { 1135 ; genPlus 1136 ; genPlusIncr 02F7 0A 1137 inc r2 02F8 02s02r4C 1138 ljmp 00183$ 1139 ;firm.c:222: while (1) { 02FB 1140 00169$: 1141 ;firm.c:231: if (_power_fail) 1142 ; genAssign 02FB 90 1C 24 1143 mov dptr,#__power_fail 02FE E0 1144 movx a,@dptr 1145 ; genIfx 1146 ; Peephole 105 removed redundant mov 02FF FA 1147 mov r2,a 1148 ; genIfxJump 1149 ; Peephole 109 removed ljmp by inverse jump logic 0300 70 F9 1150 jnz 00169$ 0302 1151 00282$: 1152 ;firm.c:236: for (i = 0; i < 4; ++i) { 1153 ; genAssign 0302 7A 00 1154 mov r2,#0x00 0304 7B 00 1155 mov r3,#0x00 0306 1156 00187$: 1157 ; genCmpLt 1158 ; genCmp 0306 C3 1159 clr c 0307 EA 1160 mov a,r2 0308 94 04 1161 subb a,#0x04 030A EB 1162 mov a,r3 030B 64 80 1163 xrl a,#0x80 030D 94 80 1164 subb a,#0x80 1165 ; genIfxJump 030F 40 03 1166 jc 00283$ 0311 02s03rE7 1167 ljmp 00190$ 0314 1168 00283$: 1169 ;firm.c:238: BUF(0) = 0x00; 1170 ; genPointerSet 1171 ; genFarPointerSet 0314 90 1C 04 1172 mov dptr,#__buf 1173 ; Peephole 181 changed mov to clr 0317 E4 1174 clr a 0318 F0 1175 movx @dptr,a 1176 ;firm.c:239: BUF(1) = RESISTOR(2 * i); 1177 ; genCast 0319 8A 04 1178 mov ar4,r2 1179 ; genLeftShift 1180 ; genLeftShiftLiteral 1181 ; genlshOne 031B EC 1182 mov a,r4 031C 25 E0 1183 add a,acc 1184 ; genPlus 1185 ; Peephole 177.b removed redundant mov 031E FD 1186 mov r5,a 031F 24 1C 1187 add a,#__resistor 0321 F5 82 1188 mov dpl,a 1189 ; Peephole 181 changed mov to clr 0323 E4 1190 clr a 0324 34 1C 1191 addc a,#(__resistor >> 8) 0326 F5 83 1192 mov dph,a 1193 ; genPointerGet 1194 ; genFarPointerGet 0328 E0 1195 movx a,@dptr 1196 ; genPointerSet 1197 ; genFarPointerSet 1198 ; Peephole 100 removed redundant mov 0329 FD 1199 mov r5,a 032A 90 1C 05 1200 mov dptr,#(__buf + 0x0001) 032D F0 1201 movx @dptr,a 1202 ;firm.c:240: if (i2c_write(RDACADDR(i), _buf, 2) != 2) { 1203 ; genPlus 032E 74 2C 1204 mov a,#0x2C 1205 ; Peephole 236.a used r4 instead of ar4 0330 2C 1206 add a,r4 0331 FC 1207 mov r4,a 1208 ; genAddrOf 0332 75*00 04 1209 mov _i2c_write_PARM_2,#__buf 0335 75*01 1C 1210 mov (_i2c_write_PARM_2 + 1),#(__buf >> 8) 1211 ; genAssign 0338 E4 1212 clr a 0339 F5*01 1213 mov (_i2c_write_PARM_3 + 1),a 033B 75*00 02 1214 mov _i2c_write_PARM_3,#0x02 1215 ; genCall 033E 8C 82 1216 mov dpl,r4 0340 C0 02 1217 push ar2 0342 C0 03 1218 push ar3 0344 12s00r00 1219 lcall _i2c_write 0347 AC 82 1220 mov r4,dpl 0349 AD 83 1221 mov r5,dph 034B D0 03 1222 pop ar3 034D D0 02 1223 pop ar2 1224 ; genCmpEq 034F BC 02 05 1225 cjne r4,#0x02,00284$ 0352 BD 00 02 1226 cjne r5,#0x00,00284$ 1227 ; Peephole 112.b changed ljmp to sjmp 0355 80 21 1228 sjmp 00137$ 0357 1229 00284$: 1230 ;firm.c:241: ERROR(EI2CNACK, RDACADDR(i)); 1231 ; genAssign 1232 ; genAnd 1233 ; Peephole 248.b optimized and to xdata 0357 90 7F 98 1234 mov dptr,#_OUTC 035A E0 1235 movx a,@dptr 035B FC 1236 mov r4,a 035C 54 F7 1237 anl a,#0xF7 035E F0 1238 movx @dptr,a 1239 ; genAssign 035F 7C FF 1240 mov r4,#0xFF 0361 7D 7F 1241 mov r5,#0x7F 0363 1242 00133$: 1243 ; genAssign 0363 8C 06 1244 mov ar6,r4 0365 8D 07 1245 mov ar7,r5 1246 ; genMinus 1247 ; genMinusDec 0367 1C 1248 dec r4 0368 BC FF 01 1249 cjne r4,#0xff,00285$ 036B 1D 1250 dec r5 036C 1251 00285$: 1252 ; genIfx 036C EE 1253 mov a,r6 036D 4F 1254 orl a,r7 1255 ; genIfxJump 1256 ; Peephole 109 removed ljmp by inverse jump logic 036E 70 F3 1257 jnz 00133$ 0370 1258 00286$: 1259 ; genAssign 1260 ; genOr 1261 ; Peephole 248.a optimized or to xdata 0370 90 7F 98 1262 mov dptr,#_OUTC 0373 E0 1263 movx a,@dptr 0374 FC 1264 mov r4,a 0375 44 08 1265 orl a,#0x08 0377 F0 1266 movx @dptr,a 0378 1267 00137$: 1268 ;firm.c:244: BUF(0) = 0x80; 1269 ; genPointerSet 1270 ; genFarPointerSet 0378 90 1C 04 1271 mov dptr,#__buf 037B 74 80 1272 mov a,#0x80 037D F0 1273 movx @dptr,a 1274 ;firm.c:245: BUF(1) = RESISTOR(2 * i + 1); 1275 ; genCast 037E 8A 04 1276 mov ar4,r2 1277 ; genLeftShift 1278 ; genLeftShiftLiteral 1279 ; genlshOne 0380 EC 1280 mov a,r4 0381 25 E0 1281 add a,acc 1282 ; genPlus 1283 ; genPlusIncr 1284 ; Peephole 236.a used r5 instead of ar5 1285 ; Peephole 214 reduced some extra moves 0383 FD 1286 mov r5,a 0384 24 01 1287 add a,#0x01 1288 ; genPlus 0386 24 1C 1289 add a,#__resistor 0388 F5 82 1290 mov dpl,a 1291 ; Peephole 240 use clr instead of addc a,#0 038A E4 1292 clr a 038B 34 1C 1293 addc a,#(__resistor >> 8) 038D F5 83 1294 mov dph,a 1295 ; genPointerGet 1296 ; genFarPointerGet 038F E0 1297 movx a,@dptr 1298 ; genPointerSet 1299 ; genFarPointerSet 1300 ; Peephole 100 removed redundant mov 0390 FD 1301 mov r5,a 0391 90 1C 05 1302 mov dptr,#(__buf + 0x0001) 0394 F0 1303 movx @dptr,a 1304 ;firm.c:246: if (i2c_write(RDACADDR(i), _buf, 2) != 2) { 1305 ; genPlus 0395 74 2C 1306 mov a,#0x2C 1307 ; Peephole 236.a used r4 instead of ar4 0397 2C 1308 add a,r4 0398 FC 1309 mov r4,a 1310 ; genAddrOf 0399 75*00 04 1311 mov _i2c_write_PARM_2,#__buf 039C 75*01 1C 1312 mov (_i2c_write_PARM_2 + 1),#(__buf >> 8) 1313 ; genAssign 039F E4 1314 clr a 03A0 F5*01 1315 mov (_i2c_write_PARM_3 + 1),a 03A2 75*00 02 1316 mov _i2c_write_PARM_3,#0x02 1317 ; genCall 03A5 8C 82 1318 mov dpl,r4 03A7 C0 02 1319 push ar2 03A9 C0 03 1320 push ar3 03AB 12s00r00 1321 lcall _i2c_write 03AE AC 82 1322 mov r4,dpl 03B0 AD 83 1323 mov r5,dph 03B2 D0 03 1324 pop ar3 03B4 D0 02 1325 pop ar2 1326 ; genCmpEq 03B6 BC 02 05 1327 cjne r4,#0x02,00287$ 03B9 BD 00 02 1328 cjne r5,#0x00,00287$ 1329 ; Peephole 112.b changed ljmp to sjmp 03BC 80 21 1330 sjmp 00189$ 03BE 1331 00287$: 1332 ;firm.c:247: ERROR(EI2CNACK, RDACADDR(i)); 1333 ; genAssign 1334 ; genAnd 1335 ; Peephole 248.b optimized and to xdata 03BE 90 7F 98 1336 mov dptr,#_OUTC 03C1 E0 1337 movx a,@dptr 03C2 FC 1338 mov r4,a 03C3 54 F7 1339 anl a,#0xF7 03C5 F0 1340 movx @dptr,a 1341 ; genAssign 03C6 7C FF 1342 mov r4,#0xFF 03C8 7D 7F 1343 mov r5,#0x7F 03CA 1344 00138$: 1345 ; genAssign 03CA 8C 06 1346 mov ar6,r4 03CC 8D 07 1347 mov ar7,r5 1348 ; genMinus 1349 ; genMinusDec 03CE 1C 1350 dec r4 03CF BC FF 01 1351 cjne r4,#0xff,00288$ 03D2 1D 1352 dec r5 03D3 1353 00288$: 1354 ; genIfx 03D3 EE 1355 mov a,r6 03D4 4F 1356 orl a,r7 1357 ; genIfxJump 1358 ; Peephole 109 removed ljmp by inverse jump logic 03D5 70 F3 1359 jnz 00138$ 03D7 1360 00289$: 1361 ; genAssign 1362 ; genOr 1363 ; Peephole 248.a optimized or to xdata 03D7 90 7F 98 1364 mov dptr,#_OUTC 03DA E0 1365 movx a,@dptr 03DB FC 1366 mov r4,a 03DC 44 08 1367 orl a,#0x08 03DE F0 1368 movx @dptr,a 03DF 1369 00189$: 1370 ;firm.c:236: for (i = 0; i < 4; ++i) { 1371 ; genPlus 1372 ; genPlusIncr 03DF 0A 1373 inc r2 03E0 BA 00 01 1374 cjne r2,#0x00,00290$ 03E3 0B 1375 inc r3 03E4 1376 00290$: 03E4 02s03r06 1377 ljmp 00187$ 03E7 1378 00190$: 1379 ;firm.c:253: if (i2c_read(ADC1ADDR, _buf, 24) != 24) { 1380 ; genAddrOf 03E7 75*00 04 1381 mov _i2c_read_PARM_2,#__buf 03EA 75*01 1C 1382 mov (_i2c_read_PARM_2 + 1),#(__buf >> 8) 1383 ; genAssign 03ED E4 1384 clr a 03EE F5*01 1385 mov (_i2c_read_PARM_3 + 1),a 03F0 75*00 18 1386 mov _i2c_read_PARM_3,#0x18 1387 ; genCall 03F3 75 82 31 1388 mov dpl,#0x31 03F6 12s00r00 1389 lcall _i2c_read 03F9 AA 82 1390 mov r2,dpl 03FB AB 83 1391 mov r3,dph 1392 ; genCmpEq 03FD BA 18 05 1393 cjne r2,#0x18,00291$ 0400 BB 00 02 1394 cjne r3,#0x00,00291$ 1395 ; Peephole 112.b changed ljmp to sjmp 0403 80 23 1396 sjmp 00147$ 0405 1397 00291$: 1398 ;firm.c:254: ERROR(EI2CNACK, ADC1ADDR); 1399 ; genAssign 1400 ; genAnd 1401 ; Peephole 248.b optimized and to xdata 0405 90 7F 98 1402 mov dptr,#_OUTC 0408 E0 1403 movx a,@dptr 0409 FA 1404 mov r2,a 040A 54 F7 1405 anl a,#0xF7 040C F0 1406 movx @dptr,a 1407 ; genAssign 040D 7A FF 1408 mov r2,#0xFF 040F 7B 7F 1409 mov r3,#0x7F 0411 1410 00143$: 1411 ; genAssign 0411 8A 04 1412 mov ar4,r2 0413 8B 05 1413 mov ar5,r3 1414 ; genMinus 1415 ; genMinusDec 0415 1A 1416 dec r2 0416 BA FF 01 1417 cjne r2,#0xff,00292$ 0419 1B 1418 dec r3 041A 1419 00292$: 1420 ; genIfx 041A EC 1421 mov a,r4 041B 4D 1422 orl a,r5 1423 ; genIfxJump 1424 ; Peephole 109 removed ljmp by inverse jump logic 041C 70 F3 1425 jnz 00143$ 041E 1426 00293$: 1427 ; genAssign 1428 ; genOr 1429 ; Peephole 248.a optimized or to xdata 041E 90 7F 98 1430 mov dptr,#_OUTC 0421 E0 1431 movx a,@dptr 0422 FA 1432 mov r2,a 0423 44 08 1433 orl a,#0x08 0425 F0 1434 movx @dptr,a 1435 ; Peephole 112.b changed ljmp to sjmp 0426 80 33 1436 sjmp 00148$ 0428 1437 00147$: 1438 ;firm.c:256: EA = 0; 1439 ; genAssign 0428 C2 AF 1440 clr _EA 1441 ;firm.c:257: for (i = 0; i < 24; ++i) 1442 ; genAssign 042A 7A 00 1443 mov r2,#0x00 042C 7B 00 1444 mov r3,#0x00 042E 1445 00191$: 1446 ; genCmpLt 1447 ; genCmp 042E C3 1448 clr c 042F EA 1449 mov a,r2 0430 94 18 1450 subb a,#0x18 0432 EB 1451 mov a,r3 0433 64 80 1452 xrl a,#0x80 0435 94 80 1453 subb a,#0x80 1454 ; genIfxJump 1455 ; Peephole 108 removed ljmp by inverse jump logic 0437 50 20 1456 jnc 00194$ 0439 1457 00294$: 1458 ;firm.c:258: ADC(i) = BUF(i); 1459 ; genPlus 1460 ; Peephole 236.g used r2 instead of ar2 0439 EA 1461 mov a,r2 043A 24 25 1462 add a,#__adc 043C FC 1463 mov r4,a 1464 ; Peephole 236.g used r3 instead of ar3 043D EB 1465 mov a,r3 043E 34 1C 1466 addc a,#(__adc >> 8) 0440 FD 1467 mov r5,a 1468 ; genPlus 1469 ; Peephole 236.g used r2 instead of ar2 0441 EA 1470 mov a,r2 0442 24 04 1471 add a,#__buf 0444 F5 82 1472 mov dpl,a 1473 ; Peephole 236.g used r3 instead of ar3 0446 EB 1474 mov a,r3 0447 34 1C 1475 addc a,#(__buf >> 8) 0449 F5 83 1476 mov dph,a 1477 ; genPointerGet 1478 ; genFarPointerGet 044B E0 1479 movx a,@dptr 1480 ; genPointerSet 1481 ; genFarPointerSet 1482 ; Peephole 136 removed redundant moves 044C FE 1483 mov r6,a 044D 8C 82 1484 mov dpl,r4 044F 8D 83 1485 mov dph,r5 0451 F0 1486 movx @dptr,a 1487 ;firm.c:257: for (i = 0; i < 24; ++i) 1488 ; genPlus 1489 ; genPlusIncr 1490 ; tail increment optimized 0452 0A 1491 inc r2 0453 BA 00 D8 1492 cjne r2,#0x00,00191$ 0456 0B 1493 inc r3 1494 ; Peephole 112.b changed ljmp to sjmp 0457 80 D5 1495 sjmp 00191$ 0459 1496 00194$: 1497 ;firm.c:259: EA = 1; 1498 ; genAssign 0459 D2 AF 1499 setb _EA 045B 1500 00148$: 1501 ;firm.c:262: if (i2c_read(ADC2ADDR, _buf, 24) != 24) { 1502 ; genAddrOf 045B 75*00 04 1503 mov _i2c_read_PARM_2,#__buf 045E 75*01 1C 1504 mov (_i2c_read_PARM_2 + 1),#(__buf >> 8) 1505 ; genAssign 0461 E4 1506 clr a 0462 F5*01 1507 mov (_i2c_read_PARM_3 + 1),a 0464 75*00 18 1508 mov _i2c_read_PARM_3,#0x18 1509 ; genCall 0467 75 82 33 1510 mov dpl,#0x33 046A 12s00r00 1511 lcall _i2c_read 046D AA 82 1512 mov r2,dpl 046F AB 83 1513 mov r3,dph 1514 ; genCmpEq 0471 BA 18 05 1515 cjne r2,#0x18,00295$ 0474 BB 00 02 1516 cjne r3,#0x00,00295$ 1517 ; Peephole 112.b changed ljmp to sjmp 0477 80 23 1518 sjmp 00153$ 0479 1519 00295$: 1520 ;firm.c:263: ERROR(EI2CNACK, ADC2ADDR); 1521 ; genAssign 1522 ; genAnd 1523 ; Peephole 248.b optimized and to xdata 0479 90 7F 98 1524 mov dptr,#_OUTC 047C E0 1525 movx a,@dptr 047D FA 1526 mov r2,a 047E 54 F7 1527 anl a,#0xF7 0480 F0 1528 movx @dptr,a 1529 ; genAssign 0481 7A FF 1530 mov r2,#0xFF 0483 7B 7F 1531 mov r3,#0x7F 0485 1532 00149$: 1533 ; genAssign 0485 8A 04 1534 mov ar4,r2 0487 8B 05 1535 mov ar5,r3 1536 ; genMinus 1537 ; genMinusDec 0489 1A 1538 dec r2 048A BA FF 01 1539 cjne r2,#0xff,00296$ 048D 1B 1540 dec r3 048E 1541 00296$: 1542 ; genIfx 048E EC 1543 mov a,r4 048F 4D 1544 orl a,r5 1545 ; genIfxJump 1546 ; Peephole 109 removed ljmp by inverse jump logic 0490 70 F3 1547 jnz 00149$ 0492 1548 00297$: 1549 ; genAssign 1550 ; genOr 1551 ; Peephole 248.a optimized or to xdata 0492 90 7F 98 1552 mov dptr,#_OUTC 0495 E0 1553 movx a,@dptr 0496 FA 1554 mov r2,a 0497 44 08 1555 orl a,#0x08 0499 F0 1556 movx @dptr,a 1557 ; Peephole 112.b changed ljmp to sjmp 049A 80 37 1558 sjmp 00255$ 049C 1559 00153$: 1560 ;firm.c:265: EA = 0; 1561 ; genAssign 049C C2 AF 1562 clr _EA 1563 ;firm.c:266: for (i = 0; i < 24; ++i) 1564 ; genAssign 049E 7A 00 1565 mov r2,#0x00 04A0 7B 00 1566 mov r3,#0x00 04A2 1567 00195$: 1568 ; genCmpLt 1569 ; genCmp 04A2 C3 1570 clr c 04A3 EA 1571 mov a,r2 04A4 94 18 1572 subb a,#0x18 04A6 EB 1573 mov a,r3 04A7 64 80 1574 xrl a,#0x80 04A9 94 80 1575 subb a,#0x80 1576 ; genIfxJump 1577 ; Peephole 108 removed ljmp by inverse jump logic 04AB 50 24 1578 jnc 00198$ 04AD 1579 00298$: 1580 ;firm.c:267: ADC(i + 24) = BUF(i); 1581 ; genCast 04AD 8A 04 1582 mov ar4,r2 1583 ; genPlus 04AF 74 18 1584 mov a,#0x18 1585 ; Peephole 236.a used r4 instead of ar4 04B1 2C 1586 add a,r4 1587 ; genPlus 04B2 24 25 1588 add a,#__adc 04B4 FC 1589 mov r4,a 1590 ; Peephole 240 use clr instead of addc a,#0 04B5 E4 1591 clr a 04B6 34 1C 1592 addc a,#(__adc >> 8) 04B8 FD 1593 mov r5,a 1594 ; genPlus 1595 ; Peephole 236.g used r2 instead of ar2 04B9 EA 1596 mov a,r2 04BA 24 04 1597 add a,#__buf 04BC F5 82 1598 mov dpl,a 1599 ; Peephole 236.g used r3 instead of ar3 04BE EB 1600 mov a,r3 04BF 34 1C 1601 addc a,#(__buf >> 8) 04C1 F5 83 1602 mov dph,a 1603 ; genPointerGet 1604 ; genFarPointerGet 04C3 E0 1605 movx a,@dptr 1606 ; genPointerSet 1607 ; genFarPointerSet 1608 ; Peephole 136 removed redundant moves 04C4 FE 1609 mov r6,a 04C5 8C 82 1610 mov dpl,r4 04C7 8D 83 1611 mov dph,r5 04C9 F0 1612 movx @dptr,a 1613 ;firm.c:266: for (i = 0; i < 24; ++i) 1614 ; genPlus 1615 ; genPlusIncr 04CA 0A 1616 inc r2 1617 ; Peephole 112.b changed ljmp to sjmp 1618 ; Peephole 243 avoided branch to sjmp 04CB BA 00 D4 1619 cjne r2,#0x00,00195$ 04CE 0B 1620 inc r3 04CF 1621 00299$: 04CF 80 D1 1622 sjmp 00195$ 04D1 1623 00198$: 1624 ;firm.c:268: EA = 1; 1625 ; genAssign 04D1 D2 AF 1626 setb _EA 1627 ;firm.c:273: for (i = 0; i < 8; ++i) { 04D3 1628 00255$: 1629 ; genAssign 04D3 7A 00 1630 mov r2,#0x00 04D5 7B 00 1631 mov r3,#0x00 04D7 1632 00164$: 1633 ; genCmpLt 1634 ; genCmp 04D7 C3 1635 clr c 04D8 EA 1636 mov a,r2 04D9 94 08 1637 subb a,#0x08 04DB EB 1638 mov a,r3 04DC 64 80 1639 xrl a,#0x80 04DE 94 80 1640 subb a,#0x80 1641 ; genIfxJump 04E0 40 03 1642 jc 00300$ 04E2 02s02rFB 1643 ljmp 00169$ 04E5 1644 00300$: 1645 ;firm.c:276: EA = 0; 1646 ; genAssign 04E5 C2 AF 1647 clr _EA 1648 ;firm.c:278: if (!(_firm_regulate & (1 << i))) { 1649 ; genLeftShift 04E7 8A F0 1650 mov b,r2 04E9 05 F0 1651 inc b 04EB 74 01 1652 mov a,#0x01 04ED 80 02 1653 sjmp 00303$ 04EF 1654 00301$: 04EF 25 E0 1655 add a,acc 04F1 1656 00303$: 04F1 D5 F0 FB 1657 djnz b,00301$ 04F4 FC 1658 mov r4,a 1659 ; genAssign 04F5 90 1C 65 1660 mov dptr,#__firm_regulate 04F8 E0 1661 movx a,@dptr 04F9 FD 1662 mov r5,a 1663 ; genCast 1664 ; genCast 1665 ; genAnd 1666 ; Peephole 3.c changed mov to clr 04FA E4 1667 clr a 04FB FE 1668 mov r6,a 04FC FF 1669 mov r7,a 04FD EC 1670 mov a,r4 04FE 52 05 1671 anl ar5,a 0500 EF 1672 mov a,r7 0501 52 06 1673 anl ar6,a 1674 ; genIfx 0503 ED 1675 mov a,r5 0504 4E 1676 orl a,r6 1677 ; genIfxJump 1678 ; Peephole 109 removed ljmp by inverse jump logic 0505 70 05 1679 jnz 00156$ 0507 1680 00304$: 1681 ;firm.c:279: EA = 1; 1682 ; genAssign 0507 D2 AF 1683 setb _EA 1684 ;firm.c:280: continue; 0509 02s06rB6 1685 ljmp 00166$ 050C 1686 00156$: 1687 ;firm.c:283: if (i & 1) { 1688 ; genAnd 050C EA 1689 mov a,r2 1690 ; genIfxJump 1691 ; Peephole 111 removed ljmp by inverse jump logic 050D 30 E0 46 1692 jnb acc.0,00158$ 0510 1693 00305$: 1694 ;firm.c:285: (signed int)((((unsigned int)(ADCDIGVH((i >> 1) + 1) & 1695 ; genRightShift 1696 ; genSignedRightShift 1697 ; genRightShiftLiteral 1698 ; genrshTwo 0510 8A 04 1699 mov ar4,r2 0512 EB 1700 mov a,r3 0513 A2 E7 1701 mov c,acc.7 0515 13 1702 rrc a 0516 CC 1703 xch a,r4 0517 13 1704 rrc a 0518 CC 1705 xch a,r4 0519 FD 1706 mov r5,a 1707 ; genCast 1708 ; genCast 051A EC 1709 mov a,r4 051B 33 1710 rlc a 051C 95 E0 1711 subb a,acc 051E FD 1712 mov r5,a 1713 ; genCast 1714 ; genLeftShift 1715 ; genLeftShiftLiteral 1716 ; genlshOne 051F EC 1717 mov a,r4 0520 25 E0 1718 add a,acc 1719 ; genPlus 1720 ; Peephole 236.a used r4 instead of ar4 1721 ; Peephole 214 reduced some extra moves 0522 FC 1722 mov r4,a 0523 24 18 1723 add a,#0x18 1724 ; genPlus 0525 24 25 1725 add a,#__adc 0527 F5 82 1726 mov dpl,a 1727 ; Peephole 240 use clr instead of addc a,#0 0529 E4 1728 clr a 052A 34 1C 1729 addc a,#(__adc >> 8) 052C F5 83 1730 mov dph,a 1731 ; genPointerGet 1732 ; genFarPointerGet 052E E0 1733 movx a,@dptr 052F FD 1734 mov r5,a 1735 ; genAnd 0530 53 05 0F 1736 anl ar5,#0x0F 1737 ; genCast 0533 7E 00 1738 mov r6,#0x00 1739 ; genLeftShift 1740 ; genLeftShiftLiteral 1741 ; genlshTwo 0535 8D 06 1742 mov ar6,r5 0537 7D 00 1743 mov r5,#0x00 1744 ;firm.c:287: ADCDIGVL((i >> 1) + 1)) << 1); 1745 ; genPlus 0539 74 19 1746 mov a,#0x19 1747 ; Peephole 236.a used r4 instead of ar4 053B 2C 1748 add a,r4 1749 ; genPlus 053C 24 25 1750 add a,#__adc 053E F5 82 1751 mov dpl,a 1752 ; Peephole 240 use clr instead of addc a,#0 0540 E4 1753 clr a 0541 34 1C 1754 addc a,#(__adc >> 8) 0543 F5 83 1755 mov dph,a 1756 ; genPointerGet 1757 ; genFarPointerGet 0545 E0 1758 movx a,@dptr 1759 ; genCast 1760 ; genPlus 1761 ; Peephole 236.g used r4 instead of ar4 1762 ; Peephole 177.d removed redundant move 0546 FC 1763 mov r4,a 0547 7F 00 1764 mov r7,#0x00 1765 ; Peephole 236.a used r5 instead of ar5 0549 2D 1766 add a,r5 054A FD 1767 mov r5,a 1768 ; Peephole 236.g used r7 instead of ar7 054B EF 1769 mov a,r7 1770 ; Peephole 236.b used r6 instead of ar6 054C 3E 1771 addc a,r6 1772 ; genLeftShift 1773 ; genLeftShiftLiteral 1774 ; genlshTwo 1775 ; Peephole 105 removed redundant mov 054D FE 1776 mov r6,a 054E CD 1777 xch a,r5 054F 25 E0 1778 add a,acc 0551 CD 1779 xch a,r5 0552 33 1780 rlc a 0553 FC 1781 mov r4,a 1782 ; Peephole 112.b changed ljmp to sjmp 0554 80 46 1783 sjmp 00159$ 0556 1784 00158$: 1785 ;firm.c:290: (signed int)((((unsigned int)(ADCANLVH((i >> 1) + 1) & 1786 ; genRightShift 1787 ; genSignedRightShift 1788 ; genRightShiftLiteral 1789 ; genrshTwo 0556 8A 06 1790 mov ar6,r2 0558 EB 1791 mov a,r3 0559 A2 E7 1792 mov c,acc.7 055B 13 1793 rrc a 055C CE 1794 xch a,r6 055D 13 1795 rrc a 055E CE 1796 xch a,r6 055F FF 1797 mov r7,a 1798 ; genCast 1799 ; genCast 0560 EE 1800 mov a,r6 0561 33 1801 rlc a 0562 95 E0 1802 subb a,acc 0564 FF 1803 mov r7,a 1804 ; genCast 1805 ; genLeftShift 1806 ; genLeftShiftLiteral 1807 ; genlshOne 0565 EE 1808 mov a,r6 0566 25 E0 1809 add a,acc 1810 ; genPlus 1811 ; Peephole 236.a used r6 instead of ar6 1812 ; Peephole 214 reduced some extra moves 0568 FE 1813 mov r6,a 0569 24 28 1814 add a,#0x28 1815 ; genPlus 056B 24 25 1816 add a,#__adc 056D F5 82 1817 mov dpl,a 1818 ; Peephole 240 use clr instead of addc a,#0 056F E4 1819 clr a 0570 34 1C 1820 addc a,#(__adc >> 8) 0572 F5 83 1821 mov dph,a 1822 ; genPointerGet 1823 ; genFarPointerGet 0574 E0 1824 movx a,@dptr 0575 FF 1825 mov r7,a 1826 ; genAnd 0576 53 07 0F 1827 anl ar7,#0x0F 1828 ; genCast 0579 78 00 1829 mov r0,#0x00 1830 ; genLeftShift 1831 ; genLeftShiftLiteral 1832 ; genlshTwo 057B 8F 00 1833 mov ar0,r7 057D 7F 00 1834 mov r7,#0x00 1835 ;firm.c:292: ADCANLVL((i >> 1) + 1)) << 1); 1836 ; genPlus 057F 74 29 1837 mov a,#0x29 1838 ; Peephole 236.a used r6 instead of ar6 0581 2E 1839 add a,r6 1840 ; genPlus 0582 24 25 1841 add a,#__adc 0584 F5 82 1842 mov dpl,a 1843 ; Peephole 240 use clr instead of addc a,#0 0586 E4 1844 clr a 0587 34 1C 1845 addc a,#(__adc >> 8) 0589 F5 83 1846 mov dph,a 1847 ; genPointerGet 1848 ; genFarPointerGet 058B E0 1849 movx a,@dptr 1850 ; genCast 1851 ; genPlus 1852 ; Peephole 236.g used r6 instead of ar6 1853 ; Peephole 177.d removed redundant move 058C FE 1854 mov r6,a 058D 79 00 1855 mov r1,#0x00 1856 ; Peephole 236.a used r7 instead of ar7 058F 2F 1857 add a,r7 0590 FF 1858 mov r7,a 1859 ; Peephole 236.g used r1 instead of ar1 0591 E9 1860 mov a,r1 1861 ; Peephole 236.b used r0 instead of ar0 0592 38 1862 addc a,r0 1863 ; genLeftShift 1864 ; genLeftShiftLiteral 1865 ; genlshTwo 1866 ; Peephole 177.d removed redundant move 0593 F8 1867 mov r0,a 0594 8F 05 1868 mov ar5,r7 0596 CD 1869 xch a,r5 0597 25 E0 1870 add a,acc 0599 CD 1871 xch a,r5 059A 33 1872 rlc a 059B FC 1873 mov r4,a 059C 1874 00159$: 1875 ;firm.c:295: (signed int)(((unsigned int)(ADCGNDVH((i >> 1) + 1) & 0x0f) 1876 ; genRightShift 1877 ; genSignedRightShift 1878 ; genRightShiftLiteral 1879 ; genrshTwo 059C 8A 06 1880 mov ar6,r2 059E EB 1881 mov a,r3 059F A2 E7 1882 mov c,acc.7 05A1 13 1883 rrc a 05A2 CE 1884 xch a,r6 05A3 13 1885 rrc a 05A4 CE 1886 xch a,r6 05A5 FF 1887 mov r7,a 1888 ; genCast 1889 ; genCast 05A6 EE 1890 mov a,r6 05A7 33 1891 rlc a 05A8 95 E0 1892 subb a,acc 05AA FF 1893 mov r7,a 1894 ; genCast 1895 ; genLeftShift 1896 ; genLeftShiftLiteral 1897 ; genlshOne 05AB EE 1898 mov a,r6 05AC 25 E0 1899 add a,acc 1900 ; genPlus 1901 ; Peephole 236.a used r6 instead of ar6 1902 ; Peephole 214 reduced some extra moves 05AE FE 1903 mov r6,a 05AF 24 08 1904 add a,#0x08 1905 ; genPlus 05B1 24 25 1906 add a,#__adc 05B3 F5 82 1907 mov dpl,a 1908 ; Peephole 240 use clr instead of addc a,#0 05B5 E4 1909 clr a 05B6 34 1C 1910 addc a,#(__adc >> 8) 05B8 F5 83 1911 mov dph,a 1912 ; genPointerGet 1913 ; genFarPointerGet 05BA E0 1914 movx a,@dptr 05BB FF 1915 mov r7,a 1916 ; genAnd 05BC 53 07 0F 1917 anl ar7,#0x0F 1918 ; genCast 05BF 78 00 1919 mov r0,#0x00 1920 ; genLeftShift 1921 ; genLeftShiftLiteral 1922 ; genlshTwo 05C1 8F 00 1923 mov ar0,r7 05C3 7F 00 1924 mov r7,#0x00 1925 ;firm.c:296: << 8) + ADCGNDVL((i >> 1) + 1)); 1926 ; genPlus 05C5 74 09 1927 mov a,#0x09 1928 ; Peephole 236.a used r6 instead of ar6 05C7 2E 1929 add a,r6 1930 ; genPlus 05C8 24 25 1931 add a,#__adc 05CA F5 82 1932 mov dpl,a 1933 ; Peephole 240 use clr instead of addc a,#0 05CC E4 1934 clr a 05CD 34 1C 1935 addc a,#(__adc >> 8) 05CF F5 83 1936 mov dph,a 1937 ; genPointerGet 1938 ; genFarPointerGet 05D1 E0 1939 movx a,@dptr 1940 ; genCast 1941 ; genPlus 1942 ; Peephole 236.g used r6 instead of ar6 1943 ; Peephole 177.d removed redundant move 05D2 FE 1944 mov r6,a 05D3 79 00 1945 mov r1,#0x00 1946 ; Peephole 236.a used r7 instead of ar7 05D5 2F 1947 add a,r7 05D6 FF 1948 mov r7,a 1949 ; Peephole 236.g used r1 instead of ar1 05D7 E9 1950 mov a,r1 1951 ; Peephole 236.b used r0 instead of ar0 05D8 38 1952 addc a,r0 05D9 F8 1953 mov r0,a 1954 ; genMinus 05DA ED 1955 mov a,r5 05DB C3 1956 clr c 1957 ; Peephole 236.l used r7 instead of ar7 05DC 9F 1958 subb a,r7 05DD FD 1959 mov r5,a 05DE EC 1960 mov a,r4 1961 ; Peephole 236.l used r0 instead of ar0 05DF 98 1962 subb a,r0 05E0 FC 1963 mov r4,a 1964 ;firm.c:298: if (v_sense < 1024) { 1965 ; genCmpLt 1966 ; genCmp 05E1 C3 1967 clr c 05E2 ED 1968 mov a,r5 05E3 94 00 1969 subb a,#0x00 05E5 EC 1970 mov a,r4 05E6 64 80 1971 xrl a,#0x80 05E8 94 84 1972 subb a,#0x84 1973 ; genIfxJump 1974 ; Peephole 108 removed ljmp by inverse jump logic 05EA 50 05 1975 jnc 00161$ 05EC 1976 00306$: 1977 ;firm.c:299: EA = 1; 1978 ; genAssign 05EC D2 AF 1979 setb _EA 1980 ;firm.c:300: continue; 05EE 02s06rB6 1981 ljmp 00166$ 05F1 1982 00161$: 1983 ;firm.c:302: v_diff = v_sense - VOLT(i); 1984 ; genLeftShift 1985 ; genLeftShiftLiteral 1986 ; genlshTwo 05F1 8A 06 1987 mov ar6,r2 05F3 EB 1988 mov a,r3 05F4 CE 1989 xch a,r6 05F5 25 E0 1990 add a,acc 05F7 CE 1991 xch a,r6 05F8 33 1992 rlc a 05F9 FF 1993 mov r7,a 1994 ; genPlus 1995 ; Peephole 236.g used r6 instead of ar6 05FA EE 1996 mov a,r6 05FB 24 55 1997 add a,#__volt 05FD F5 82 1998 mov dpl,a 1999 ; Peephole 236.g used r7 instead of ar7 05FF EF 2000 mov a,r7 0600 34 1C 2001 addc a,#(__volt >> 8) 0602 F5 83 2002 mov dph,a 2003 ; genPointerGet 2004 ; genFarPointerGet 0604 E0 2005 movx a,@dptr 0605 FE 2006 mov r6,a 0606 A3 2007 inc dptr 0607 E0 2008 movx a,@dptr 0608 FF 2009 mov r7,a 2010 ; genMinus 0609 ED 2011 mov a,r5 060A C3 2012 clr c 2013 ; Peephole 236.l used r6 instead of ar6 060B 9E 2014 subb a,r6 060C FD 2015 mov r5,a 060D EC 2016 mov a,r4 2017 ; Peephole 236.l used r7 instead of ar7 060E 9F 2018 subb a,r7 060F FC 2019 mov r4,a 2020 ;firm.c:303: if (ABS(v_diff) < (signed int)_vtol[i]) { 2021 ; genCmpGt 2022 ; genCmp 0610 C3 2023 clr c 2024 ; Peephole 181 changed mov to clr 0611 E4 2025 clr a 0612 9D 2026 subb a,r5 2027 ; Peephole 159 avoided xrl during execution 0613 74 80 2028 mov a,#(0x00 ^ 0x80) 0615 8C F0 2029 mov b,r4 0617 63 F0 80 2030 xrl b,#0x80 061A 95 F0 2031 subb a,b 2032 ; genIfxJump 2033 ; Peephole 108 removed ljmp by inverse jump logic 061C 50 06 2034 jnc 00201$ 061E 2035 00307$: 2036 ; genAssign 061E 8D 06 2037 mov ar6,r5 0620 8C 07 2038 mov ar7,r4 2039 ; Peephole 112.b changed ljmp to sjmp 0622 80 07 2040 sjmp 00202$ 0624 2041 00201$: 2042 ; genUminus 0624 C3 2043 clr c 0625 E4 2044 clr a 0626 9D 2045 subb a,r5 0627 FE 2046 mov r6,a 0628 E4 2047 clr a 0629 9C 2048 subb a,r4 062A FF 2049 mov r7,a 062B 2050 00202$: 2051 ; genPlus 2052 ; Peephole 236.g used r2 instead of ar2 062B EA 2053 mov a,r2 062C 24 66 2054 add a,#__vtol 062E F5 82 2055 mov dpl,a 2056 ; Peephole 236.g used r3 instead of ar3 0630 EB 2057 mov a,r3 0631 34 1C 2058 addc a,#(__vtol >> 8) 0633 F5 83 2059 mov dph,a 2060 ; genPointerGet 2061 ; genFarPointerGet 0635 E0 2062 movx a,@dptr 0636 F8 2063 mov r0,a 2064 ; genCast 0637 79 00 2065 mov r1,#0x00 2066 ; genCmpLt 2067 ; genCmp 0639 C3 2068 clr c 063A EE 2069 mov a,r6 063B 98 2070 subb a,r0 063C EF 2071 mov a,r7 063D 64 80 2072 xrl a,#0x80 063F 89 F0 2073 mov b,r1 0641 63 F0 80 2074 xrl b,#0x80 0644 95 F0 2075 subb a,b 2076 ; genIfxJump 2077 ; Peephole 108 removed ljmp by inverse jump logic 0646 50 04 2078 jnc 00163$ 0648 2079 00308$: 2080 ;firm.c:304: EA = 1; 2081 ; genAssign 0648 D2 AF 2082 setb _EA 2083 ;firm.c:305: continue; 2084 ; Peephole 112.b changed ljmp to sjmp 064A 80 6A 2085 sjmp 00166$ 064C 2086 00163$: 2087 ;firm.c:308: v_board = (LOOKUP(RESISTOR(i), i) << 4) + 0x0960; 2088 ; genLeftShift 2089 ; genLeftShiftLiteral 2090 ; genlshTwo 064C 8A 07 2091 mov ar7,r2 064E 7E 00 2092 mov r6,#0x00 2093 ; genPlus 2094 ; Peephole 236.g used r2 instead of ar2 0650 EA 2095 mov a,r2 0651 24 1C 2096 add a,#__resistor 0653 F5 82 2097 mov dpl,a 2098 ; Peephole 236.g used r3 instead of ar3 0655 EB 2099 mov a,r3 0656 34 1C 2100 addc a,#(__resistor >> 8) 0658 F5 83 2101 mov dph,a 2102 ; genPointerGet 2103 ; genFarPointerGet 065A E0 2104 movx a,@dptr 2105 ; genCast 2106 ; genPlus 2107 ; Peephole 236.g used r0 instead of ar0 2108 ; Peephole 177.d removed redundant move 065B F8 2109 mov r0,a 065C 79 00 2110 mov r1,#0x00 2111 ; Peephole 236.a used r6 instead of ar6 065E 2E 2112 add a,r6 065F FE 2113 mov r6,a 2114 ; Peephole 236.g used r1 instead of ar1 0660 E9 2115 mov a,r1 2116 ; Peephole 236.b used r7 instead of ar7 0661 3F 2117 addc a,r7 0662 FF 2118 mov r7,a 2119 ; genPlus 2120 ; genPlus aligned array 0663 8E 82 2121 mov dpl,r6 0665 74 20 2122 mov a,#(__vtable >> 8) 0667 2F 2123 add a,r7 0668 F5 83 2124 mov dph,a 2125 ; genPointerGet 2126 ; genFarPointerGet 066A E0 2127 movx a,@dptr 066B FE 2128 mov r6,a 2129 ; genCast 066C 7F 00 2130 mov r7,#0x00 2131 ; genLeftShift 2132 ; genLeftShiftLiteral 2133 ; genlshTwo 066E EF 2134 mov a,r7 066F C4 2135 swap a 0670 54 F0 2136 anl a,#0xf0 0672 CE 2137 xch a,r6 0673 C4 2138 swap a 0674 CE 2139 xch a,r6 0675 6E 2140 xrl a,r6 0676 CE 2141 xch a,r6 0677 54 F0 2142 anl a,#0xf0 0679 CE 2143 xch a,r6 067A 6E 2144 xrl a,r6 067B FF 2145 mov r7,a 2146 ; genPlus 067C 74 60 2147 mov a,#0x60 2148 ; Peephole 236.a used r6 instead of ar6 067E 2E 2149 add a,r6 067F FE 2150 mov r6,a 0680 74 09 2151 mov a,#0x09 2152 ; Peephole 236.b used r7 instead of ar7 0682 3F 2153 addc a,r7 0683 FF 2154 mov r7,a 2155 ;firm.c:309: v_board -= v_diff; 2156 ; genMinus 0684 EE 2157 mov a,r6 0685 C3 2158 clr c 2159 ; Peephole 236.l used r5 instead of ar5 0686 9D 2160 subb a,r5 0687 FE 2161 mov r6,a 0688 EF 2162 mov a,r7 2163 ; Peephole 236.l used r4 instead of ar4 0689 9C 2164 subb a,r4 068A FF 2165 mov r7,a 2166 ;firm.c:310: RESISTOR(i) = rev_lookup(v_board, i); 2167 ; genPlus 2168 ; Peephole 236.g used r2 instead of ar2 068B EA 2169 mov a,r2 068C 24 1C 2170 add a,#__resistor 068E FC 2171 mov r4,a 2172 ; Peephole 236.g used r3 instead of ar3 068F EB 2173 mov a,r3 0690 34 1C 2174 addc a,#(__resistor >> 8) 0692 FD 2175 mov r5,a 2176 ; genCast 0693 8A*00 2177 mov _rev_lookup_PARM_2,r2 2178 ; genCall 0695 8E 82 2179 mov dpl,r6 0697 8F 83 2180 mov dph,r7 0699 C0 02 2181 push ar2 069B C0 03 2182 push ar3 069D C0 04 2183 push ar4 069F C0 05 2184 push ar5 06A1 12s00r00 2185 lcall _rev_lookup 06A4 AE 82 2186 mov r6,dpl 06A6 D0 05 2187 pop ar5 06A8 D0 04 2188 pop ar4 06AA D0 03 2189 pop ar3 06AC D0 02 2190 pop ar2 2191 ; genPointerSet 2192 ; genFarPointerSet 06AE 8C 82 2193 mov dpl,r4 06B0 8D 83 2194 mov dph,r5 06B2 EE 2195 mov a,r6 06B3 F0 2196 movx @dptr,a 2197 ;firm.c:311: EA = 1; 2198 ; genAssign 06B4 D2 AF 2199 setb _EA 06B6 2200 00166$: 2201 ;firm.c:273: for (i = 0; i < 8; ++i) { 2202 ; genPlus 2203 ; genPlusIncr 06B6 0A 2204 inc r2 06B7 BA 00 01 2205 cjne r2,#0x00,00309$ 06BA 0B 2206 inc r3 06BB 2207 00309$: 06BB 02s04rD7 2208 ljmp 00164$ 06BE 2209 00199$: 06BE 22 2210 ret 2211 .area CSEG (CODE) 2212 .area XINIT (CODE)