;-------------------------------------------------------- ; File Created by SDCC : FreeWare ANSI-C Compiler ; Version 2.4.0 Wed Mar 31 11:35:44 2004 ;-------------------------------------------------------- .module firm .optsdcc -mmcs51 --model-small ;-------------------------------------------------------- ; Public variables in this module ;-------------------------------------------------------- .globl _main .globl __vtable .globl __vtol .globl __firm_regulate .globl __volt .globl __adc .globl __power_fail .globl __resistor .globl __buf .globl _USBPAIR .globl _ISOCTL .globl _AUTODATA .globl _AUTOPTRL .globl _AUTOPTRH .globl _OUT07VAL .globl _IN07VAL .globl _I2DAT .globl _I2CS .globl _SETUPDAT .globl _SUDPTRL .globl _SUDPTRH .globl _TOGCTL .globl _USBCS .globl _USBBAV .globl _USBIEN .globl _USBIRQ .globl _OUT07IEN .globl _IN07IEN .globl _OUT07IRQ .globl _IN07IRQ .globl _PORTCCFG .globl _PORTBCFG .globl _PORTACFG .globl _PINSC .globl _OUTC .globl _OEC .globl _OUTB .globl _OEB .globl _OUTA .globl _OEA .globl _OUT6CS .globl _OUT6BC .globl _OUT6BUF .globl _IN6CS .globl _IN6BC .globl _IN6BUF .globl _OUT5CS .globl _OUT5BC .globl _OUT5BUF .globl _IN5CS .globl _IN5BC .globl _IN5BUF .globl _OUT4CS .globl _OUT4BC .globl _OUT4BUF .globl _IN4CS .globl _IN4BC .globl _IN4BUF .globl _OUT3BUF .globl _OUT3CS .globl _OUT3BC .globl _IN3CS .globl _IN3BC .globl _IN3BUF .globl _OUT2BUF .globl _OUT2CS .globl _OUT2BC .globl _IN2CS .globl _IN2BC .globl _IN2BUF .globl _OUT1BC .globl _OUT1CS .globl _OUT1BUF .globl _IN1BC .globl _IN1BUF .globl _IN1CS .globl _OUT0BC .globl _OUT0BUF .globl _IN0BC .globl _IN0BUF .globl _EP0CS ;-------------------------------------------------------- ; special function registers ;-------------------------------------------------------- _P0 = 0x0080 _SP = 0x0081 _DPL = 0x0082 _DPH = 0x0083 _PCON = 0x0087 _TCON = 0x0088 _TMOD = 0x0089 _TL0 = 0x008a _TL1 = 0x008b _TH0 = 0x008c _TH1 = 0x008d _P1 = 0x0090 _SCON = 0x0098 _SBUF = 0x0099 _P2 = 0x00a0 _IE = 0x00a8 _P3 = 0x00b0 _IP = 0x00b8 _PSW = 0x00d0 _ACC = 0x00e0 _B = 0x00f0 _EXIF = 0x0091 _EIE = 0x00e8 _SCON0 = 0x0098 _SCON1 = 0x00c0 _SBUF0 = 0x0099 _SBUF1 = 0x00c1 _CKCON = 0x008e _T2CON = 0x00c8 _RCAP2L = 0x00ca _RCAP2H = 0x00cb _TL2 = 0x00cc _TH2 = 0x00cd ;-------------------------------------------------------- ; special function bits ;-------------------------------------------------------- _P0_0 = 0x0080 _P0_1 = 0x0081 _P0_2 = 0x0082 _P0_3 = 0x0083 _P0_4 = 0x0084 _P0_5 = 0x0085 _P0_6 = 0x0086 _P0_7 = 0x0087 _IT0 = 0x0088 _IE0 = 0x0089 _IT1 = 0x008a _IE1 = 0x008b _TR0 = 0x008c _TF0 = 0x008d _TR1 = 0x008e _TF1 = 0x008f _P1_0 = 0x0090 _P1_1 = 0x0091 _P1_2 = 0x0092 _P1_3 = 0x0093 _P1_4 = 0x0094 _P1_5 = 0x0095 _P1_6 = 0x0096 _P1_7 = 0x0097 _RI = 0x0098 _TI = 0x0099 _RB8 = 0x009a _TB8 = 0x009b _REN = 0x009c _SM2 = 0x009d _SM1 = 0x009e _SM0 = 0x009f _P2_0 = 0x00a0 _P2_1 = 0x00a1 _P2_2 = 0x00a2 _P2_3 = 0x00a3 _P2_4 = 0x00a4 _P2_5 = 0x00a5 _P2_6 = 0x00a6 _P2_7 = 0x00a7 _EX0 = 0x00a8 _ET0 = 0x00a9 _EX1 = 0x00aa _ET1 = 0x00ab _ES = 0x00ac _EA = 0x00af _P3_0 = 0x00b0 _P3_1 = 0x00b1 _P3_2 = 0x00b2 _P3_3 = 0x00b3 _P3_4 = 0x00b4 _P3_5 = 0x00b5 _P3_6 = 0x00b6 _P3_7 = 0x00b7 _RXD = 0x00b0 _TXD = 0x00b1 _INT0 = 0x00b2 _INT1 = 0x00b3 _T0 = 0x00b4 _T1 = 0x00b5 _WR = 0x00b6 _RD = 0x00b7 _PX0 = 0x00b8 _PT0 = 0x00b9 _PX1 = 0x00ba _PT1 = 0x00bb _PS = 0x00bc _P = 0x00d0 _F1 = 0x00d1 _OV = 0x00d2 _RS0 = 0x00d3 _RS1 = 0x00d4 _F0 = 0x00d5 _AC = 0x00d6 _CY = 0x00d7 _EUSB = 0x00e8 _ES0 = 0x00ac _ES1 = 0x00ae _RI_0 = 0x0098 _TI_0 = 0x0099 _RI_1 = 0x00c0 _TI_1 = 0x00c1 _TR2 = 0x00ca _TF2 = 0x00cf _ET2 = 0x00ad ;-------------------------------------------------------- ; overlayable register banks ;-------------------------------------------------------- .area REG_BANK_0 (REL,OVR,DATA) .ds 8 .area REG_BANK_1 (REL,OVR,DATA) .ds 8 ;-------------------------------------------------------- ; internal ram data ;-------------------------------------------------------- .area DSEG (DATA) ;-------------------------------------------------------- ; overlayable items in internal ram ;-------------------------------------------------------- .area OSEG (OVR,DATA) ;-------------------------------------------------------- ; Stack segment in internal ram ;-------------------------------------------------------- .area SSEG (DATA) __start__stack: .ds 1 ;-------------------------------------------------------- ; indirectly addressable internal ram data ;-------------------------------------------------------- .area ISEG (DATA) ;-------------------------------------------------------- ; bit data ;-------------------------------------------------------- .area BSEG (BIT) ;-------------------------------------------------------- ; external ram data ;-------------------------------------------------------- .area XSEG (XDATA) _EP0CS = 0x7fb4 _IN0BUF = 0x7f00 _IN0BC = 0x7fb5 _OUT0BUF = 0x7ec0 _OUT0BC = 0x7fc5 _IN1CS = 0x7fb6 _IN1BUF = 0x7e80 _IN1BC = 0x7fb7 _OUT1BUF = 0x7e40 _OUT1CS = 0x7fc6 _OUT1BC = 0x7fc7 _IN2BUF = 0x7e00 _IN2BC = 0x7fb9 _IN2CS = 0x7fb8 _OUT2BC = 0x7fc9 _OUT2CS = 0x7fc8 _OUT2BUF = 0x7dc0 _IN3BUF = 0x7d80 _IN3BC = 0x7fbb _IN3CS = 0x7fba _OUT3BC = 0x7fcb _OUT3CS = 0x7fca _OUT3BUF = 0x7d40 _IN4BUF = 0x7d00 _IN4BC = 0x7fbd _IN4CS = 0x7fbc _OUT4BUF = 0x7cc0 _OUT4BC = 0x7fcd _OUT4CS = 0x7fcc _IN5BUF = 0x7c80 _IN5BC = 0x7fbf _IN5CS = 0x7fbe _OUT5BUF = 0x7c40 _OUT5BC = 0x7fcf _OUT5CS = 0x7fce _IN6BUF = 0x7c00 _IN6BC = 0x7fc1 _IN6CS = 0x7fc0 _OUT6BUF = 0x7bc0 _OUT6BC = 0x7fd1 _OUT6CS = 0x7fd0 _OEA = 0x7f9c _OUTA = 0x7f96 _OEB = 0x7f9d _OUTB = 0x7f97 _OEC = 0x7f9e _OUTC = 0x7f98 _PINSC = 0x7f9b _PORTACFG = 0x7f93 _PORTBCFG = 0x7f94 _PORTCCFG = 0x7f95 _IN07IRQ = 0x7fa9 _OUT07IRQ = 0x7faa _IN07IEN = 0x7fac _OUT07IEN = 0x7fad _USBIRQ = 0x7fab _USBIEN = 0x7fae _USBBAV = 0x7faf _USBCS = 0x7fd6 _TOGCTL = 0x7fd7 _SUDPTRH = 0x7fd4 _SUDPTRL = 0x7fd5 _SETUPDAT = 0x7fe8 _I2CS = 0x7fa5 _I2DAT = 0x7fa6 _IN07VAL = 0x7fde _OUT07VAL = 0x7fdf _AUTOPTRH = 0x7fe3 _AUTOPTRL = 0x7fe4 _AUTODATA = 0x7fe5 _ISOCTL = 0x7fa1 _USBPAIR = 0x7fdd __buf = 0x1c04 __resistor = 0x1c1c __power_fail = 0x1c24 __adc = 0x1c25 __volt = 0x1c55 __firm_regulate = 0x1c65 __vtol = 0x1c66 __vtable = 0x2000 ;-------------------------------------------------------- ; external initialized ram data ;-------------------------------------------------------- .area XISEG (XDATA) ;-------------------------------------------------------- ; interrupt vector ;-------------------------------------------------------- .area CSEG (CODE) __interrupt_vect: ljmp __sdcc_gsinit_startup reti .ds 7 reti .ds 7 reti .ds 7 reti .ds 7 reti .ds 7 reti .ds 7 reti .ds 7 reti .ds 7 ljmp _usb_isr ;-------------------------------------------------------- ; global & static initialisations ;-------------------------------------------------------- .area GSINIT (CODE) .area GSFINAL (CODE) .area GSINIT (CODE) __sdcc_gsinit_startup: mov sp,#__start__stack - 1 lcall __sdcc_external_startup mov a,dpl jz __sdcc_init_data ljmp __sdcc_program_startup __sdcc_init_data: ; _mcs51_genXINIT() start mov r1,#l_XINIT mov a,r1 orl a,#(l_XINIT >> 8) jz 00003$ mov r2,#((l_XINIT+255) >> 8) mov dptr,#s_XINIT mov r0,#s_XISEG mov p2,#(s_XISEG >> 8) 00001$: clr a movc a,@a+dptr movx @r0,a inc dptr inc r0 cjne r0,#0,00002$ inc p2 00002$: djnz r1,00001$ djnz r2,00001$ mov p2,#0xFF 00003$: ; _mcs51_genXINIT() end ; _mcs51_genRAMCLEAR() start mov r0,#l_XSEG mov a,r0 orl a,#(l_XSEG >> 8) jz 00005$ mov r1,#((l_XSEG + 255) >> 8) mov dptr,#s_XSEG clr a 00004$: movx @dptr,a inc dptr djnz r0,00004$ djnz r1,00004$ 00005$: mov @r0,a djnz r0,00005$ ; _mcs51_genRAMCLEAR() end .area GSFINAL (CODE) ljmp __sdcc_program_startup ;-------------------------------------------------------- ; Home ;-------------------------------------------------------- .area HOME (CODE) .area CSEG (CODE) ;-------------------------------------------------------- ; code ;-------------------------------------------------------- .area CSEG (CODE) __sdcc_program_startup: lcall _main ; return from main will lock up sjmp . ;------------------------------------------------------------ ;Allocation info for local variables in function 'main' ;------------------------------------------------------------ ;count Allocated to registers ;i Allocated to registers ;c Allocated to registers ;c Allocated to registers ;c Allocated to registers ;c Allocated to registers ;c Allocated to registers ;c Allocated to registers ;i Allocated to registers ;c Allocated to registers ;c Allocated to registers ;c Allocated to registers ;c Allocated to registers ;v_sense Allocated to registers r5 r4 ;v_diff Allocated to registers r5 r4 ;v_board Allocated to registers r6 r7 ;------------------------------------------------------------ ;firm.c:140: void main() ; ----------------------------------------- ; function main ; ----------------------------------------- _main: ar2 = 0x02 ar3 = 0x03 ar4 = 0x04 ar5 = 0x05 ar6 = 0x06 ar7 = 0x07 ar0 = 0x00 ar1 = 0x01 ;firm.c:146: PORTACFG = 0x0; /* is a port */ ; genAssign mov dptr,#_PORTACFG ; Peephole 181 changed mov to clr ;firm.c:147: OUTA = 0x0; /* initialized to 0 */ ; genAssign ; Peephole 181 changed mov to clr ; Peephole 219 removed redundant clear clr a movx @dptr,a mov dptr,#_OUTA movx @dptr,a ;firm.c:148: OEA = 0xff; /* and used for output */ ; genAssign mov dptr,#_OEA mov a,#0xFF movx @dptr,a ;firm.c:151: PORTBCFG = 0x0; /* is a port */ ; genAssign mov dptr,#_PORTBCFG ; Peephole 181 changed mov to clr clr a movx @dptr,a ;firm.c:152: OUTB = 0x01; /* initialized to 1 (bit 0 is the NRESET line) */ ; genAssign mov dptr,#_OUTB mov a,#0x01 movx @dptr,a ;firm.c:153: OEB = 0xc9; /* and used partly for input, partly for output */ ; genAssign mov dptr,#_OEB mov a,#0xC9 movx @dptr,a ;firm.c:156: PORTCCFG = 0x03; ; genAssign mov dptr,#_PORTCCFG mov a,#0x03 movx @dptr,a ;firm.c:157: OUTC |= 0x08; /* LED is off to begin with */ ; genAssign ; genOr ; Peephole 248.a optimized or to xdata mov dptr,#_OUTC movx a,@dptr mov r2,a orl a,#0x08 movx @dptr,a ;firm.c:158: OEC |= 0x09; ; genAssign ; genOr ; Peephole 248.a optimized or to xdata mov dptr,#_OEC movx a,@dptr mov r2,a orl a,#0x09 movx @dptr,a ;firm.c:160: ISOCTL = 0x01; /* no isochronous endpoints */ ; genAssign mov dptr,#_ISOCTL mov a,#0x01 movx @dptr,a ;firm.c:162: for (i = 0; i < 4; ++i) { ; genAssign mov r2,#0x00 00171$: ; genCmpLt ; genCmp cjne r2,#0x04,00256$ 00256$: ; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00206$ 00257$: ;firm.c:163: RESISTOR(2 * i) = 0xa6; /* analog supplies at 1.8 V */ ; genLeftShift ; genLeftShiftLiteral ; genlshOne mov a,r2 add a,acc ; genPlus ; Peephole 177.b removed redundant mov mov r3,a add a,#__resistor mov dpl,a ; Peephole 181 changed mov to clr clr a addc a,#(__resistor >> 8) mov dph,a ; genPointerSet ; genFarPointerSet mov a,#0xA6 movx @dptr,a ;firm.c:162: for (i = 0; i < 4; ++i) { ; genPlus ; genPlusIncr inc r2 ;firm.c:166: for (i = 0; i < 4; ++i) { ; Peephole 112.b changed ljmp to sjmp sjmp 00171$ 00206$: ; genAssign mov r2,#0x00 00175$: ; genCmpLt ; genCmp cjne r2,#0x04,00258$ 00258$: ; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00178$ 00259$: ;firm.c:167: RESISTOR(2 * i + 1) = 0x85; /* digital supplies at 2.0 V */ ; genLeftShift ; genLeftShiftLiteral ; genlshOne mov a,r2 add a,acc ; genPlus ; genPlusIncr ; Peephole 236.a used r3 instead of ar3 ; Peephole 214 reduced some extra moves mov r3,a add a,#0x01 ; genPlus add a,#__resistor mov dpl,a ; Peephole 240 use clr instead of addc a,#0 clr a addc a,#(__resistor >> 8) mov dph,a ; genPointerSet ; genFarPointerSet mov a,#0x85 movx @dptr,a ;firm.c:166: for (i = 0; i < 4; ++i) { ; genPlus ; genPlusIncr inc r2 ; Peephole 112.b changed ljmp to sjmp sjmp 00175$ 00178$: ;firm.c:170: _firm_regulate = 0xff; ; genAssign mov dptr,#__firm_regulate mov a,#0xFF movx @dptr,a ;firm.c:172: for (i = 0; i < 8; ++i) { ; genAssign mov r2,#0x00 00179$: ; genCmpLt ; genCmp cjne r2,#0x08,00260$ 00260$: ; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00182$ 00261$: ;firm.c:173: VOLT(i) = 0; ; genMult ; genMultOneByte mov a,r2 mov b,#0x02 mul ab ; genPlus add a,#__volt mov dpl,a mov a,b addc a,#(__volt >> 8) mov dph,a ; genPointerSet ; genFarPointerSet ; Peephole 101 removed redundant mov ; Peephole 181 changed mov to clr clr a movx @dptr,a inc dptr movx @dptr,a ;firm.c:174: _vtol[i] = 0x40; ; genPlus ; Peephole 236.g used r2 instead of ar2 mov a,r2 add a,#__vtol mov dpl,a ; Peephole 181 changed mov to clr clr a addc a,#(__vtol >> 8) mov dph,a ; genPointerSet ; genFarPointerSet mov a,#0x40 movx @dptr,a ;firm.c:172: for (i = 0; i < 8; ++i) { ; genPlus ; genPlusIncr inc r2 ; Peephole 112.b changed ljmp to sjmp sjmp 00179$ 00182$: ;firm.c:180: _power_fail = 0; ; genAssign mov dptr,#__power_fail ; Peephole 181 changed mov to clr clr a movx @dptr,a ;firm.c:182: setup_usb_int(); ; genAssign clr _EA ; genAssign mov dptr,#_USBPAIR ; Peephole 181 changed mov to clr ; genAssign ; Peephole 181 changed mov to clr ; Peephole 219 removed redundant clear clr a movx @dptr,a mov dptr,#_USBBAV movx @dptr,a ; genAssign mov dptr,#_USBIEN mov a,#0x11 movx @dptr,a ; genAssign mov dptr,#_IN07IEN mov a,#0x01 movx @dptr,a ; genAssign mov dptr,#_OUT07IEN mov a,#0x1F movx @dptr,a ; genAssign mov dptr,#_IN07VAL mov a,#0x1F movx @dptr,a ; genAssign mov dptr,#_OUT07VAL mov a,#0x1F movx @dptr,a ; genAssign setb _EUSB ; genAssign setb _EA ;firm.c:183: setup_timer2_int(); ; genAssign clr _ET2 ; genAssign clr _TF2 ;firm.c:184: setup_v_table(); ; genPointerSet ; genFarPointerSet mov dptr,#__buf mov a,#0x27 movx @dptr,a ; genPointerSet ; genFarPointerSet mov dptr,#(__buf + 0x0001) mov a,#0x20 movx @dptr,a ; genAddrOf mov _i2c_write_PARM_2,#__buf mov (_i2c_write_PARM_2 + 1),#(__buf >> 8) ; genAssign clr a mov (_i2c_write_PARM_3 + 1),a mov _i2c_write_PARM_3,#0x02 ; genCall mov dpl,#0x51 lcall _i2c_write mov r2,dpl mov r3,dph ; genCmpEq cjne r2,#0x02,00262$ cjne r3,#0x00,00262$ ; Peephole 112.b changed ljmp to sjmp sjmp 00210$ 00262$: ; genAssign ; genAnd ; Peephole 248.b optimized and to xdata mov dptr,#_OUTC movx a,@dptr mov r2,a anl a,#0xF7 movx @dptr,a 00210$: ; genAssign mov r2,#0xFF mov r3,#0x7F 00103$: ; genAssign mov ar4,r2 mov ar5,r3 ; genMinus ; genMinusDec dec r2 cjne r2,#0xff,00263$ dec r3 00263$: ; genIfx mov a,r4 orl a,r5 ; genIfxJump ; Peephole 109 removed ljmp by inverse jump logic jnz 00103$ 00264$: ; genAssign ; genOr ; Peephole 248.a optimized or to xdata mov dptr,#_OUTC movx a,@dptr mov r2,a orl a,#0x08 movx @dptr,a ; genAddrOf mov _i2c_read_PARM_2,#__vtable mov (_i2c_read_PARM_2 + 1),#(__vtable >> 8) ; genAssign mov _i2c_read_PARM_3,#0x00 mov (_i2c_read_PARM_3 + 1),#0x08 ; genCall mov dpl,#0x51 lcall _i2c_read mov r2,dpl mov r3,dph ; genCmpEq cjne r2,#0x00,00265$ cjne r3,#0x08,00265$ ; Peephole 112.b changed ljmp to sjmp sjmp 00213$ 00265$: ; genAssign ; genAnd ; Peephole 248.b optimized and to xdata mov dptr,#_OUTC movx a,@dptr mov r2,a anl a,#0xF7 movx @dptr,a 00213$: ; genAssign mov r2,#0xFF mov r3,#0x7F 00108$: ; genAssign mov ar4,r2 mov ar5,r3 ; genMinus ; genMinusDec dec r2 cjne r2,#0xff,00266$ dec r3 00266$: ; genIfx mov a,r4 orl a,r5 ; genIfxJump ; Peephole 109 removed ljmp by inverse jump logic jnz 00108$ 00267$: ; genAssign ; genOr ; Peephole 248.a optimized or to xdata mov dptr,#_OUTC movx a,@dptr mov r2,a orl a,#0x08 movx @dptr,a ;firm.c:187: EIE = 0xe1; ; genAssign mov _EIE,#0xE1 ;firm.c:190: ES1 = 0; ; genAssign clr _ES1 ;firm.c:191: ES0 = 0; ; genAssign clr _ES0 ;firm.c:195: BUF(0) = 0xd2; /* 1101 0010 */ ; genPointerSet ; genFarPointerSet mov dptr,#__buf mov a,#0xD2 movx @dptr,a ;firm.c:196: BUF(1) = 0x17; /* 0001 0111 */ ; genPointerSet ; genFarPointerSet mov dptr,#(__buf + 0x0001) mov a,#0x17 movx @dptr,a ;firm.c:197: if (i2c_write(ADC1ADDR, _buf, 2) != 2) { ; genAddrOf mov _i2c_write_PARM_2,#__buf mov (_i2c_write_PARM_2 + 1),#(__buf >> 8) ; genAssign clr a mov (_i2c_write_PARM_3 + 1),a mov _i2c_write_PARM_3,#0x02 ; genCall mov dpl,#0x31 lcall _i2c_write mov r2,dpl mov r3,dph ; genCmpEq cjne r2,#0x02,00268$ cjne r3,#0x00,00268$ ; Peephole 112.b changed ljmp to sjmp sjmp 00115$ 00268$: ;firm.c:198: ERROR(EI2CNACK, ADC1ADDR); ; genAssign ; genAnd ; Peephole 248.b optimized and to xdata mov dptr,#_OUTC movx a,@dptr mov r2,a anl a,#0xF7 movx @dptr,a ; genAssign mov r2,#0xFF mov r3,#0x7F 00111$: ; genAssign mov ar4,r2 mov ar5,r3 ; genMinus ; genMinusDec dec r2 cjne r2,#0xff,00269$ dec r3 00269$: ; genIfx mov a,r4 orl a,r5 ; genIfxJump ; Peephole 109 removed ljmp by inverse jump logic jnz 00111$ 00270$: ; genAssign ; genOr ; Peephole 248.a optimized or to xdata mov dptr,#_OUTC movx a,@dptr mov r2,a orl a,#0x08 movx @dptr,a 00115$: ;firm.c:200: BUF(0) = 0xd2; /* 1101 0010 */ ; genPointerSet ; genFarPointerSet mov dptr,#__buf mov a,#0xD2 movx @dptr,a ;firm.c:201: BUF(1) = 0x17; /* 0001 0111 */ ; genPointerSet ; genFarPointerSet mov dptr,#(__buf + 0x0001) mov a,#0x17 movx @dptr,a ;firm.c:202: if (i2c_write(ADC2ADDR, _buf, 2) != 2) { ; genAddrOf mov _i2c_write_PARM_2,#__buf mov (_i2c_write_PARM_2 + 1),#(__buf >> 8) ; genAssign clr a mov (_i2c_write_PARM_3 + 1),a mov _i2c_write_PARM_3,#0x02 ; genCall mov dpl,#0x33 lcall _i2c_write mov r2,dpl mov r3,dph ; genCmpEq cjne r2,#0x02,00271$ cjne r3,#0x00,00271$ ; Peephole 112.b changed ljmp to sjmp sjmp 00228$ 00271$: ;firm.c:203: ERROR(EI2CNACK, ADC2ADDR); ; genAssign ; genAnd ; Peephole 248.b optimized and to xdata mov dptr,#_OUTC movx a,@dptr mov r2,a anl a,#0xF7 movx @dptr,a ; genAssign mov r2,#0xFF mov r3,#0x7F 00116$: ; genAssign mov ar4,r2 mov ar5,r3 ; genMinus ; genMinusDec dec r2 cjne r2,#0xff,00272$ dec r3 00272$: ; genIfx mov a,r4 orl a,r5 ; genIfxJump ; Peephole 109 removed ljmp by inverse jump logic jnz 00116$ 00273$: ; genAssign ; genOr ; Peephole 248.a optimized or to xdata mov dptr,#_OUTC movx a,@dptr mov r2,a orl a,#0x08 movx @dptr,a ;firm.c:206: for (i = 0; i < 4; ++i) { 00228$: ; genAssign mov r2,#0x00 00183$: ; genCmpLt ; genCmp cjne r2,#0x04,00274$ 00274$: ; genIfxJump jc 00275$ ljmp 00169$ 00275$: ;firm.c:208: BUF(0) = 0x00; ; genPointerSet ; genFarPointerSet mov dptr,#__buf ; Peephole 181 changed mov to clr clr a movx @dptr,a ;firm.c:209: BUF(1) = 0x10; ; genPointerSet ; genFarPointerSet mov dptr,#(__buf + 0x0001) mov a,#0x10 movx @dptr,a ;firm.c:210: if (i2c_write(RDACADDR(i), _buf, 2) != 2) { ; genPlus mov a,#0x2C ; Peephole 236.a used r2 instead of ar2 add a,r2 mov r3,a ; genAddrOf mov _i2c_write_PARM_2,#__buf mov (_i2c_write_PARM_2 + 1),#(__buf >> 8) ; genAssign clr a mov (_i2c_write_PARM_3 + 1),a mov _i2c_write_PARM_3,#0x02 ; genCall mov dpl,r3 push ar2 lcall _i2c_write mov r3,dpl mov r4,dph pop ar2 ; genCmpEq cjne r3,#0x02,00276$ cjne r4,#0x00,00276$ ; Peephole 112.b changed ljmp to sjmp sjmp 00125$ 00276$: ;firm.c:211: ERROR(EI2CNACK, RDACADDR(i)); ; genAssign ; genAnd ; Peephole 248.b optimized and to xdata mov dptr,#_OUTC movx a,@dptr mov r3,a anl a,#0xF7 movx @dptr,a ; genAssign mov r3,#0xFF mov r4,#0x7F 00121$: ; genAssign mov ar5,r3 mov ar6,r4 ; genMinus ; genMinusDec dec r3 cjne r3,#0xff,00277$ dec r4 00277$: ; genIfx mov a,r5 orl a,r6 ; genIfxJump ; Peephole 109 removed ljmp by inverse jump logic jnz 00121$ 00278$: ; genAssign ; genOr ; Peephole 248.a optimized or to xdata mov dptr,#_OUTC movx a,@dptr mov r3,a orl a,#0x08 movx @dptr,a 00125$: ;firm.c:214: BUF(0) = 0x80; ; genPointerSet ; genFarPointerSet mov dptr,#__buf mov a,#0x80 movx @dptr,a ;firm.c:215: BUF(1) = 0x10; ; genPointerSet ; genFarPointerSet mov dptr,#(__buf + 0x0001) mov a,#0x10 movx @dptr,a ;firm.c:216: if (i2c_write(RDACADDR(i), _buf, 2) != 2) { ; genPlus mov a,#0x2C ; Peephole 236.a used r2 instead of ar2 add a,r2 mov r3,a ; genAddrOf mov _i2c_write_PARM_2,#__buf mov (_i2c_write_PARM_2 + 1),#(__buf >> 8) ; genAssign clr a mov (_i2c_write_PARM_3 + 1),a mov _i2c_write_PARM_3,#0x02 ; genCall mov dpl,r3 push ar2 lcall _i2c_write mov r3,dpl mov r4,dph pop ar2 ; genCmpEq cjne r3,#0x02,00279$ cjne r4,#0x00,00279$ ; Peephole 112.b changed ljmp to sjmp sjmp 00185$ 00279$: ;firm.c:217: ERROR(EI2CNACK, RDACADDR(i)); ; genAssign ; genAnd ; Peephole 248.b optimized and to xdata mov dptr,#_OUTC movx a,@dptr mov r3,a anl a,#0xF7 movx @dptr,a ; genAssign mov r3,#0xFF mov r4,#0x7F 00126$: ; genAssign mov ar5,r3 mov ar6,r4 ; genMinus ; genMinusDec dec r3 cjne r3,#0xff,00280$ dec r4 00280$: ; genIfx mov a,r5 orl a,r6 ; genIfxJump ; Peephole 109 removed ljmp by inverse jump logic jnz 00126$ 00281$: ; genAssign ; genOr ; Peephole 248.a optimized or to xdata mov dptr,#_OUTC movx a,@dptr mov r3,a orl a,#0x08 movx @dptr,a 00185$: ;firm.c:206: for (i = 0; i < 4; ++i) { ; genPlus ; genPlusIncr inc r2 ljmp 00183$ ;firm.c:222: while (1) { 00169$: ;firm.c:231: if (_power_fail) ; genAssign mov dptr,#__power_fail movx a,@dptr ; genIfx ; Peephole 105 removed redundant mov mov r2,a ; genIfxJump ; Peephole 109 removed ljmp by inverse jump logic jnz 00169$ 00282$: ;firm.c:236: for (i = 0; i < 4; ++i) { ; genAssign mov r2,#0x00 mov r3,#0x00 00187$: ; genCmpLt ; genCmp clr c mov a,r2 subb a,#0x04 mov a,r3 xrl a,#0x80 subb a,#0x80 ; genIfxJump jc 00283$ ljmp 00190$ 00283$: ;firm.c:238: BUF(0) = 0x00; ; genPointerSet ; genFarPointerSet mov dptr,#__buf ; Peephole 181 changed mov to clr clr a movx @dptr,a ;firm.c:239: BUF(1) = RESISTOR(2 * i); ; genCast mov ar4,r2 ; genLeftShift ; genLeftShiftLiteral ; genlshOne mov a,r4 add a,acc ; genPlus ; Peephole 177.b removed redundant mov mov r5,a add a,#__resistor mov dpl,a ; Peephole 181 changed mov to clr clr a addc a,#(__resistor >> 8) mov dph,a ; genPointerGet ; genFarPointerGet movx a,@dptr ; genPointerSet ; genFarPointerSet ; Peephole 100 removed redundant mov mov r5,a mov dptr,#(__buf + 0x0001) movx @dptr,a ;firm.c:240: if (i2c_write(RDACADDR(i), _buf, 2) != 2) { ; genPlus mov a,#0x2C ; Peephole 236.a used r4 instead of ar4 add a,r4 mov r4,a ; genAddrOf mov _i2c_write_PARM_2,#__buf mov (_i2c_write_PARM_2 + 1),#(__buf >> 8) ; genAssign clr a mov (_i2c_write_PARM_3 + 1),a mov _i2c_write_PARM_3,#0x02 ; genCall mov dpl,r4 push ar2 push ar3 lcall _i2c_write mov r4,dpl mov r5,dph pop ar3 pop ar2 ; genCmpEq cjne r4,#0x02,00284$ cjne r5,#0x00,00284$ ; Peephole 112.b changed ljmp to sjmp sjmp 00137$ 00284$: ;firm.c:241: ERROR(EI2CNACK, RDACADDR(i)); ; genAssign ; genAnd ; Peephole 248.b optimized and to xdata mov dptr,#_OUTC movx a,@dptr mov r4,a anl a,#0xF7 movx @dptr,a ; genAssign mov r4,#0xFF mov r5,#0x7F 00133$: ; genAssign mov ar6,r4 mov ar7,r5 ; genMinus ; genMinusDec dec r4 cjne r4,#0xff,00285$ dec r5 00285$: ; genIfx mov a,r6 orl a,r7 ; genIfxJump ; Peephole 109 removed ljmp by inverse jump logic jnz 00133$ 00286$: ; genAssign ; genOr ; Peephole 248.a optimized or to xdata mov dptr,#_OUTC movx a,@dptr mov r4,a orl a,#0x08 movx @dptr,a 00137$: ;firm.c:244: BUF(0) = 0x80; ; genPointerSet ; genFarPointerSet mov dptr,#__buf mov a,#0x80 movx @dptr,a ;firm.c:245: BUF(1) = RESISTOR(2 * i + 1); ; genCast mov ar4,r2 ; genLeftShift ; genLeftShiftLiteral ; genlshOne mov a,r4 add a,acc ; genPlus ; genPlusIncr ; Peephole 236.a used r5 instead of ar5 ; Peephole 214 reduced some extra moves mov r5,a add a,#0x01 ; genPlus add a,#__resistor mov dpl,a ; Peephole 240 use clr instead of addc a,#0 clr a addc a,#(__resistor >> 8) mov dph,a ; genPointerGet ; genFarPointerGet movx a,@dptr ; genPointerSet ; genFarPointerSet ; Peephole 100 removed redundant mov mov r5,a mov dptr,#(__buf + 0x0001) movx @dptr,a ;firm.c:246: if (i2c_write(RDACADDR(i), _buf, 2) != 2) { ; genPlus mov a,#0x2C ; Peephole 236.a used r4 instead of ar4 add a,r4 mov r4,a ; genAddrOf mov _i2c_write_PARM_2,#__buf mov (_i2c_write_PARM_2 + 1),#(__buf >> 8) ; genAssign clr a mov (_i2c_write_PARM_3 + 1),a mov _i2c_write_PARM_3,#0x02 ; genCall mov dpl,r4 push ar2 push ar3 lcall _i2c_write mov r4,dpl mov r5,dph pop ar3 pop ar2 ; genCmpEq cjne r4,#0x02,00287$ cjne r5,#0x00,00287$ ; Peephole 112.b changed ljmp to sjmp sjmp 00189$ 00287$: ;firm.c:247: ERROR(EI2CNACK, RDACADDR(i)); ; genAssign ; genAnd ; Peephole 248.b optimized and to xdata mov dptr,#_OUTC movx a,@dptr mov r4,a anl a,#0xF7 movx @dptr,a ; genAssign mov r4,#0xFF mov r5,#0x7F 00138$: ; genAssign mov ar6,r4 mov ar7,r5 ; genMinus ; genMinusDec dec r4 cjne r4,#0xff,00288$ dec r5 00288$: ; genIfx mov a,r6 orl a,r7 ; genIfxJump ; Peephole 109 removed ljmp by inverse jump logic jnz 00138$ 00289$: ; genAssign ; genOr ; Peephole 248.a optimized or to xdata mov dptr,#_OUTC movx a,@dptr mov r4,a orl a,#0x08 movx @dptr,a 00189$: ;firm.c:236: for (i = 0; i < 4; ++i) { ; genPlus ; genPlusIncr inc r2 cjne r2,#0x00,00290$ inc r3 00290$: ljmp 00187$ 00190$: ;firm.c:253: if (i2c_read(ADC1ADDR, _buf, 24) != 24) { ; genAddrOf mov _i2c_read_PARM_2,#__buf mov (_i2c_read_PARM_2 + 1),#(__buf >> 8) ; genAssign clr a mov (_i2c_read_PARM_3 + 1),a mov _i2c_read_PARM_3,#0x18 ; genCall mov dpl,#0x31 lcall _i2c_read mov r2,dpl mov r3,dph ; genCmpEq cjne r2,#0x18,00291$ cjne r3,#0x00,00291$ ; Peephole 112.b changed ljmp to sjmp sjmp 00147$ 00291$: ;firm.c:254: ERROR(EI2CNACK, ADC1ADDR); ; genAssign ; genAnd ; Peephole 248.b optimized and to xdata mov dptr,#_OUTC movx a,@dptr mov r2,a anl a,#0xF7 movx @dptr,a ; genAssign mov r2,#0xFF mov r3,#0x7F 00143$: ; genAssign mov ar4,r2 mov ar5,r3 ; genMinus ; genMinusDec dec r2 cjne r2,#0xff,00292$ dec r3 00292$: ; genIfx mov a,r4 orl a,r5 ; genIfxJump ; Peephole 109 removed ljmp by inverse jump logic jnz 00143$ 00293$: ; genAssign ; genOr ; Peephole 248.a optimized or to xdata mov dptr,#_OUTC movx a,@dptr mov r2,a orl a,#0x08 movx @dptr,a ; Peephole 112.b changed ljmp to sjmp sjmp 00148$ 00147$: ;firm.c:256: EA = 0; ; genAssign clr _EA ;firm.c:257: for (i = 0; i < 24; ++i) ; genAssign mov r2,#0x00 mov r3,#0x00 00191$: ; genCmpLt ; genCmp clr c mov a,r2 subb a,#0x18 mov a,r3 xrl a,#0x80 subb a,#0x80 ; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00194$ 00294$: ;firm.c:258: ADC(i) = BUF(i); ; genPlus ; Peephole 236.g used r2 instead of ar2 mov a,r2 add a,#__adc mov r4,a ; Peephole 236.g used r3 instead of ar3 mov a,r3 addc a,#(__adc >> 8) mov r5,a ; genPlus ; Peephole 236.g used r2 instead of ar2 mov a,r2 add a,#__buf mov dpl,a ; Peephole 236.g used r3 instead of ar3 mov a,r3 addc a,#(__buf >> 8) mov dph,a ; genPointerGet ; genFarPointerGet movx a,@dptr ; genPointerSet ; genFarPointerSet ; Peephole 136 removed redundant moves mov r6,a mov dpl,r4 mov dph,r5 movx @dptr,a ;firm.c:257: for (i = 0; i < 24; ++i) ; genPlus ; genPlusIncr ; tail increment optimized inc r2 cjne r2,#0x00,00191$ inc r3 ; Peephole 112.b changed ljmp to sjmp sjmp 00191$ 00194$: ;firm.c:259: EA = 1; ; genAssign setb _EA 00148$: ;firm.c:262: if (i2c_read(ADC2ADDR, _buf, 24) != 24) { ; genAddrOf mov _i2c_read_PARM_2,#__buf mov (_i2c_read_PARM_2 + 1),#(__buf >> 8) ; genAssign clr a mov (_i2c_read_PARM_3 + 1),a mov _i2c_read_PARM_3,#0x18 ; genCall mov dpl,#0x33 lcall _i2c_read mov r2,dpl mov r3,dph ; genCmpEq cjne r2,#0x18,00295$ cjne r3,#0x00,00295$ ; Peephole 112.b changed ljmp to sjmp sjmp 00153$ 00295$: ;firm.c:263: ERROR(EI2CNACK, ADC2ADDR); ; genAssign ; genAnd ; Peephole 248.b optimized and to xdata mov dptr,#_OUTC movx a,@dptr mov r2,a anl a,#0xF7 movx @dptr,a ; genAssign mov r2,#0xFF mov r3,#0x7F 00149$: ; genAssign mov ar4,r2 mov ar5,r3 ; genMinus ; genMinusDec dec r2 cjne r2,#0xff,00296$ dec r3 00296$: ; genIfx mov a,r4 orl a,r5 ; genIfxJump ; Peephole 109 removed ljmp by inverse jump logic jnz 00149$ 00297$: ; genAssign ; genOr ; Peephole 248.a optimized or to xdata mov dptr,#_OUTC movx a,@dptr mov r2,a orl a,#0x08 movx @dptr,a ; Peephole 112.b changed ljmp to sjmp sjmp 00255$ 00153$: ;firm.c:265: EA = 0; ; genAssign clr _EA ;firm.c:266: for (i = 0; i < 24; ++i) ; genAssign mov r2,#0x00 mov r3,#0x00 00195$: ; genCmpLt ; genCmp clr c mov a,r2 subb a,#0x18 mov a,r3 xrl a,#0x80 subb a,#0x80 ; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00198$ 00298$: ;firm.c:267: ADC(i + 24) = BUF(i); ; genCast mov ar4,r2 ; genPlus mov a,#0x18 ; Peephole 236.a used r4 instead of ar4 add a,r4 ; genPlus add a,#__adc mov r4,a ; Peephole 240 use clr instead of addc a,#0 clr a addc a,#(__adc >> 8) mov r5,a ; genPlus ; Peephole 236.g used r2 instead of ar2 mov a,r2 add a,#__buf mov dpl,a ; Peephole 236.g used r3 instead of ar3 mov a,r3 addc a,#(__buf >> 8) mov dph,a ; genPointerGet ; genFarPointerGet movx a,@dptr ; genPointerSet ; genFarPointerSet ; Peephole 136 removed redundant moves mov r6,a mov dpl,r4 mov dph,r5 movx @dptr,a ;firm.c:266: for (i = 0; i < 24; ++i) ; genPlus ; genPlusIncr inc r2 ; Peephole 112.b changed ljmp to sjmp ; Peephole 243 avoided branch to sjmp cjne r2,#0x00,00195$ inc r3 00299$: sjmp 00195$ 00198$: ;firm.c:268: EA = 1; ; genAssign setb _EA ;firm.c:273: for (i = 0; i < 8; ++i) { 00255$: ; genAssign mov r2,#0x00 mov r3,#0x00 00164$: ; genCmpLt ; genCmp clr c mov a,r2 subb a,#0x08 mov a,r3 xrl a,#0x80 subb a,#0x80 ; genIfxJump jc 00300$ ljmp 00169$ 00300$: ;firm.c:276: EA = 0; ; genAssign clr _EA ;firm.c:278: if (!(_firm_regulate & (1 << i))) { ; genLeftShift mov b,r2 inc b mov a,#0x01 sjmp 00303$ 00301$: add a,acc 00303$: djnz b,00301$ mov r4,a ; genAssign mov dptr,#__firm_regulate movx a,@dptr mov r5,a ; genCast ; genCast ; genAnd ; Peephole 3.c changed mov to clr clr a mov r6,a mov r7,a mov a,r4 anl ar5,a mov a,r7 anl ar6,a ; genIfx mov a,r5 orl a,r6 ; genIfxJump ; Peephole 109 removed ljmp by inverse jump logic jnz 00156$ 00304$: ;firm.c:279: EA = 1; ; genAssign setb _EA ;firm.c:280: continue; ljmp 00166$ 00156$: ;firm.c:283: if (i & 1) { ; genAnd mov a,r2 ; genIfxJump ; Peephole 111 removed ljmp by inverse jump logic jnb acc.0,00158$ 00305$: ;firm.c:285: (signed int)((((unsigned int)(ADCDIGVH((i >> 1) + 1) & ; genRightShift ; genSignedRightShift ; genRightShiftLiteral ; genrshTwo mov ar4,r2 mov a,r3 mov c,acc.7 rrc a xch a,r4 rrc a xch a,r4 mov r5,a ; genCast ; genCast mov a,r4 rlc a subb a,acc mov r5,a ; genCast ; genLeftShift ; genLeftShiftLiteral ; genlshOne mov a,r4 add a,acc ; genPlus ; Peephole 236.a used r4 instead of ar4 ; Peephole 214 reduced some extra moves mov r4,a add a,#0x18 ; genPlus add a,#__adc mov dpl,a ; Peephole 240 use clr instead of addc a,#0 clr a addc a,#(__adc >> 8) mov dph,a ; genPointerGet ; genFarPointerGet movx a,@dptr mov r5,a ; genAnd anl ar5,#0x0F ; genCast mov r6,#0x00 ; genLeftShift ; genLeftShiftLiteral ; genlshTwo mov ar6,r5 mov r5,#0x00 ;firm.c:287: ADCDIGVL((i >> 1) + 1)) << 1); ; genPlus mov a,#0x19 ; Peephole 236.a used r4 instead of ar4 add a,r4 ; genPlus add a,#__adc mov dpl,a ; Peephole 240 use clr instead of addc a,#0 clr a addc a,#(__adc >> 8) mov dph,a ; genPointerGet ; genFarPointerGet movx a,@dptr ; genCast ; genPlus ; Peephole 236.g used r4 instead of ar4 ; Peephole 177.d removed redundant move mov r4,a mov r7,#0x00 ; Peephole 236.a used r5 instead of ar5 add a,r5 mov r5,a ; Peephole 236.g used r7 instead of ar7 mov a,r7 ; Peephole 236.b used r6 instead of ar6 addc a,r6 ; genLeftShift ; genLeftShiftLiteral ; genlshTwo ; Peephole 105 removed redundant mov mov r6,a xch a,r5 add a,acc xch a,r5 rlc a mov r4,a ; Peephole 112.b changed ljmp to sjmp sjmp 00159$ 00158$: ;firm.c:290: (signed int)((((unsigned int)(ADCANLVH((i >> 1) + 1) & ; genRightShift ; genSignedRightShift ; genRightShiftLiteral ; genrshTwo mov ar6,r2 mov a,r3 mov c,acc.7 rrc a xch a,r6 rrc a xch a,r6 mov r7,a ; genCast ; genCast mov a,r6 rlc a subb a,acc mov r7,a ; genCast ; genLeftShift ; genLeftShiftLiteral ; genlshOne mov a,r6 add a,acc ; genPlus ; Peephole 236.a used r6 instead of ar6 ; Peephole 214 reduced some extra moves mov r6,a add a,#0x28 ; genPlus add a,#__adc mov dpl,a ; Peephole 240 use clr instead of addc a,#0 clr a addc a,#(__adc >> 8) mov dph,a ; genPointerGet ; genFarPointerGet movx a,@dptr mov r7,a ; genAnd anl ar7,#0x0F ; genCast mov r0,#0x00 ; genLeftShift ; genLeftShiftLiteral ; genlshTwo mov ar0,r7 mov r7,#0x00 ;firm.c:292: ADCANLVL((i >> 1) + 1)) << 1); ; genPlus mov a,#0x29 ; Peephole 236.a used r6 instead of ar6 add a,r6 ; genPlus add a,#__adc mov dpl,a ; Peephole 240 use clr instead of addc a,#0 clr a addc a,#(__adc >> 8) mov dph,a ; genPointerGet ; genFarPointerGet movx a,@dptr ; genCast ; genPlus ; Peephole 236.g used r6 instead of ar6 ; Peephole 177.d removed redundant move mov r6,a mov r1,#0x00 ; Peephole 236.a used r7 instead of ar7 add a,r7 mov r7,a ; Peephole 236.g used r1 instead of ar1 mov a,r1 ; Peephole 236.b used r0 instead of ar0 addc a,r0 ; genLeftShift ; genLeftShiftLiteral ; genlshTwo ; Peephole 177.d removed redundant move mov r0,a mov ar5,r7 xch a,r5 add a,acc xch a,r5 rlc a mov r4,a 00159$: ;firm.c:295: (signed int)(((unsigned int)(ADCGNDVH((i >> 1) + 1) & 0x0f) ; genRightShift ; genSignedRightShift ; genRightShiftLiteral ; genrshTwo mov ar6,r2 mov a,r3 mov c,acc.7 rrc a xch a,r6 rrc a xch a,r6 mov r7,a ; genCast ; genCast mov a,r6 rlc a subb a,acc mov r7,a ; genCast ; genLeftShift ; genLeftShiftLiteral ; genlshOne mov a,r6 add a,acc ; genPlus ; Peephole 236.a used r6 instead of ar6 ; Peephole 214 reduced some extra moves mov r6,a add a,#0x08 ; genPlus add a,#__adc mov dpl,a ; Peephole 240 use clr instead of addc a,#0 clr a addc a,#(__adc >> 8) mov dph,a ; genPointerGet ; genFarPointerGet movx a,@dptr mov r7,a ; genAnd anl ar7,#0x0F ; genCast mov r0,#0x00 ; genLeftShift ; genLeftShiftLiteral ; genlshTwo mov ar0,r7 mov r7,#0x00 ;firm.c:296: << 8) + ADCGNDVL((i >> 1) + 1)); ; genPlus mov a,#0x09 ; Peephole 236.a used r6 instead of ar6 add a,r6 ; genPlus add a,#__adc mov dpl,a ; Peephole 240 use clr instead of addc a,#0 clr a addc a,#(__adc >> 8) mov dph,a ; genPointerGet ; genFarPointerGet movx a,@dptr ; genCast ; genPlus ; Peephole 236.g used r6 instead of ar6 ; Peephole 177.d removed redundant move mov r6,a mov r1,#0x00 ; Peephole 236.a used r7 instead of ar7 add a,r7 mov r7,a ; Peephole 236.g used r1 instead of ar1 mov a,r1 ; Peephole 236.b used r0 instead of ar0 addc a,r0 mov r0,a ; genMinus mov a,r5 clr c ; Peephole 236.l used r7 instead of ar7 subb a,r7 mov r5,a mov a,r4 ; Peephole 236.l used r0 instead of ar0 subb a,r0 mov r4,a ;firm.c:298: if (v_sense < 1024) { ; genCmpLt ; genCmp clr c mov a,r5 subb a,#0x00 mov a,r4 xrl a,#0x80 subb a,#0x84 ; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00161$ 00306$: ;firm.c:299: EA = 1; ; genAssign setb _EA ;firm.c:300: continue; ljmp 00166$ 00161$: ;firm.c:302: v_diff = v_sense - VOLT(i); ; genLeftShift ; genLeftShiftLiteral ; genlshTwo mov ar6,r2 mov a,r3 xch a,r6 add a,acc xch a,r6 rlc a mov r7,a ; genPlus ; Peephole 236.g used r6 instead of ar6 mov a,r6 add a,#__volt mov dpl,a ; Peephole 236.g used r7 instead of ar7 mov a,r7 addc a,#(__volt >> 8) mov dph,a ; genPointerGet ; genFarPointerGet movx a,@dptr mov r6,a inc dptr movx a,@dptr mov r7,a ; genMinus mov a,r5 clr c ; Peephole 236.l used r6 instead of ar6 subb a,r6 mov r5,a mov a,r4 ; Peephole 236.l used r7 instead of ar7 subb a,r7 mov r4,a ;firm.c:303: if (ABS(v_diff) < (signed int)_vtol[i]) { ; genCmpGt ; genCmp clr c ; Peephole 181 changed mov to clr clr a subb a,r5 ; Peephole 159 avoided xrl during execution mov a,#(0x00 ^ 0x80) mov b,r4 xrl b,#0x80 subb a,b ; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00201$ 00307$: ; genAssign mov ar6,r5 mov ar7,r4 ; Peephole 112.b changed ljmp to sjmp sjmp 00202$ 00201$: ; genUminus clr c clr a subb a,r5 mov r6,a clr a subb a,r4 mov r7,a 00202$: ; genPlus ; Peephole 236.g used r2 instead of ar2 mov a,r2 add a,#__vtol mov dpl,a ; Peephole 236.g used r3 instead of ar3 mov a,r3 addc a,#(__vtol >> 8) mov dph,a ; genPointerGet ; genFarPointerGet movx a,@dptr mov r0,a ; genCast mov r1,#0x00 ; genCmpLt ; genCmp clr c mov a,r6 subb a,r0 mov a,r7 xrl a,#0x80 mov b,r1 xrl b,#0x80 subb a,b ; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00163$ 00308$: ;firm.c:304: EA = 1; ; genAssign setb _EA ;firm.c:305: continue; ; Peephole 112.b changed ljmp to sjmp sjmp 00166$ 00163$: ;firm.c:308: v_board = (LOOKUP(RESISTOR(i), i) << 4) + 0x0960; ; genLeftShift ; genLeftShiftLiteral ; genlshTwo mov ar7,r2 mov r6,#0x00 ; genPlus ; Peephole 236.g used r2 instead of ar2 mov a,r2 add a,#__resistor mov dpl,a ; Peephole 236.g used r3 instead of ar3 mov a,r3 addc a,#(__resistor >> 8) mov dph,a ; genPointerGet ; genFarPointerGet movx a,@dptr ; genCast ; genPlus ; Peephole 236.g used r0 instead of ar0 ; Peephole 177.d removed redundant move mov r0,a mov r1,#0x00 ; Peephole 236.a used r6 instead of ar6 add a,r6 mov r6,a ; Peephole 236.g used r1 instead of ar1 mov a,r1 ; Peephole 236.b used r7 instead of ar7 addc a,r7 mov r7,a ; genPlus ; genPlus aligned array mov dpl,r6 mov a,#(__vtable >> 8) add a,r7 mov dph,a ; genPointerGet ; genFarPointerGet movx a,@dptr mov r6,a ; genCast mov r7,#0x00 ; genLeftShift ; genLeftShiftLiteral ; genlshTwo mov a,r7 swap a anl a,#0xf0 xch a,r6 swap a xch a,r6 xrl a,r6 xch a,r6 anl a,#0xf0 xch a,r6 xrl a,r6 mov r7,a ; genPlus mov a,#0x60 ; Peephole 236.a used r6 instead of ar6 add a,r6 mov r6,a mov a,#0x09 ; Peephole 236.b used r7 instead of ar7 addc a,r7 mov r7,a ;firm.c:309: v_board -= v_diff; ; genMinus mov a,r6 clr c ; Peephole 236.l used r5 instead of ar5 subb a,r5 mov r6,a mov a,r7 ; Peephole 236.l used r4 instead of ar4 subb a,r4 mov r7,a ;firm.c:310: RESISTOR(i) = rev_lookup(v_board, i); ; genPlus ; Peephole 236.g used r2 instead of ar2 mov a,r2 add a,#__resistor mov r4,a ; Peephole 236.g used r3 instead of ar3 mov a,r3 addc a,#(__resistor >> 8) mov r5,a ; genCast mov _rev_lookup_PARM_2,r2 ; genCall mov dpl,r6 mov dph,r7 push ar2 push ar3 push ar4 push ar5 lcall _rev_lookup mov r6,dpl pop ar5 pop ar4 pop ar3 pop ar2 ; genPointerSet ; genFarPointerSet mov dpl,r4 mov dph,r5 mov a,r6 movx @dptr,a ;firm.c:311: EA = 1; ; genAssign setb _EA 00166$: ;firm.c:273: for (i = 0; i < 8; ++i) { ; genPlus ; genPlusIncr inc r2 cjne r2,#0x00,00309$ inc r3 00309$: ljmp 00164$ 00199$: ret .area CSEG (CODE) .area XINIT (CODE)