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);
}
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);
}