#include <18F4550.h>
#device adc=8
#include <math.h>
#FUSES NOWDT
#fuses NOMCLR,INTRC_IO,NOWDT,NOPROTECT,NOLVP
#use delay(clock=8000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#use standard_io(c)
#include <LCD.C>
void main()
{
int q;
float p,T;
char recepcion;
char lectura;
byte pwm;
setup_adc_ports( AN0||VSS_VDD); //Canal 0 analógico
setup_adc(ADC_CLOCK_INTERNAL); //Fuente de reloj RC
set_tris_a(0x00);
setup_ccp2(CCP_PWM);
setup_timer_2(T2_DIV_BY_4, 99, 1);
lcd_init();
do{
set_adc_channel(0); //Habilitación canal0
delay_us(20);
q = read_adc(); //Lectura canal0
p = 5.0 * q / 256.0; //Conversión a tensión
T = p / 0.01 ;
printf(lcd_putc
,"\fTemp = %01.2f C", T
); printf(lcd_putc
,"\nVoltage = %01.2f V", p
); delay_ms(45);
if(recepcion=='R')
{
delay_ms(45);
}
output_high(pin_c0);
output_low(pin_c1);
if(lectura=='S'){
set_pwm2_duty(pwm);
}
if(lectura=='R'){
output_low(pin_c0);
output_high(pin_c1);
delay_ms(60);
}
}while(1);
}