#include "16F876.h"
#fuses NOLVP,XT,NOWDT,NOPROTECT,PUT
#use delay (clock=4000000)
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
#byte port_a = 5
#byte port_b = 6
#byte port_c = 7
#INT_TIMER1
control_timer1()
{
if ( input(PIN_c4)){output_bit(PIN_C4,0);}
else { output_bit(PIN_C4,1);}
}
void main(void) {
int lectura_adc;
int temperatura;
set_tris_a(0x0B); // RA0,RA1 y RA3 como entradas
port_b_pullups(TRUE); // Resistencias de polarización del puerto B
set_tris_b(0xC0); // RB7,RB6,RB2 & RB1 como entradas, RB3:5 & RB0 salidas
set_tris_c(0x00); // Puerto C entero como salida
setup_adc_ports(ALL_ANALOG);
enable_interrupts(GLOBAL);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
delay_us(30); // Tiempo de adquisición
output_bit(PIN_B3,0);
output_bit(PIN_B4,0);
output_bit(PIN_B5,0);
output_bit(PIN_C4,0);
// INICIAR TIMER 1 Y SU INTERRUPCION
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
enable_interrupts (INT_TIMER1);
while(1) {
set_adc_channel(0);
delay_ms(1);
temperatura=read_adc();
delay_ms(20);
temperatura=(int) ((temperatura*5*10/255);
if(temperatura < 27) { //27ºc
output_bit(PIN_B3,1);
output_bit(PIN_B4,0);
output_bit(PIN_B5,0);}
if(temperatura >= 27 & temperatura <= 28) { //27ºc y 28ºc
output_bit(PIN_B3,1);
output_bit(PIN_B4,1);
output_bit(PIN_B5,0);}
if(temperatura > 28) { //28ºc
output_bit(PIN_B3,1);
output_bit(PIN_B4,1);
output_bit(PIN_B5,1);}
}} // fin while