Hi Lance, the 'spread' you are talking about is a common problem in digital systems. They can only adjust outputs in steps that small (the size varies with the system used and with timing). So you need to define how accurate a frequency you need to generate, then see how to do it. F.ex. if you do not require concurrent tasks, then generating 500 Hz and below with 1 Hz steps (even 0.1Hz) is easy by coding constant run time code on a lowly 4MHz pic. This is because the 'spread' (which is usually called resolution) is 1 T cycle, or 1usec at 4MHz. Maybe you can program the PWM output (does the 627 have one ?) to generate your output frequency with the desired precision, and use external gates (flipflop + multiplexer) to generate the phases. If you do not have requirements for asynchronous tasks in parallel with your output then hand coded constant run time assembly would be the best way imho. If you do risk to have someone want to 'add features' later then better find an interrupt way to do it because constant runtime code is not amenable to accomodate 'last minute' wishes from the user. Peter -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu