Cordial saludo, he estado trabajando en el desarrollo de un frecuencímetro haciendo uso del PIC18F4550, estoy trabajando con el oscilador interno a 8Mhz, sin embargo tengo un error al momento de que la simulación concuerde con el resultado esperado en el montaje físico, puesto que mientras que en la simulación me entrega el valor esperado, en físico me entrega valores muy altos, por ejemplo en la imagen con una frecuencia de 1KHz en físico me entrega una frecuencia de 48076.92 en el LCD, adjunto el codigo
#define LCD_RS_PIN PIN_D0
#define LCD_RW_PIN PIN_D1
#define LCD_ENABLE_PIN PIN_D2
#DEFINE LCD_DATA4 PIN_D3
#DEFINE LCD_DATA5 PIN_D4
#DEFINE LCD_DATA6 PIN_D5
#DEFINE LCD_DATA7 PIN_D6
#define INDI PIN_A1
#include <lcd.c>
int8 cont;
int1 BITS[32]; //Tiene 16 bits
int16 Tia,Tib,Temp;
float peri,frec,T;
#INT_EXT
void RB0(void){
Tia=get_timer1();//Obtiene el valor del timer1, que otorga valores de hasta 63940
Temp=Tia-Tib;
Tib=Tia;
void main()
{
lcd_init();
SET_TRIS_A(0x00);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
SETUP_TIMER_1(T1_INTERNAL|T1_DIV_BY_8);
EXT_INT_EDGE(L_TO_H);
while(TRUE){
T=4*8.0/20000000.0;
peri=T*Temp;
frec=(1/peri);
lcd_gotoxy(1,1);
printf(lcd_putc,"F=%f"frec);
while(TRUE){
T=4*8.0/20000000.0;
peri=T*Temp;
frec=(1/peri);
lcd_gotoxy(1,1);
printf(lcd_putc,"F=%f"frec);
lcd_gotoxy(1,2);
printf(lcd_putc,"Start=%u",BIT_INIC);
}