# include <p18f4550.h>
# include <delays.h>
# include <xlcd.h>
# include <math.h>
# pragma config FOSC =HS , FCMEN =OFF , IESO =OFF , CPUDIV = OSC2_PLL3
# pragma config PWRT =ON , BOR =OFF , BORV =0, WDT =OFF , WDTPS =32768
# pragma config MCLRE =ON , LPT1OSC =OFF , PBADEN =OFF , CCP2MX = OFF
# pragma config STVREN =OFF , LVP =OFF , XINST =OFF , DEBUG = OFF
# pragma config CP0 =OFF , CP1 =OFF , CP2 =OFF , CPB =OFF , CPD = OFF
# pragma config WRT0 =OFF , WRT1 =OFF , WRT2 = OFF
# pragma config WRTB =OFF , WRTC =OFF , WRTD = OFF
# pragma config EBTR0 =OFF , EBTR1 =OFF , EBTR2 =OFF , EBTRB = OFF
void DelayFor18TCY(void){
Delay10TCYx(2);
}
void DelayPORXLCD(void){
Delay1KTCYx(15);
}
void DelayXLCD(void){
Delay1KTCYx(5);
}
int a=0,b=0,c=0,d=0;
void main(){
OpenXLCD(FOUR_BIT & LINES_5X7);
PORTC=0;
while (1){
float v1=0,v2=0;
TRISD=0;
TRISC=0;
ADCON1=10;// analogas 0-4, vferencia vdd y vss
ADCON2=128;//fosc/2 , 0tad, justifica a derecha
ADCON0=3;
ADRESL=0;ADRESH=0;ADCON0bits.GO=1;
while (ADCON0bits.GO==1){}
v1=(((ADRESH*256)+ADRESL)*4.886)/995;
v1=v1*100;
v2
=2952.35*pow(v1
,-1.19);a=(v2/10);
b=(v2)-(a*10);
d=v2;
if (d<=10){
PORTCbits.RC0=1;
WriteCmdXLCD(1);
Delay10KTCYx(1);
SetDDRamAddr(0x00);
putrsXLCD("Alerta Objeto a");
Delay10KTCYx(1);
SetDDRamAddr(0x43);
WriteDataXLCD(0x30+a);
Delay10KTCYx(1);
SetDDRamAddr(0x44);
WriteDataXLCD(0x30+b);
Delay10KTCYx(1);
SetDDRamAddr(0x46);
putrsXLCD("Cms");
Delay10KTCYx(30);
}
else {
PORTCbits.RC0=0;
WriteCmdXLCD(0x01);
Delay10KTCYx(1);
SetDDRamAddr(0x00);
WriteDataXLCD(0x30+a);
SetDDRamAddr(0x01);
WriteDataXLCD(0x30+b);
SetDDRamAddr(0x40);
putrsXLCD("Cms");
Delay10KTCYx(30);
}
}
}