> DLY3 MOVLW D'250' ; > MOVWF TEMP1 ; LITTLE DELAY > DECFSZ TEMP1,1 ; > GOTO DLY3 This loop will put the value 250 into the TEMP1 register, then decrement it, then put 250 into TEMP1, then decrement it, then put 250 into TEMP1 then decrement it, etc. To make this loop work, move the "DLY3" label down by two lines, so it's on the DECFSZ instruction. However, it seems rather unlikely that you'd really need anywhere near that long a duration for the enable signal. You'd need to check the 4094's data sheet for the minimum time required, but I would imagine that a NOP or two would give a sufficient delay. You will need to add some NOPs in the nexout loop for reliable operation, unless your PIC is running at a very low clock rate. Successive BCF/BSF operations to the same port (I'm assuming that _data and _clock are bits in the same port) will produce unexpected results if there is enough of a load on the port pins that it takes more than one clock cycle for them to actually change state. This should be explained in your PIC's data sheet. It would be a good idea for you to use the 'W' or 'F' symbol for the destination operand of instructions that require one (for example, "DECFSZ TEMP1,F"), as this is a lot more readable and meaningful than using '0' or '1'. Jason Harper