Here's what I've got so far... for the "slave" pics anyhow.
Critiques are definitely welcome! 
16F688 w/20Mhz
	Code:
	INCLUDE "DT_INTS-14-MOD.bas"
INCLUDE "ReEnterPBP.bas"
'Clock setup
    Define OSC 20
'Pin setups
    ANSEL = %00000000       'No analog input
    TRISA = %00000111       'PortA: TRISA = %00XXXXXX
    TRISC = %00000000       'PortC: TRISC = %00XXXXXX
'Usart setups
    DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
    DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
    DEFINE HSER_CLROERR 1 ' Clear overflow automatically
    DEFINE HSER_SPBRG 86  ' 57600 Baud @ SPBRGH = 0
    BAUDCTL.3 = 1         ' Enable 16 bit baudrate generator
'----------------------------------------------------------------------------
MaxCount con 21600
BtnZeroCount var PORTA.0
APin var PORTA.1
BPin var PORTA.2
AOld var byte
BOld var byte
CurCount var word
ASM
INT_LIST  macro    ; IntSource,  Label,  Type, ResetFlag?
        INT_Handler   RAC_INT,  _ABInt,   PBP,  yes
    endm
    INT_CREATE           ; Creates the interrupt processor
    INT_ENABLE  RAC_INT  ; Enable RA change interrupt
ENDASM
curcount = 0
Start:
if btnzerocount = 0 then    'btnzerocount (A.0) has pullup res
    curcount = 0
endif
aold = apin
bold = bpin
hserout ["$", dec5 curcount]
goto start
ABInt:
'\\\ A caused the interrupt ///
IF apin != aold THEN                       'APin IS NOT equal to AOld
    IF apin != bpin THEN                   'If A and B are different,
        GOTO CW                                 'it was clockwise rotation
    ELSE                                   'Otherwise,
        GOTO CCW                                'it was counter-clockwise rotation
    ENDIF
ENDIF
'\\\ B caused the interrupt ///
IF Bpin != Bold THEN                       'BPin IS NOT equal to BOld
    IF apin == bpin THEN                   'If A and B are the same,
        GOTO CW                                 'it was clockwise rotation
    ELSE                                   'Otherwise,
        GOTO CCW                                'it was counter-clockwise rotation
    ENDIF
ENDIF
CW:                 ' -1
if curcount > 0 then
    curcount = curcount -1
else
    curcount = MaxCount
endif
@ INT_RETURN
CCW:                ' +1
if curcount < maxcount then
    curcount = curcount +1
else
    curcount = 0
endif
@ INT_RETURN
 Thanks again guys,
Chris
				
			
Bookmarks