;/* This is auto-generated ASM code from LDmicro. Do not edit this file! ; Go back to the LDmicro ladder diagram source for changes in the ladder logic. */ ; PIC16F628 is the LDmicro target processor. LIST p=PIC16F628 #include P16F628.inc __CONFIG 0x3F62 radix dec org 0 ;TABSIZE = 8 ; CODE ; Reset vector i_000000: clrf 0x03 ; (OP_CLRF, REG_STATUS) i_000001: clrf 0x0A ; (OP_CLRF, REG_PCLATH) nop ; (OP_NOP_, 0, 0) ; GOTO progStart i_000003: goto l_000008 ; (OP_GOTO, progStart) ; Interrupt Vector i_000004: retfie ; (OP_RETFIE, 0, 0) nop ; (OP_NOP_, 0, 0) nop ; (OP_NOP_, 0, 0) nop ; (OP_NOP_, 0, 0) ; Program Start ; Configure Timer1 l_000008: clrwdt ; (OP_CLRWDT) movlw 0xE2 ; (REG_CCPR1L, (BYTE)(plcTmr.tmr & 0xff)) ; 0xE2 movwf 0x15 ; (REG_CCPR1L, (BYTE)(plcTmr.tmr & 0xff)) ; 0x15 movlw 0x04 ; (REG_CCPR1H, (BYTE)(plcTmr.tmr >> 8)) ; 0x4 movwf 0x16 ; (REG_CCPR1H, (BYTE)(plcTmr.tmr >> 8)) ; 0x16 movlw 0x00 ; (REG_TMR1L, 0) ; 0x0 movwf 0x0E ; (REG_TMR1L, 0) ; 0xE movlw 0x00 ; (REG_TMR1H, 0) ; 0x0 movwf 0x0F ; (REG_TMR1H, 0) ; 0xF movlw 0x31 ; (REG_T1CON, plcTmr.PS) ; 0x31 movwf 0x10 ; (REG_T1CON, plcTmr.PS) ; 0x10 movlw 0x0B ; (REG_CCP1CON, ccp1con) ; 0xB movwf 0x17 ; (REG_CCP1CON, ccp1con) ; 0x17 ; Now zero out the RAM movlw 0x5F ; (OP_MOVLW, Prog.mcu->ram[i].len - 1) movwf 0x20 ; (OP_MOVWF, Prog.mcu->ram[i].start & ~BankMask()) movlw 0x21 ; (OP_MOVLW, (Prog.mcu->ram[i].start + 1) & ~BankMask()) movwf 0x04 ; (OP_MOVWF, REG_FSR) l_000019: clrf 0x00 ; (OP_CLRF, REG_INDF) incf 0x04 , 1 ; (OP_INCF, REG_FSR, DEST_F) decfsz 0x20 , 1 ; (OP_DECFSZ, Prog.mcu->ram[i].start & ~BankMask(), DEST_F) goto l_000019 ; (OP_GOTO, zeroMem) ; Comparator Off. Normal port I/O. movlw 0x07 ; (REG_CMCON, 0x07) ; 0x7 movwf 0x1F ; (REG_CMCON, 0x07) ; 0x1F ; Set up the ANSELx registers. 1-analog input, 0-digital I/O. ; Set up the TRISx registers (direction). 1-tri-stated (input), 0-output and drive the outputs low to start movlw 0x00 ; (Prog.mcu->outputRegs[i], 0x00) ; 0x0 movwf 0x05 ; (Prog.mcu->outputRegs[i], 0x00) ; 0x5 movlw 0x00 ; (Prog.mcu->outputRegs[i], 0x00) ; 0x0 movwf 0x06 ; (Prog.mcu->outputRegs[i], 0x00) ; 0x6 bsf 0x03 , 5 ; BS(0x00,0x85) ; (OP_BSF, REG_STATUS, STATUS_RP0) movlw 0xE0 ; (Prog.mcu->dirRegs[i], ~isOutput[i]) ; 0xE0 movwf 0x05 ; (Prog.mcu->dirRegs[i], ~isOutput[i]) ; 0x85 movlw 0xFF ; (Prog.mcu->dirRegs[i], ~isOutput[i]) ; 0xFF movwf 0x06 ; (Prog.mcu->dirRegs[i], ~isOutput[i]) ; 0x86 ; Clear Bit 7 - PORTs pull-ups are enabled by individual port latch values bcf 0x01 , 7 ; (OP_BCF, REG_OPTION, _RBPU) l_000029: bcf 0x03 , 5 ; BS(0x80,0x0C) ; (OP_BCF, REG_STATUS, STATUS_RP0) ; Begin Of PLC Cycle btfsc 0x0C , 2 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x23 , 3 ; (OP_BSF, addrDest, bitDest, nameDest) ; $Y_INTCON_T0IF btfss 0x0C , 2 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x23 , 3 ; (OP_BCF, addrDest, bitDest, nameDest) ; $Y_INTCON_T0IF l_00002e: btfss 0x0C , 2 ; (OP_BTFSS, REG_PIR1, CCP1IF) goto l_00002e ; (OP_GOTO, PicProgWriteP - 1) bcf 0x0C , 2 ; (OP_BCF, REG_PIR1, CCP1IF) ; Watchdog reset clrwdt ; (OP_CLRWDT) ; INIT VARS ; INT_IF_BIT_CLEAR $once_0_INIT_VARS btfsc 0x20 , 0 ; (OP_BTFSC, addr1, bit1, a->name1) ; $once_0_INIT_VARS goto l_000037 ; (OP_GOTO, condFalse) ; INT_SET_BIT $once_0_INIT_VARS bsf 0x20 , 0 ; (OP_BSF, addr1, bit1, a->name1) ; $once_0_INIT_VARS ; INT_SET_VARIABLE_TO_LITERAL TD:=0x64(100) ; CopyLitToReg movlw 0x64 ; (OP_MOVLW, lNow, 0, comment) ; TD(0x36):=100(0x64) movwf 0x36 ; (OP_MOVWF, addr + i, 0, comment) ; TD(0x36):=100(0x64) ; ======= START RUNG 1 ======= ; INT_SET_BIT $rung_top l_000037: bsf 0x20 , 1 ; (OP_BSF, addr1, bit1, a->name1) ; $rung_top ; start series [ ; ELEM_CONTACTS ; INT_IF_BIT_SET RE8 btfss 0x20 , 2 ; (OP_BTFSS, addr1, bit1, a->name1) ; RE8 goto l_00003b ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $rung_top bcf 0x20 , 1 ; (OP_BCF, addr1, bit1, a->name1) ; $rung_top ; ELEM_CONTACTS ; INT_IF_BIT_SET RK1 l_00003b: btfss 0x20 , 3 ; (OP_BTFSS, addr1, bit1, a->name1) ; RK1 goto l_00003e ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $rung_top bcf 0x20 , 1 ; (OP_BCF, addr1, bit1, a->name1) ; $rung_top ; start parallel [ ; INT_CLEAR_BIT $parOut_0 l_00003e: bcf 0x20 , 4 ; (OP_BCF, addr1, bit1, a->name1) ; $parOut_0 ; INT_COPY_BIT_TO_BIT $parThis_0:=$rung_top btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x20 , 5 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x20 , 5 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_CONTACTS ; INT_IF_BIT_CLEAR XE1 btfsc 0x06 , 0 ; (OP_BTFSC, addr1, bit1, a->name1) ; XE1 goto l_000046 ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $parThis_0 bcf 0x20 , 5 ; (OP_BCF, addr1, bit1, a->name1) ; $parThis_0 ; INT_IF_BIT_SET $parThis_0 l_000046: btfss 0x20 , 5 ; (OP_BTFSS, addr1, bit1, a->name1) ; $parThis_0 goto l_000049 ; (OP_GOTO, condFalse) ; INT_SET_BIT $parOut_0 bsf 0x20 , 4 ; (OP_BSF, addr1, bit1, a->name1) ; $parOut_0 ; INT_COPY_BIT_TO_BIT $parThis_0:=$rung_top l_000049: btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x20 , 5 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x20 , 5 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_CONTACTS ; INT_IF_BIT_CLEAR RE1 btfsc 0x20 , 6 ; (OP_BTFSC, addr1, bit1, a->name1) ; RE1 goto l_000050 ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $parThis_0 bcf 0x20 , 5 ; (OP_BCF, addr1, bit1, a->name1) ; $parThis_0 ; INT_IF_BIT_SET $parThis_0 l_000050: btfss 0x20 , 5 ; (OP_BTFSS, addr1, bit1, a->name1) ; $parThis_0 goto l_000053 ; (OP_GOTO, condFalse) ; INT_SET_BIT $parOut_0 bsf 0x20 , 4 ; (OP_BSF, addr1, bit1, a->name1) ; $parOut_0 ; INT_COPY_BIT_TO_BIT $rung_top:=$parOut_0 l_000053: btfsc 0x20 , 4 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x20 , 1 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 4 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x20 , 1 ; (OP_BCF, addrDest, bitDest, nameDest) ; ] finish parallel ; start parallel [ ; INT_COPY_BIT_TO_BIT $parThis_1:=$rung_top btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x20 , 7 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x20 , 7 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_COIL ; INT_COPY_BIT_TO_BIT RE1:=$parThis_1 btfsc 0x20 , 7 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x20 , 6 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 7 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x20 , 6 ; (OP_BCF, addrDest, bitDest, nameDest) ; INT_COPY_BIT_TO_BIT $parThis_1:=$rung_top btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x20 , 7 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x20 , 7 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_COIL ; INT_COPY_BIT_TO_BIT YS1:=$parThis_1 bcf 0x03 , 1 ; (OP_BCF, 0x03, 1, "STATUS_DC") ; STATUS_DC btfsc 0x20 , 7 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x03 , 1 ; (OP_BSF, 0x03, 1) btfsc 0x03 , 1 ; (OP_BTFSC, 0x03, 1, "STATUS_DC") ; STATUS_DC bsf 0x05 , 0 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x03 , 1 ; (OP_BTFSS, 0x03, 1, "STATUS_DC") ; STATUS_DC bcf 0x05 , 0 ; (OP_BCF, addrDest, bitDest, nameDest) ; ] finish parallel ; ] finish series ; ; ======= START RUNG 2 ======= ; INT_SET_BIT $rung_top bsf 0x20 , 1 ; (OP_BSF, addr1, bit1, a->name1) ; $rung_top ; start series [ ; ELEM_CONTACTS ; INT_IF_BIT_SET RE8 btfss 0x20 , 2 ; (OP_BTFSS, addr1, bit1, a->name1) ; RE8 goto l_00006e ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $rung_top bcf 0x20 , 1 ; (OP_BCF, addr1, bit1, a->name1) ; $rung_top ; start parallel [ ; INT_CLEAR_BIT $parOut_1 l_00006e: bcf 0x21 , 0 ; (OP_BCF, addr1, bit1, a->name1) ; $parOut_1 ; INT_COPY_BIT_TO_BIT $parThis_2:=$rung_top btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x21 , 1 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x21 , 1 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_CONTACTS ; INT_IF_BIT_CLEAR RE1 btfsc 0x20 , 6 ; (OP_BTFSC, addr1, bit1, a->name1) ; RE1 goto l_000076 ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $parThis_2 bcf 0x21 , 1 ; (OP_BCF, addr1, bit1, a->name1) ; $parThis_2 ; INT_IF_BIT_SET $parThis_2 l_000076: btfss 0x21 , 1 ; (OP_BTFSS, addr1, bit1, a->name1) ; $parThis_2 goto l_000079 ; (OP_GOTO, condFalse) ; INT_SET_BIT $parOut_1 bsf 0x21 , 0 ; (OP_BSF, addr1, bit1, a->name1) ; $parOut_1 ; INT_COPY_BIT_TO_BIT $parThis_2:=$rung_top l_000079: btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x21 , 1 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x21 , 1 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_CONTACTS ; INT_IF_BIT_CLEAR RK1 btfsc 0x20 , 3 ; (OP_BTFSC, addr1, bit1, a->name1) ; RK1 goto l_000080 ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $parThis_2 bcf 0x21 , 1 ; (OP_BCF, addr1, bit1, a->name1) ; $parThis_2 ; INT_IF_BIT_SET $parThis_2 l_000080: btfss 0x21 , 1 ; (OP_BTFSS, addr1, bit1, a->name1) ; $parThis_2 goto l_000083 ; (OP_GOTO, condFalse) ; INT_SET_BIT $parOut_1 bsf 0x21 , 0 ; (OP_BSF, addr1, bit1, a->name1) ; $parOut_1 ; INT_COPY_BIT_TO_BIT $rung_top:=$parOut_1 l_000083: btfsc 0x21 , 0 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x20 , 1 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x21 , 0 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x20 , 1 ; (OP_BCF, addrDest, bitDest, nameDest) ; ] finish parallel ; ELEM_TON TLS2 1500000 ; INT_IF_BIT_SET $rung_top btfss 0x20 , 1 ; (OP_BTFSS, addr1, bit1, a->name1) ; $rung_top goto l_0000b1 ; (OP_GOTO, condFalse) ; INT_IF_LES TLS2 150 ; CopyRegToReg movf 0x37 , 0 ; (OP_MOVF, addr2 + i, DEST_W, name2) ; TLS2 movwf 0x25 ; (OP_MOVWF, addr1 + i, 0, name1) ; $CopyArgToReg movf 0x38 , 0 ; (OP_MOVF, addr2 + i, DEST_W, name2) ; TLS2 movwf 0x26 ; (OP_MOVWF, addr1 + i, 0, name1) ; $CopyArgToReg ; CopyLitToReg movlw 0x96 ; (OP_MOVLW, lNow, 0, comment) ; 150 movwf 0x29 ; (OP_MOVWF, addr + i, 0, comment) ; 150 clrf 0x2A ; (OP_CLRF, addr + i, 0, comment) ; 150 bcf 0x23 , 4 ; (OP_BCF, addrO, bitO, "$overflow") ; $overflow ; sub_ movf 0x26 , 0 ; (OP_MOVF, b + sov - 1, DEST_W) xorwf 0x2A , 0 ; (OP_XORWF, a + sov - 1, DEST_W) movwf 0x24 ; (OP_MOVWF, ScratchS) movf 0x29 , 0 ; (OP_MOVF, a, DEST_W) subwf 0x25 , 1 ; (OP_SUBWF, b, DEST_W_F) movf 0x2A , 0 ; (OP_MOVF, a + 1, DEST_W) btfss 0x03 , 0 ; (OP_BTFSS, REG_STATUS, STATUS_C) incfsz 0x2A , 0 ; (OP_INCFSZ, a + 1, DEST_W) subwf 0x26 , 1 ; (OP_SUBWF, b + 1, DEST_W_F) btfss 0x24 , 7 ; (OP_BTFSS, ScratchS, 7) goto l_0000a2 ; (OP_GOTO, notOverflow) movf 0x26 , 0 ; (OP_MOVF, b + sov - 1, DEST_W) xorwf 0x2A , 0 ; (OP_XORWF, a + sov - 1, DEST_W) movwf 0x24 ; (OP_MOVWF, ScratchS) btfsc 0x24 , 7 ; (OP_BTFSC, ScratchS, 7) goto l_0000a2 ; (OP_GOTO, notOverflow) bsf 0x23 , 4 ; (OP_BSF, addr2, bit2) ; XorBit l_0000a2: btfss 0x23 , 4 ; (OP_BTFSS, addrDest, bitDest) goto l_0000a7 ; (OP_GOTO, is0) btfsc 0x26 , 7 ; (OP_BTFSC, addrSrc, bitSrc) bcf 0x23 , 4 ; (OP_BCF, addrDest, bitDest) i_0000a6: goto l_0000a9 ; (OP_GOTO, isEnd) l_0000a7: btfsc 0x26 , 7 ; (OP_BTFSC, addrSrc, bitSrc) bsf 0x23 , 4 ; (OP_BSF, addrDest, bitDest) l_0000a9: btfsc 0x23 , 4 ; (OP_BTFSC, addrO, bitO) goto l_0000ac ; (OP_GOTO, ifThen) i_0000ab: goto l_0000b0 ; (OP_GOTO, ifEnd) ; INT_CLEAR_BIT $rung_top l_0000ac: bcf 0x20 , 1 ; (OP_BCF, addr1, bit1, a->name1) ; $rung_top ; INT_INCREMENT_VARIABLE TLS2 overlap to overflow to incf 0x37 , 1 ; (OP_INCF, addr, DEST_F, name) ; TLS2 btfsc 0x03 , 2 ; (OP_BTFSC, 0x03, 2) incf 0x38 , 1 ; (OP_INCF, addr + 1, DEST_F, name) ; TLS2 l_0000b0: goto l_0000b3 ; (OP_GOTO, endBlock) ; INT_SET_VARIABLE_TO_LITERAL TLS2:=0x0(0) ; CopyLitToReg l_0000b1: clrf 0x37 ; (OP_CLRF, addr + i, 0, comment) ; TLS2(0x37):=0(0x0) clrf 0x38 ; (OP_CLRF, addr + i, 0, comment) ; TLS2(0x37):=0(0x0) ; start parallel [ ; INT_COPY_BIT_TO_BIT $parThis_3:=$rung_top l_0000b3: btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x21 , 2 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x21 , 2 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_COIL ; INT_COPY_BIT_TO_BIT RK1:=$parThis_3 btfsc 0x21 , 2 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x20 , 3 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x21 , 2 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x20 , 3 ; (OP_BCF, addrDest, bitDest, nameDest) ; INT_COPY_BIT_TO_BIT $parThis_3:=$rung_top btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x21 , 2 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x21 , 2 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_COIL ; INT_COPY_BIT_TO_BIT YS2:=$parThis_3 bcf 0x03 , 1 ; (OP_BCF, 0x03, 1, "STATUS_DC") ; STATUS_DC btfsc 0x21 , 2 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x03 , 1 ; (OP_BSF, 0x03, 1) btfsc 0x03 , 1 ; (OP_BTFSC, 0x03, 1, "STATUS_DC") ; STATUS_DC bsf 0x05 , 1 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x03 , 1 ; (OP_BTFSS, 0x03, 1, "STATUS_DC") ; STATUS_DC bcf 0x05 , 1 ; (OP_BCF, addrDest, bitDest, nameDest) ; ] finish parallel ; ] finish series ; ; ======= START RUNG 3 ======= ; INT_SET_BIT $rung_top bsf 0x20 , 1 ; (OP_BSF, addr1, bit1, a->name1) ; $rung_top ; start series [ ; ELEM_CONTACTS ; INT_IF_BIT_SET RE7 btfss 0x21 , 3 ; (OP_BTFSS, addr1, bit1, a->name1) ; RE7 goto l_0000ca ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $rung_top bcf 0x20 , 1 ; (OP_BCF, addr1, bit1, a->name1) ; $rung_top ; start parallel [ ; INT_CLEAR_BIT $parOut_2 l_0000ca: bcf 0x21 , 4 ; (OP_BCF, addr1, bit1, a->name1) ; $parOut_2 ; INT_COPY_BIT_TO_BIT $parThis_4:=$rung_top btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x21 , 5 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x21 , 5 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_CONTACTS ; INT_IF_BIT_CLEAR XE2 btfsc 0x06 , 1 ; (OP_BTFSC, addr1, bit1, a->name1) ; XE2 goto l_0000d2 ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $parThis_4 bcf 0x21 , 5 ; (OP_BCF, addr1, bit1, a->name1) ; $parThis_4 ; INT_IF_BIT_SET $parThis_4 l_0000d2: btfss 0x21 , 5 ; (OP_BTFSS, addr1, bit1, a->name1) ; $parThis_4 goto l_0000d5 ; (OP_GOTO, condFalse) ; INT_SET_BIT $parOut_2 bsf 0x21 , 4 ; (OP_BSF, addr1, bit1, a->name1) ; $parOut_2 ; INT_COPY_BIT_TO_BIT $parThis_4:=$rung_top l_0000d5: btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x21 , 5 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x21 , 5 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_CONTACTS ; INT_IF_BIT_CLEAR RE2 btfsc 0x21 , 6 ; (OP_BTFSC, addr1, bit1, a->name1) ; RE2 goto l_0000dc ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $parThis_4 bcf 0x21 , 5 ; (OP_BCF, addr1, bit1, a->name1) ; $parThis_4 ; INT_IF_BIT_SET $parThis_4 l_0000dc: btfss 0x21 , 5 ; (OP_BTFSS, addr1, bit1, a->name1) ; $parThis_4 goto l_0000df ; (OP_GOTO, condFalse) ; INT_SET_BIT $parOut_2 bsf 0x21 , 4 ; (OP_BSF, addr1, bit1, a->name1) ; $parOut_2 ; INT_COPY_BIT_TO_BIT $rung_top:=$parOut_2 l_0000df: btfsc 0x21 , 4 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x20 , 1 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x21 , 4 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x20 , 1 ; (OP_BCF, addrDest, bitDest, nameDest) ; ] finish parallel ; ELEM_COIL ; INT_COPY_BIT_TO_BIT RE2:=$rung_top btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x21 , 6 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x21 , 6 ; (OP_BCF, addrDest, bitDest, nameDest) ; ] finish series ; ; ======= START RUNG 4 ======= ; INT_SET_BIT $rung_top bsf 0x20 , 1 ; (OP_BSF, addr1, bit1, a->name1) ; $rung_top ; start series [ ; ELEM_CONTACTS ; INT_IF_BIT_CLEAR RE2 btfsc 0x21 , 6 ; (OP_BTFSC, addr1, bit1, a->name1) ; RE2 goto l_0000eb ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $rung_top bcf 0x20 , 1 ; (OP_BCF, addr1, bit1, a->name1) ; $rung_top ; ELEM_CONTACTS ; INT_IF_BIT_SET RP1 l_0000eb: btfss 0x21 , 7 ; (OP_BTFSS, addr1, bit1, a->name1) ; RP1 goto l_0000ee ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $rung_top bcf 0x20 , 1 ; (OP_BCF, addr1, bit1, a->name1) ; $rung_top ; ELEM_TON TL 1000000 ; INT_IF_BIT_SET $rung_top l_0000ee: btfss 0x20 , 1 ; (OP_BTFSS, addr1, bit1, a->name1) ; $rung_top goto l_00010f ; (OP_GOTO, condFalse) ; INT_IF_LES TL 100 ; CopyRegToReg movf 0x39 , 0 ; (OP_MOVF, addr2 + i, DEST_W, name2) ; TL movwf 0x25 ; (OP_MOVWF, addr1 + i, 0, name1) ; $CopyArgToReg ; CopyLitToReg movlw 0x64 ; (OP_MOVLW, lNow, 0, comment) ; 100 movwf 0x29 ; (OP_MOVWF, addr + i, 0, comment) ; 100 bcf 0x23 , 4 ; (OP_BCF, addrO, bitO, "$overflow") ; $overflow ; sub_ movf 0x25 , 0 ; (OP_MOVF, b + sov - 1, DEST_W) xorwf 0x29 , 0 ; (OP_XORWF, a + sov - 1, DEST_W) movwf 0x24 ; (OP_MOVWF, ScratchS) movf 0x29 , 0 ; (OP_MOVF, a, DEST_W) subwf 0x25 , 1 ; (OP_SUBWF, b, DEST_W_F) btfss 0x24 , 7 ; (OP_BTFSS, ScratchS, 7) goto l_000102 ; (OP_GOTO, notOverflow) movf 0x25 , 0 ; (OP_MOVF, b + sov - 1, DEST_W) xorwf 0x29 , 0 ; (OP_XORWF, a + sov - 1, DEST_W) movwf 0x24 ; (OP_MOVWF, ScratchS) btfsc 0x24 , 7 ; (OP_BTFSC, ScratchS, 7) goto l_000102 ; (OP_GOTO, notOverflow) bsf 0x23 , 4 ; (OP_BSF, addr2, bit2) ; XorBit l_000102: btfss 0x23 , 4 ; (OP_BTFSS, addrDest, bitDest) goto l_000107 ; (OP_GOTO, is0) btfsc 0x25 , 7 ; (OP_BTFSC, addrSrc, bitSrc) bcf 0x23 , 4 ; (OP_BCF, addrDest, bitDest) i_000106: goto l_000109 ; (OP_GOTO, isEnd) l_000107: btfsc 0x25 , 7 ; (OP_BTFSC, addrSrc, bitSrc) bsf 0x23 , 4 ; (OP_BSF, addrDest, bitDest) l_000109: btfsc 0x23 , 4 ; (OP_BTFSC, addrO, bitO) goto l_00010c ; (OP_GOTO, ifThen) i_00010b: goto l_00010e ; (OP_GOTO, ifEnd) ; INT_CLEAR_BIT $rung_top l_00010c: bcf 0x20 , 1 ; (OP_BCF, addr1, bit1, a->name1) ; $rung_top ; INT_INCREMENT_VARIABLE TL overlap to overflow to incf 0x39 , 1 ; (OP_INCF, addr, DEST_F, name) ; TL l_00010e: goto l_000110 ; (OP_GOTO, endBlock) ; INT_SET_VARIABLE_TO_LITERAL TL:=0x0(0) ; CopyLitToReg l_00010f: clrf 0x39 ; (OP_CLRF, addr + i, 0, comment) ; TL(0x39):=0(0x0) ; ELEM_TOF ; INT_IF_BIT_CLEAR $rung_top l_000110: btfsc 0x20 , 1 ; (OP_BTFSC, addr1, bit1, a->name1) ; $rung_top goto l_000131 ; (OP_GOTO, condFalse) ; INT_IF_LES TD 100 ; CopyRegToReg movf 0x36 , 0 ; (OP_MOVF, addr2 + i, DEST_W, name2) ; TD movwf 0x25 ; (OP_MOVWF, addr1 + i, 0, name1) ; $CopyArgToReg ; CopyLitToReg movlw 0x64 ; (OP_MOVLW, lNow, 0, comment) ; 100 movwf 0x29 ; (OP_MOVWF, addr + i, 0, comment) ; 100 bcf 0x23 , 4 ; (OP_BCF, addrO, bitO, "$overflow") ; $overflow ; sub_ movf 0x25 , 0 ; (OP_MOVF, b + sov - 1, DEST_W) xorwf 0x29 , 0 ; (OP_XORWF, a + sov - 1, DEST_W) movwf 0x24 ; (OP_MOVWF, ScratchS) movf 0x29 , 0 ; (OP_MOVF, a, DEST_W) subwf 0x25 , 1 ; (OP_SUBWF, b, DEST_W_F) btfss 0x24 , 7 ; (OP_BTFSS, ScratchS, 7) goto l_000124 ; (OP_GOTO, notOverflow) movf 0x25 , 0 ; (OP_MOVF, b + sov - 1, DEST_W) xorwf 0x29 , 0 ; (OP_XORWF, a + sov - 1, DEST_W) movwf 0x24 ; (OP_MOVWF, ScratchS) btfsc 0x24 , 7 ; (OP_BTFSC, ScratchS, 7) goto l_000124 ; (OP_GOTO, notOverflow) bsf 0x23 , 4 ; (OP_BSF, addr2, bit2) ; XorBit l_000124: btfss 0x23 , 4 ; (OP_BTFSS, addrDest, bitDest) goto l_000129 ; (OP_GOTO, is0) btfsc 0x25 , 7 ; (OP_BTFSC, addrSrc, bitSrc) bcf 0x23 , 4 ; (OP_BCF, addrDest, bitDest) i_000128: goto l_00012b ; (OP_GOTO, isEnd) l_000129: btfsc 0x25 , 7 ; (OP_BTFSC, addrSrc, bitSrc) bsf 0x23 , 4 ; (OP_BSF, addrDest, bitDest) l_00012b: btfsc 0x23 , 4 ; (OP_BTFSC, addrO, bitO) goto l_00012e ; (OP_GOTO, ifThen) i_00012d: goto l_000130 ; (OP_GOTO, ifEnd) ; INT_INCREMENT_VARIABLE TD overlap to overflow to l_00012e: incf 0x36 , 1 ; (OP_INCF, addr, DEST_F, name) ; TD ; INT_SET_BIT $rung_top bsf 0x20 , 1 ; (OP_BSF, addr1, bit1, a->name1) ; $rung_top l_000130: goto l_000132 ; (OP_GOTO, endBlock) ; INT_SET_VARIABLE_TO_LITERAL TD:=0x0(0) ; CopyLitToReg l_000131: clrf 0x36 ; (OP_CLRF, addr + i, 0, comment) ; TD(0x36):=0(0x0) ; start parallel [ ; INT_COPY_BIT_TO_BIT $parThis_5:=$rung_top l_000132: btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x22 , 0 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x22 , 0 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_COIL ; INT_COPY_BIT_TO_BIT RP1:=$parThis_5 btfsc 0x22 , 0 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x21 , 7 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x22 , 0 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x21 , 7 ; (OP_BCF, addrDest, bitDest, nameDest) ; INT_COPY_BIT_TO_BIT $parThis_5:=$rung_top btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x22 , 0 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x22 , 0 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_COIL ; INT_COPY_BIT_TO_BIT YS3:=$parThis_5 bcf 0x03 , 1 ; (OP_BCF, 0x03, 1, "STATUS_DC") ; STATUS_DC btfsc 0x22 , 0 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x03 , 1 ; (OP_BSF, 0x03, 1) btfsc 0x03 , 1 ; (OP_BTFSC, 0x03, 1, "STATUS_DC") ; STATUS_DC bsf 0x05 , 2 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x03 , 1 ; (OP_BTFSS, 0x03, 1, "STATUS_DC") ; STATUS_DC bcf 0x05 , 2 ; (OP_BCF, addrDest, bitDest, nameDest) ; ] finish parallel ; ] finish series ; ; ======= START RUNG 5 ======= ; INT_SET_BIT $rung_top bsf 0x20 , 1 ; (OP_BSF, addr1, bit1, a->name1) ; $rung_top ; start series [ ; ELEM_CONTACTS ; INT_IF_BIT_SET RE6 btfss 0x22 , 1 ; (OP_BTFSS, addr1, bit1, a->name1) ; RE6 goto l_000149 ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $rung_top bcf 0x20 , 1 ; (OP_BCF, addr1, bit1, a->name1) ; $rung_top ; start parallel [ ; INT_CLEAR_BIT $parOut_3 l_000149: bcf 0x22 , 2 ; (OP_BCF, addr1, bit1, a->name1) ; $parOut_3 ; INT_COPY_BIT_TO_BIT $parThis_6:=$rung_top btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x22 , 3 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x22 , 3 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_CONTACTS ; INT_IF_BIT_CLEAR XE3 btfsc 0x06 , 2 ; (OP_BTFSC, addr1, bit1, a->name1) ; XE3 goto l_000151 ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $parThis_6 bcf 0x22 , 3 ; (OP_BCF, addr1, bit1, a->name1) ; $parThis_6 ; INT_IF_BIT_SET $parThis_6 l_000151: btfss 0x22 , 3 ; (OP_BTFSS, addr1, bit1, a->name1) ; $parThis_6 goto l_000154 ; (OP_GOTO, condFalse) ; INT_SET_BIT $parOut_3 bsf 0x22 , 2 ; (OP_BSF, addr1, bit1, a->name1) ; $parOut_3 ; INT_COPY_BIT_TO_BIT $parThis_6:=$rung_top l_000154: btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x22 , 3 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x22 , 3 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_CONTACTS ; INT_IF_BIT_CLEAR RE3 btfsc 0x22 , 4 ; (OP_BTFSC, addr1, bit1, a->name1) ; RE3 goto l_00015b ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $parThis_6 bcf 0x22 , 3 ; (OP_BCF, addr1, bit1, a->name1) ; $parThis_6 ; INT_IF_BIT_SET $parThis_6 l_00015b: btfss 0x22 , 3 ; (OP_BTFSS, addr1, bit1, a->name1) ; $parThis_6 goto l_00015e ; (OP_GOTO, condFalse) ; INT_SET_BIT $parOut_3 bsf 0x22 , 2 ; (OP_BSF, addr1, bit1, a->name1) ; $parOut_3 ; INT_COPY_BIT_TO_BIT $rung_top:=$parOut_3 l_00015e: btfsc 0x22 , 2 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x20 , 1 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x22 , 2 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x20 , 1 ; (OP_BCF, addrDest, bitDest, nameDest) ; ] finish parallel ; start parallel [ ; INT_COPY_BIT_TO_BIT $parThis_7:=$rung_top btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x22 , 5 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x22 , 5 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_COIL ; INT_COPY_BIT_TO_BIT RE3:=$parThis_7 btfsc 0x22 , 5 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x22 , 4 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x22 , 5 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x22 , 4 ; (OP_BCF, addrDest, bitDest, nameDest) ; INT_COPY_BIT_TO_BIT $parThis_7:=$rung_top btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x22 , 5 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x22 , 5 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_COIL ; INT_COPY_BIT_TO_BIT YS4:=$parThis_7 bcf 0x03 , 1 ; (OP_BCF, 0x03, 1, "STATUS_DC") ; STATUS_DC btfsc 0x22 , 5 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x03 , 1 ; (OP_BSF, 0x03, 1) btfsc 0x03 , 1 ; (OP_BTFSC, 0x03, 1, "STATUS_DC") ; STATUS_DC bsf 0x05 , 3 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x03 , 1 ; (OP_BTFSS, 0x03, 1, "STATUS_DC") ; STATUS_DC bcf 0x05 , 3 ; (OP_BCF, addrDest, bitDest, nameDest) ; ] finish parallel ; ] finish series ; ; ======= START RUNG 6 ======= ; INT_SET_BIT $rung_top bsf 0x20 , 1 ; (OP_BSF, addr1, bit1, a->name1) ; $rung_top ; start series [ ; ELEM_CONTACTS ; INT_IF_BIT_SET RE5 btfss 0x22 , 6 ; (OP_BTFSS, addr1, bit1, a->name1) ; RE5 goto l_000179 ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $rung_top bcf 0x20 , 1 ; (OP_BCF, addr1, bit1, a->name1) ; $rung_top ; start parallel [ ; INT_CLEAR_BIT $parOut_4 l_000179: bcf 0x22 , 7 ; (OP_BCF, addr1, bit1, a->name1) ; $parOut_4 ; INT_COPY_BIT_TO_BIT $parThis_8:=$rung_top btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x23 , 0 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x23 , 0 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_CONTACTS ; INT_IF_BIT_CLEAR XE4 btfsc 0x06 , 3 ; (OP_BTFSC, addr1, bit1, a->name1) ; XE4 goto l_000181 ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $parThis_8 bcf 0x23 , 0 ; (OP_BCF, addr1, bit1, a->name1) ; $parThis_8 ; INT_IF_BIT_SET $parThis_8 l_000181: btfss 0x23 , 0 ; (OP_BTFSS, addr1, bit1, a->name1) ; $parThis_8 goto l_000184 ; (OP_GOTO, condFalse) ; INT_SET_BIT $parOut_4 bsf 0x22 , 7 ; (OP_BSF, addr1, bit1, a->name1) ; $parOut_4 ; INT_COPY_BIT_TO_BIT $parThis_8:=$rung_top l_000184: btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x23 , 0 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x23 , 0 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_CONTACTS ; INT_IF_BIT_CLEAR RE4 btfsc 0x23 , 1 ; (OP_BTFSC, addr1, bit1, a->name1) ; RE4 goto l_00018b ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $parThis_8 bcf 0x23 , 0 ; (OP_BCF, addr1, bit1, a->name1) ; $parThis_8 ; INT_IF_BIT_SET $parThis_8 l_00018b: btfss 0x23 , 0 ; (OP_BTFSS, addr1, bit1, a->name1) ; $parThis_8 goto l_00018e ; (OP_GOTO, condFalse) ; INT_SET_BIT $parOut_4 bsf 0x22 , 7 ; (OP_BSF, addr1, bit1, a->name1) ; $parOut_4 ; INT_COPY_BIT_TO_BIT $rung_top:=$parOut_4 l_00018e: btfsc 0x22 , 7 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x20 , 1 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x22 , 7 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x20 , 1 ; (OP_BCF, addrDest, bitDest, nameDest) ; ] finish parallel ; start parallel [ ; INT_COPY_BIT_TO_BIT $parThis_9:=$rung_top btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x23 , 2 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x23 , 2 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_COIL ; INT_COPY_BIT_TO_BIT RE4:=$parThis_9 btfsc 0x23 , 2 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x23 , 1 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x23 , 2 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x23 , 1 ; (OP_BCF, addrDest, bitDest, nameDest) ; INT_COPY_BIT_TO_BIT $parThis_9:=$rung_top btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x23 , 2 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x23 , 2 ; (OP_BCF, addrDest, bitDest, nameDest) ; ELEM_COIL ; INT_COPY_BIT_TO_BIT YS5:=$parThis_9 bcf 0x03 , 1 ; (OP_BCF, 0x03, 1, "STATUS_DC") ; STATUS_DC btfsc 0x23 , 2 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x03 , 1 ; (OP_BSF, 0x03, 1) btfsc 0x03 , 1 ; (OP_BTFSC, 0x03, 1, "STATUS_DC") ; STATUS_DC bsf 0x05 , 4 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x03 , 1 ; (OP_BTFSS, 0x03, 1, "STATUS_DC") ; STATUS_DC bcf 0x05 , 4 ; (OP_BCF, addrDest, bitDest, nameDest) ; ] finish parallel ; ] finish series ; ; ======= START RUNG 7 ======= ; INT_SET_BIT $rung_top bsf 0x20 , 1 ; (OP_BSF, addr1, bit1, a->name1) ; $rung_top ; start series [ ; ELEM_CONTACTS ; INT_IF_BIT_CLEAR XE5 btfsc 0x06 , 4 ; (OP_BTFSC, addr1, bit1, a->name1) ; XE5 goto l_0001a9 ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $rung_top bcf 0x20 , 1 ; (OP_BCF, addr1, bit1, a->name1) ; $rung_top ; ELEM_COIL ; INT_COPY_BIT_TO_BIT RE5:=$rung_top l_0001a9: btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x22 , 6 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x22 , 6 ; (OP_BCF, addrDest, bitDest, nameDest) ; ] finish series ; ; ======= START RUNG 8 ======= ; INT_SET_BIT $rung_top bsf 0x20 , 1 ; (OP_BSF, addr1, bit1, a->name1) ; $rung_top ; start series [ ; ELEM_CONTACTS ; INT_IF_BIT_CLEAR XE6 btfsc 0x06 , 5 ; (OP_BTFSC, addr1, bit1, a->name1) ; XE6 goto l_0001b1 ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $rung_top bcf 0x20 , 1 ; (OP_BCF, addr1, bit1, a->name1) ; $rung_top ; ELEM_COIL ; INT_COPY_BIT_TO_BIT RE6:=$rung_top l_0001b1: btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x22 , 1 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x22 , 1 ; (OP_BCF, addrDest, bitDest, nameDest) ; ] finish series ; ; ======= START RUNG 9 ======= ; INT_SET_BIT $rung_top bsf 0x20 , 1 ; (OP_BSF, addr1, bit1, a->name1) ; $rung_top ; start series [ ; ELEM_CONTACTS ; INT_IF_BIT_CLEAR XE7 btfsc 0x06 , 6 ; (OP_BTFSC, addr1, bit1, a->name1) ; XE7 goto l_0001b9 ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $rung_top bcf 0x20 , 1 ; (OP_BCF, addr1, bit1, a->name1) ; $rung_top ; ELEM_COIL ; INT_COPY_BIT_TO_BIT RE7:=$rung_top l_0001b9: btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x21 , 3 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x21 , 3 ; (OP_BCF, addrDest, bitDest, nameDest) ; ] finish series ; ; ======= START RUNG 10 ======= ; INT_SET_BIT $rung_top bsf 0x20 , 1 ; (OP_BSF, addr1, bit1, a->name1) ; $rung_top ; start series [ ; ELEM_CONTACTS ; INT_IF_BIT_CLEAR XE8 btfsc 0x06 , 7 ; (OP_BTFSC, addr1, bit1, a->name1) ; XE8 goto l_0001c1 ; (OP_GOTO, condFalse) ; INT_CLEAR_BIT $rung_top bcf 0x20 , 1 ; (OP_BCF, addr1, bit1, a->name1) ; $rung_top ; ELEM_COIL ; INT_COPY_BIT_TO_BIT RE8:=$rung_top l_0001c1: btfsc 0x20 , 1 ; (OP_BTFSC, addrSrc, bitSrc, nameSrc) bsf 0x20 , 2 ; (OP_BSF, addrDest, bitDest, nameDest) btfss 0x20 , 1 ; (OP_BTFSS, addrSrc, bitSrc, nameSrc) bcf 0x20 , 2 ; (OP_BCF, addrDest, bitDest, nameDest) ; ] finish series ; GOTO next PLC cycle i_0001c5: goto l_000029 ; (OP_GOTO, BeginOfPLCCycle) l_0001c6: goto l_0001c6 ; (OP_GOTO, PicProgWriteP) END ;| # | Name | Size | Address | Bit # | ;|Variables: 30 ;| 0 | TD | 1 byte | 0x0036 | ;| 3 | TL | 1 byte | 0x0039 | ;| 4 | TLS2 | 2 byte | 0x0037 | ;|Internal Relays: 29 ;| 0 | $once_0_INIT_VARS | 1 bit | 0x0020 | 0 | ;| 1 | $rung_top | 1 bit | 0x0020 | 1 | ;| 2 | RE8 | 1 bit | 0x0020 | 2 | ;| 3 | RK1 | 1 bit | 0x0020 | 3 | ;| 4 | $parOut_0 | 1 bit | 0x0020 | 4 | ;| 5 | $parThis_0 | 1 bit | 0x0020 | 5 | ;| 6 | RE1 | 1 bit | 0x0020 | 6 | ;| 7 | $parThis_1 | 1 bit | 0x0020 | 7 | ;| 8 | $parOut_1 | 1 bit | 0x0021 | 0 | ;| 9 | $parThis_2 | 1 bit | 0x0021 | 1 | ;| 10 | $parThis_3 | 1 bit | 0x0021 | 2 | ;| 11 | RE7 | 1 bit | 0x0021 | 3 | ;| 12 | $parOut_2 | 1 bit | 0x0021 | 4 | ;| 13 | $parThis_4 | 1 bit | 0x0021 | 5 | ;| 14 | RE2 | 1 bit | 0x0021 | 6 | ;| 15 | RP1 | 1 bit | 0x0021 | 7 | ;| 16 | $parThis_5 | 1 bit | 0x0022 | 0 | ;| 17 | RE6 | 1 bit | 0x0022 | 1 | ;| 18 | $parOut_3 | 1 bit | 0x0022 | 2 | ;| 19 | $parThis_6 | 1 bit | 0x0022 | 3 | ;| 20 | RE3 | 1 bit | 0x0022 | 4 | ;| 21 | $parThis_7 | 1 bit | 0x0022 | 5 | ;| 22 | RE5 | 1 bit | 0x0022 | 6 | ;| 23 | $parOut_4 | 1 bit | 0x0022 | 7 | ;| 24 | $parThis_8 | 1 bit | 0x0023 | 0 | ;| 25 | RE4 | 1 bit | 0x0023 | 1 | ;| 26 | $parThis_9 | 1 bit | 0x0023 | 2 | ;| 27 | $Y_INTCON_T0IF | 1 bit | 0x0023 | 3 | ;| 28 | $overflow | 1 bit | 0x0023 | 4 |