Hi, Have you read the PWM examples on Scott Dattalo's pages? http://www.dattalo.com These are software examples, and therefore *you* have to carefully maintain the timebase. I have played with the 256-level one, and it works quite well on a 12C508. I have incorporated an optical interruptor to measure speed and to vary PWM to maintain the output speed. You have to be a bit careful and count the instructions to fit the gaps that Scott has left, but I have now added 300bd RS232 comms (but no command interpreter yet...). In general there is little point in all this, however, the '508 is *cheap* and it's so cute you just have to write code and make it do things. Andy -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu