#include <18F4550.h>
#device adc=10
#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES BORV20 //Brownout reset at 2.0V
#FUSES NOPUT //No Power Up Timer
#FUSES NOCPD //No EE protection
#FUSES NOSTVREN //Stack full/underflow will not cause reset
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWRT //Program memory not write protected
#FUSES NOWRTD //Data EEPROM not write protected
#FUSES NOIESO //Internal External Switch Over mode disabled
#FUSES NOFCMEN //Fail-safe clock monitor disabled
#FUSES NOPBADEN //PORTB pins are configured as digital I/O on RESET
#FUSES NOWRTC //configuration not registers write protected
#FUSES NOWRTB //Boot block not write protected
#FUSES NOEBTR //Memory not protected from table reads
#FUSES NOEBTRB //Boot block not protected from table reads
#FUSES NOCPB //No Boot Block code protection
#FUSES MCLR //Master Clear pin enabled
#FUSES NOLPT1OSC //Timer1 configured for higher power operation
#FUSES NOXINST //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES PLL1 //No PLL PreScaler
#FUSES CPUDIV1 //No System Clock Postscaler
#FUSES NOUSBDIV //USB clock source comes from primary oscillator
#FUSES NOVREGEN //USB voltage regulator disabled
#FUSES NOICPRT //ICPRT disabled
#use delay(clock=20000000)
#include <LCD.C>
float PRESION;
float PRESION2;
float DIFPRE;
void main()
{
int16 PD;
setup_adc_ports(AN0_TO_AN1|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
lcd_init();
while (1)
{
set_adc_channel (0);
delay_us(20);
PD=read_adc();
PRESION=(0.03469726563*PD)-0;
set_adc_channel (1);
delay_us(20);
PD=read_adc();
PRESION2=(0.03469726563*PD)-0;
// Asumiendo un pulsador a negativo en RB0 y una resistencia pullup a +5V...
if(input(PIN_B0)) // No se ha presionado el botón en RB0...
{
lcd_putc(\f); // Borrar la pantalla
lcd_send_byte (0,0x0F);
printf(lcd_putc
, "P1= %3.2fPSI", PRESION
); lcd_gotoxy(16,1);
lcd_send_byte (0,0x0F);
lcd_gotoxy(1,2);
printf(lcd_putc
, "P2= %3.2fPSI", PRESION2
); }
else // Se ha presionado el botón en RB0...
{
DIFPRE=(PRESION-PRESION2);
lcd_putc(\f); // Borrar la pantalla
printf(lcd_putc
, "Dif= %3.2fPSI", DIFPRE
); }
}
}