Hola un saludo , les dejo una duda que tengo , estoy programando un PIC16F819, creo haber programado bien el oscildor y la división para la lectura del adc, pero cuando lo simulo en Proteus tengo el problema que cuando varío el termisntor para el cambio de temperatura el ADC se demora mucho en actualizar el valor. Les pido de ante mano disculpas, soy nuevo en esto de programar PIC y estoy aprendiendo C almismo momento, queiro ir poco a poco si me pudieran ayudar.
Gracias
les dejo lo que tengo de programa hasta ahora.
// INCUBADORA CON PIC16F819
#include <xc.h>
#define _XTAL_FREQ 8000000
#include "configurar_pic.h"
#include "flex_lcd.h"
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
ADCON1 = 0x8E;
ADCON0 = 0x45;
OSCCON = 0b01110101;
TRISA = 0x01;
TRISB = 0x00;
PORTB = 0x00;
Lcd_Init ();
Lcd_Cmd(LCD_CLEAR);
Lcd_Cmd(LCD_CURSOR_OFF);
Lcd_Out(1,1, "*-Bienvenido-*");
__delay_ms(500);
int dato;
int str [10];
while (1)
{
{
if (ADCON0bits.GO_DONE==0);
ADCON0bits.GO_DONE=1;
dato=ADRESH<<8 | ADRESL;
sprintf(str,"%d",dato);
Lcd_Out(1,0,"Lectura ADC=");
Lcd_Out2(1,12,str);
__delay_ms(100);
if (dato > 445)
PORTBbits.RB7 =1;
else if (dato <=392)
PORTBbits.RB7 =0;
else
PORTBbits.RB7 =0;
}
PORTBbits.RB3 = 1;
__delay_ms(500);
PORTBbits.RB3 = 0;
__delay_ms(500);
PORTBbits.RB1 = 1;
__delay_ms(500);
PORTBbits.RB1 = 0;
__delay_ms(500);
PORTBbits.RB4 = 1;
__delay_ms(500);
PORTBbits.RB4 = 0;
__delay_ms(500);
}
return;
}