At 08:41 PM 3/3/97 -0800, you wrote: I did an encoder thingy by polling at high speed, keeping the previous value read in in RAM, then XORing to find the deltas (a delta appears as a 1 bit). You just need to poll fast enough to catch all the changes at the speed you expect to move. Kinda like below: OldEnc ds 1 ; Holds previous value read from encoder NewEnc ds 1 ; Holds current value Deltas ds 1 ; Holds deltas EncPort equ RB ChkEnc movf EncPort,W movwf NewEnc xorwf OldEnc,W movwf Deltas ; A "1" signifies a changed bit btfsc Z goto ChkEnc ; No changes, so loop, or go back to main program DoChg ... ; Process each bit change manually Andy ================================================================== Andy Kunz - Montana Design - 409 S 6th St - Phillipsburg, NJ 08865 Hardware & Software for Industry & R/C Hobbies "Go fast, turn right, and keep the wet side down!" ==================================================================