Muy buenas a todos. Buscando por el foro he encontrado muchísima informacion sobre el timer0 pero sobre todo para usarlo midiendo tiempos, y ahora creo que necesito usarlo como contador y aunque lo he intentado un par de veces no lo conseguí (me hacia cosas raras). El problema me lo encuentro en este programa:
#include <16f84a.h> //pic a utilizar
#fuses XT,NOWDT,NOPROTECT,PUT //ordenes para el programador
#use delay (clock=4000000) //Fosc=4Mhz
#define use_portb_lcd TRUE //definir portb lcd
#include <lcd.c> //libreria manejo lcd
int contador=0;
///PROGRAMA
void main(void)
{
set_tris_b("0b00001000");
lcd_init(); //inicializa lcd
printf(lcd_putc,"%u",contador);
contador++;
while(TRUE)
{
if (!input(PIN_B3))
{
lcd_putc("\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"%u",contador);
contador++;
delay_ms(200);
}
}
}
Este programa muestra por la LCD cuantas veces has pulsado un boton, asi de simple. Como veis hago un retardo, eso lo hago porque no soy tan rápido soltando el pulsador y me cuenta de más

la solucion para esto es el timer, que creo que funciona por flanco de subida o bajada.
Alguien me podria adaptar el codigo, o darme una pequeña idea? yo lo que hago es conectar a la patita de CLKIN del timer el pulsador a tierra y un puente a +5v, de ese modo al tener un flanco de bajada segun lo que he entendido, se sumaria uno al timer, y asi constantemente hasta que se desborde y salte a la interrupcion (en donde puede resetearlo para seguir sumando).
Quiero entender que el prescaler no vale para nada aqui, ya que no funciona con el reloj interno.
En fin, haciendo esto que os digo no consegui hacer funcionar el timer en otra ocasion, lo probé con un led, y éste se encendia cuando le daba la gana en vez de cuando se desbordaba
