Rutina timer para el 16LF84A

buenas, tengo una rutina que mete un retardo de medio segundo del 16F876A y quisiera usarla para el 16LF84A. Pero parece que no funciona. El sistema se queda congelado en el primero display.

Uso Sdcc y Piklab.

#include <pic16f84a.h>
#define T_10ms 217

//rutina que mete un retardo de 10ms.
void timer0_delay(unsigned char t0ini) {
TMR0=t0ini;
T0IF=0;
while(T0IF==0);

}

//rutina que ejecuta 10ms tantas veces como la variable duraction
void timer0_delay_long(unsigned int duraction) {
unsigned int i;
for (i=0;i<duraction;i++)
timer0_delay(T_10ms);
}

void main(void) {
int tabla7s={0x20,0xae,0x44........};
TRISB=0X00;
T0CS=0; PSA=0;
PS2=1; PS1=1; PS0=1;

PORTB=tabla7s[0];
timer0_delay_long(50);
PORTB=tabla7s[1];
timer0_delay_long(50);
PORTB=tabla7s[2];
timer0_delay_long(50);

}
 
Atrás
Arriba