Ok, I guess I WAS getting it all along! :) I typically use 25mS for debouncing in a 1mS int, so I'd have to run out to 5 bytes. I'll have to work it up for the AVR and see how it compares. Currently, it's like this for each counter: no tabs in gmail... :( Count_Thing: lds itemp,Thing_Counter ;2 clocks and itemp,itemp ;1 clock breq Count_Thing_Done ;2 if branch taken, 1 if not dec itemp ;1 clock sts Thing_Counter,itemp ;2 clocks Count_Thing_Done: ;dummy label 7 clocks while decing, 5 if not, so at 1 MHz, that's 7 or 5 uS I could take 2 more clocks out if I used a register for thing_counter, but that would be silly. -- Feel the power of the dark side! Atmel AVR -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist