Bob, > Try putting nops in like this: > > bsf portc,scl > nop > bsf portc,sda > goto $+1 > bcf portc,scl > nop > bcf portc,sda > goto $-5 The original I2C code goes like this (a part of it). txbyte movlw .8 movwf bitctr btfss txbuf,7 goto $+3 bsf iicport,sda goto $+3 bcf iicport,sda goto $+1 goto $+1 bsf iicport,scl goto $+1 goto $+1 bcf iicport,scl rlf txbuf,same decfsz bitctr,same goto $-0Dh bsf iicport,scl bsf iicport,sda retlw 0 > If it works then it is probably a read-write-modify issue, which occurs > when a pin hasn't changed enough before the next bcf or bsf happens. This code would work for me on 16C54's years back. Cheers Ravi -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist