> How do I configure TMR0 to cycle 256 times. > Then how do I read the value? The questions are too simple and vague, more info would be helpful so you get what you actually need. For example, which PIC ? What speed ? Internal or external clocking ? Are you wanting to delay a certain time or a number of instruction cycles ? But basically, clear a RAM counter, turn TMR0 on, detect when it rolls over from FF to 00, increment the RAM counter, detect when that rolls over from FF to 00 and then stop If you can use a 16-bit timer (like Timer1) then a full count of that is 256* 256. Which is what you want. Isn't it ? Reading the TMR0 register is done exactly as it is for any other register. MOVF TMR0,W If you start a timer at a value and increment it in multiples of 256, you'll end up with exactly the same value as you started with -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details.