You are on page 1of 3

#include <16f877a.

h>
#device adc=10
int m=0;

#fuses XT,NOWDT
#use standard_io(b)
#use delay(clock=4000000)
#define use_portd_lcd TRUE
#include <lcd.c>
#int_TIMER1
void TIMER1_isr(void)
{
switch(m)
{case(0):
break;
case(1):
output_toggle(pin_c2);
set_timer1(64777);
break;
case (2):
output_toggle(PIN_c2);
set_timer1(64777);
break;
case (3):
output_toggle(PIN_c2);
set_timer1(64777);
break;
}
}

void main(){
int16 q;
float p;

setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(ALL_ANALOG);
lcd_init();
while (true){
if (input(pin_b6)==1){
switch (m){
case(0):
break;

case(2):
set_adc_channel(2);
delay_us(20);
q=read_adc();
p=1.8*((0.485976452*q)-25.10785993)+32;

printf(lcd_putc, "\f%01.1f\nFahrenheit", p);

delay_ms(100);

if(p>212){
delay_ms(200);
output_toggle(pin_c2);
delay_ms(500);
setup_timer_1 (T1_INTERNAL|T1_DIV_BY_1);
set_timer1 (64777);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);}
else{
output_low(pin_c2);}
break;

case(3):
{
set_adc_channel(2);
delay_us(20);
q=read_adc();
p=((0.485976452*q)-25.10785993)+273.15;

printf(lcd_putc, "\f%01.1f\nKelvin", p);

delay_ms(100);

if(p>373){
delay_ms(200);
output_toggle(pin_c2);
delay_ms(500);
setup_timer_1 (T1_INTERNAL|T1_DIV_BY_1);
set_timer1 (64777);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);}
else{
output_low(pin_c2);}
}
break;

case(1):
{
set_adc_channel(2);
delay_us(20);
q=read_adc();
p=((0.485976452*q)-25.10785993);

printf(lcd_putc, "\f%01.1f\nCelsius", p);

delay_ms(200);

if(p>100){
delay_ms(200);
output_toggle(pin_c2);
delay_ms(500);
setup_timer_1 (T1_INTERNAL|T1_DIV_BY_1);
set_timer1 (64777);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);}
else{
output_low(pin_c2);}
}
break;
}}
if(input(PIN_B6)==1)
{
m++;
if(m>3)
{
m=0;
}
} }}

You might also like