Estoy empezando ahora a usar el PIC18F2550, por lo que os registros apenas los controlo. Si fuera en el 16F876 si podría ayudarte con más seguridad. Te adjunto un programa en mikroc para que puedas echarle un vistazo.
Project name:
LED_Blinking2 (Simple 'Hello World' project)
* Copyright:
(c) MikroElektronika, 2005-2008
* Description:
This is a simple 'Hello World' project. It turns on/off diodes connected to
PORTB. It demonstrates the usage of the SWITCH structure to access PORTB
pins.
* Test configuration:
MCU: P18F4520
Dev.Board: EasyPIC5
Oscillator: HS, 08.0000 MHz
Ext. Modules: -
SW: mikroC v8.0
* NOTES:
None.
*/
void main() {
ADCON1 = 0x0F; // Set AN pins to Digital I/O
PORTB = 0; // initialize PORTB
TRISB = 0; // configure PORTB as output
do {
switch (PORTB) { // read PORTB and switch
case 0x00: PORTB = 0xFF; break;
case 0xFF: PORTB = 0x00;
}
Delay_ms(1000);
} while (1);
}
Usas el oscilador interno? ¿te has asegurado que el tiempo que trancurre hasta que se desborda el TMR0IF es de 1 seg. Porque creo que esta configurado a 8 bits con prescaler, pero no creo que llegue hasta 1 segundo. Son cosas que se me ocurren,no puedo ayudarte más.
Te dejo otro ejemplo:
/*
* Project name:
LED_Blinking (Simple 'Hello World' project)
* Copyright:
(c) MikroElektronika, 2005-2008
* Description:
This is a simple 'Hello World' project. It turns on/off diodes connected to
PORTC. It uses bitwise negation to toggle PORTC pins.
* Test configuration:
MCU: P18F4520
Dev.Board: EasyPIC5
Oscillator: HS, 08.0000 MHz
Ext. Modules: -
SW: mikroC v8.0
* NOTES:
None.
*/
void main() {
PORTC = 0; // Initialize PORTC
TRISC = 0; // Configure PORTC as output
while(1) {
PORTC = ~PORTC; // toggle PORTC
Delay_ms(1000); // one second delay
}
}
Un saludo, ya comentarás que te pasa.