On Tue, 2006-11-14 at 18:07 -0800, Shawn Wilton wrote: > Does anyone see anything wrong with this code: > > //Set page 103 for details regarding the +2 > tmr0l = (unsigned char)65000; > tmr0h = (unsigned char)(65000 >> 8); //Right shift so the top byte > becomes the bottom byte Others may or may not be correct about the default signedness of chars, but I believe your problem is even more fundamental. When writing to a 16-bit timer, you must write the high byte first. The write to the low byte will initiate a full 16-bit to real hardware. Similarly, to read a 16-bit timer, read the low byte first. This will initiate an access of the high byte too which you may read on the subsequent instruction. Scott -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist