Ohne diesen Controller genauer zu kennen und ohne alles durchgesehen zu haben fallen mir ein Paar Dinge in deinem Code auf:
- im Hauptprogramm wird das T0IE bit (also INTCON<5>) nicht gesetzt? Ohne TMR0-Interrupt Enable kein TMR0-Interrupt.
- in der ISR wird das T0IF nicht gelöscht. Ohne Löschung läuft die Timer0-ISR in Endlosschleife
- dein Kommentar //RETFIE wird von XC8 autom. generiert, ebenso GIE=0. (heißt es) macht keinen rechten Sinn. Das Global Interrupt Enable ist aktiviert, wenn =1;
Zitat aus dem Datenblatt
4.4.2 Timer0 Interrupt
A Timer0 interrupt is generated when the TMR0
register timer/counter overflows from FFh to 00h. This
overflow sets the T0IF bit. The interrupt can be masked
by clearing the T0IE bit (INTCON<5>). The T0IF bit
(INTCON<2>) must be cleared in software by the
Timer0 module Interrupt Service Routine before re-
enabling this interrupt.
Lesezeichen