#include <18F4550.h>
#device adc=10
#FUSES NOWDT
#FUSES WDT128
#FUSES PLL1
#FUSES CPUDIV1
#FUSES NOUSBDIV
#FUSES XT
#FUSES NOBROWNOUT
#FUSES NOMCLR
#FUSES NOLVP
#FUSES NOXINST
#use delay(clock=4000000)
#use FIXED_IO( A_outputs=PIN_A1 )
#use FIXED_IO( B_outputs=PIN_B1 )
#define LED1 PIN_B1
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1)
float inVolt, voltMinimo, voltMaximo;
float resultado, conversion, conversion1;
char qIn;
int menu;
void main()
{
setup_adc_ports(AN0);
setup_adc(adc_clock_internal);
set_adc_channel(0);
setup_timer_3(T3_DISABLED | T3_DIV_BY_1);
output_low(LED1);
menu = 1;
conversion=(float)(read_eeprom(0))-48;
conversion=conversion*10;
conversion1=(float)(read_eeprom(1))-48;
conversion1=conversion + conversion1;
voltMinimo=conversion1/10;
conversion=(float)(read_eeprom(2))-48;
conversion=conversion*10;
conversion1=(float)(read_eeprom(3))-48;
conversion1=conversion + conversion1;
voltMaximo=conversion1/10;
while(TRUE)
{
while(menu==1)
{
inVolt = read_adc();
delay_ms(100);
resultado = inVolt*(float)0.004887585532;
printf("Tension de entrada: %.1f \n\r", resultado
);
if(resultado<=voltMinimo || resultado>=voltMaximo) output_high(LED1);
else output_low(LED1);
if(kbhit())
{
if(qIn=='q'||'Q')
menu=0;
}
}
while(menu==0)
{
printf("n - Ingresa valor minimo \r\n"); printf("x - Ingresa valor maximo \r\n"); printf("a - A cerca de... \r\n"); printf("q - Salir del menu \r\n");
switch(qIn)
{
case 'n':printf("\r\nParte entera?: "); write_eeprom(0, qIn);
conversion=(float)(qIn - 48);
conversion=conversion*10;
printf("\r\nParte decimal?: "); write_eeprom(1, qIn);
conversion1=(float)(qIn - 48);
conversion1=conversion + conversion1;
voltMinimo=conversion1/10;
printf("%.1f \r\n", voltMinimo
); break;
case 'x':printf("\r\nParte entera?: "); write_eeprom(2, qIn);
conversion=(float)(qIn - 48);
conversion=conversion*10;
printf("\r\nParte decimal?: "); write_eeprom(3, qIn);
conversion1=(float)(qIn - 48);
conversion1=conversion + conversion1;
voltMaximo=conversion1/10;
printf("%.1f \r\n", voltMaximo
); break;
case 'a':printf("\r\nTODOPIC\r\n"); break;
case 'q':menu=1;
break;
default:break;
}
}
}
}