Está en la página 1de 2

/*REALIZAR EL SIGUIENTE PROCESO:SE NECESITA SOLICITAR EL ARRANQE DE UN PROCESO POR

MEDIO DE UNA CLAVE DE


ACCESO. ESTA CLAVE ES DE DOS DIGITOS Y POR DEFECTO ES 87. SI LA CLAVE ES INCORRECTA
SE DEBE MOSTRAR UN MENSAJE
DE CLAVE INCORRECTA Y SOLICITAR NUEVAMENTE LA CLAVE. SI LA CLAVE ES CORRECTA SE
DEBE MOSTRAR EL NIVEL Y LA
PRESION EXISTENTES EN UN TANQUE. SI EL NIVEL ES MAYOR O IGUAL A 50 PULGADAS SE DEBE
EMITIR UNA ALARMA QUE SE
MANTENDRA SIEMPRE QUE ESTA CONDICION SE CUMPLA.
TOME EN CUENTA QUE EL TAMA�O EL TRANSMISOR DE NIVEL TENDRA UNA RESOLUCION DE 4,8
mVOLTS POR CM Y EL
TRANSMISOR DE PRESION TIENE UNA RESOLUCION DE 10 mVOLTS POR PSI.

CABE DESTACAR QUE EL NIVEL Y LA PRESION EN EL TANQUE DEBEN SUPERVISARSE EN TODO


MOMENTO EN LA LCD*/

#include <16F877a.H>
#device ADC=10
#fuses XT, NOWDT, NOPROTECT, PUT, NOLVP
#use delay(clock = 4000000)
#use fast_io(c)

void BINBCD();

#define ALARMA PIN_C4

#include <lcd.c>
#include <kbd1.c>

char T,cont=2,TECLA[2];
float LT,PT;

Void main()
{
setup_adc(ADC_CLOCK_INTERNAL);

lcd_init(); //Inicializa la pantalla LCD


kbd_init();
port_b_pullups(TRUE);
set_tris_c(0b00000000);

Inicio: PRINTF(LCD_PUTC,"\fINTRODUCIR CLAVE");

lcd_gotoxy(7,2);

loop: T=kbd_getc();
if (T=='\0')
goto loop;
else
lcd_putc('\*'); //Muestra * en vez de los digitos.
TECLA[cont-1]=T;
--cont;
if(cont!=0)
goto loop;
else
cont=2;
if ((TECLA[1]=='8')&&(TECLA[0]=='7'))
goto TX;
else
DELAY_MS(1000);
PRINTF(LCD_PUTC,"\fClave Incorrecta");
delay_ms(2000);
goto Inicio;

TX: setup_adc_ports(AN0_AN1_AN3);
delay_ms(500);
set_adc_channel(1);
delay_us(20);

LT=read_adc();

setup_adc_ports(AN0_AN1_VSS_VREF);

delay_ms(500);
set_adc_channel(0);
delay_us(20);

PT=read_adc()/2;

PRINTF(LCD_PUTC,"\fNIVEL=%1.1f cm\n",LT);
PRINTF(LCD_PUTC,"\PRESION=%1.1f psi",PT);

if (LT>=50)
{
output_high(ALARMA);
goto TX;
}
else
output_low(ALARMA);
goto TX;

También podría gustarte