Hello This serial buiness is kicking my tail. The routine runs smoothly sending all 5 bytes of data through the first loop. The second and ... time though I get garbage. Somehow the FSR is getting corrupted or its doing what I've told it to do only I don't know what I told it. Make sense? The variables are located in sequential registers. The data in the variable registers is correct in simulation. Can any one tell me what is going on? Using 16F84 here is a snip- The serial routine is called every 7 instructions because of multitasking. SERIAL MOVF SSTATE,W ;PCL #161 MOVWF PCL ; dispatch to current state TEST: BTFSC _HANDSHAKE ; CHECK FOR SERIAL HANDSHAKE GOTO LOADSEROUT ; PIN=1 INITIATE SEROUT COMM MOVLW ZERO_1 MOVWF SSTATE GOTO W9 LOADSEROUT: BTFSS _HANDSHAKE GOTO IDL7 ; FALSE START RECEIVER NOT READY WAIT AND MOVLW BUFFER-1 ;BYTE TO SEND MOVWF FSR MOVLW 5 ;how many bytes MOVWF BUFFER ;LOAD BYTE COUNTER MOVLW XMIT ;LOAD SEROUT MOVWF SSTATE NOP RETURN XMIT: MOVLW 9 MOVWF SCOUNT ;LOAD BIT COUNTER MOVLW EMITBIT ; EMITBIT TO PCL MOVWF SSTATE MOVLW BITTIME MOVWF STIME ;LOAD BUAD DELAY BCF _SEROUT ;START BIT NON INVERTED ; BSF _SEROUT ;START BIT INVERTED GOTO W13 EMITBIT DECFSZ STIME,F GOTO W4 ;BAUD DELAY RRF INDF ;SHIFT RT DECFSZ SCOUNT ;BIT COUNTER GOTO SEND_BITS ;SEND MORE BITS RRF INDF ;8 BITS SENT- SHIFT TO ORIGINAL MOVLW BITTIME MOVWF STIME ;LOAD BUAD DELAY MOVLW STOPBIT ; SEND STOP MOVWF SSTATE ; BCF _SEROUT ;START BIT INVERTED BSF _SEROUT ;START BIT NON-INVERTED NOP RETURN SEND_BITS ; BTFSC _C ; IF _C = 0, PC = PC+2--INVERTED ; BCF _SEROUT ; BIT1 = 0 ; BTFSS _C ; IF BIT2 = 1, PC = PC+2 ; BSF _SEROUT ; BIT1 = 1 BTFSS _C ; IF _C = 0, PC = PC+2--NON INVERTED BCF _SEROUT ; BIT1 = 0 BTFSC _C ; IF BIT2 = 1, PC = PC+2 BSF _SEROUT ; BIT1 = 1 MOVLW BITTIME MOVWF STIME ;LOAD BUAD DELAY RETURN STOPBIT DECFSZ STIME,F GOTO W4 ;BAUD DELAY DECF FSR ;NEXT BYTE TO SEND DECFSZ BUFFER ;?SENT ALL BYTES GOTO LOADBYTES ;SEND MORE MOVLW TEST ;SKIP SERIN ; MOVLW LOADLOOP ; START SERIN ROUTINE MOVWF SSTATE GOTO W10 LOADBYTES MOVLW XMIT MOVWF SSTATE GOTO W11 ; Waste cycles to make up 19 cycles including call and return. W4 NOP W5 NOP W6 NOP W7 NOP W8 NOP W9 NOP W10 NOP W11 NOP W12 NOP W13 RETURN