There may be more going on here (i.e. this is the first thing that struck me), but for starters, I'd try moving the bsf INTCON,GIE down to the last instruction before the main loop. Try that and see if it makes any difference. Since you're turning on the interrupts before you get everything initialized, I think there's a chance you're actually getting a TMR1 interrupt during your initialization code (since the contents of TMR1H & TMR1L are not defined at startup, you could get an interrupt almost immediately if they both happen to like coming up as 0xFF). Since you're not saving W in the interrupt routine, you can't depend on the value of W actually being what you think it is from instruction to instruction (i.e. it could suddenly be 0xFF, as that's the last value it has during the interrupt). Regards, Wayne -- http://www.piclist.com hint: PICList Posts must start with ONE topic: [PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads