You are on page 1of 3

#include <16f887.

h>
#FUSES NOWDT, NOPUT, INTRC_IO, NOMCLR, NOPROTECT, NOBROWNOUT, NOWRT
#USE DELAY(internal = 8MHZ)
#INCLUDE <LCD.C>
#DEFINE TRIG PIN_B1
#DEFINE ECHO PIN_B2
#DEFINE IMAN PIN_B3
#DEFINE CALIBRACION 0
INT START=0;
INT16 TEMP=0, DIST=0;
INT DISTANCIA()
{
/*
LCD_PUTC("\f");
LCD_GOTOXY(1,1);
LCD_PUTC("CALCULANDO");
LCD_GOTOXY(1,2);
LCD_PUTC("DISTANCIA");
DELAY_MS(1000);
*/
OUTPUT_HIGH(TRIG);
DELAY_US(10);
OUTPUT_LOW(TRIG);
WHILE(INPUT(ECHO)==0)
{
}
SET_TIMER1(0);
WHILE(INPUT(ECHO)==1)
{
}
TEMP=GET_TIMER1();
DIST=(TEMP*0.017)+CALIBRACION;
/*
LCD_GOTOXY(1,1);
LCD_PUTC("DISTANCIA
");
LCD_GOTOXY(1,2);
LCD_PUTC("CALCULADA
");
DELAY_MS(1000);
*/
LCD_GOTOXY(1,1);
LCD_PUTC("DISTANCIA
");
LCD_GOTOXY(1,2);
PRINTF(LCD_PUTC,"=%2LU CM
", DIST);
DELAY_MS(500);
RETURN DIST;
}
FLOAT TIEMPO()
{
RETURN TEMP;
}
#INT_EXT
VOID COMIENZO()
{
IF (INPUT(PIN_B0)==0) START=1;
}
#INT_RB
VOID LED()

{
IF (INPUT(PIN_B7)==0) OUTPUT_TOGGLE(PIN_B4);
}
VOID MAIN ()
{
LCD_INIT();
PORT_B_PULLUPS(0B10000001);
SET_TRIS_B(0B10001101);
DELAY_MS(10);
ENABLE_INTERRUPTS(INT_EXT);
ENABLE_INTERRUPTS(INT_RB7);
ENABLE_INTERRUPTS(GLOBAL);
EXT_INT_EDGE(H_TO_L);
SETUP_TIMER_1(T1_INTERNAL|T1_DIV_BY_2);
OUTPUT_HIGH(IMAN);
LCD_GOTOXY(1,1);
LCD_PUTC("CONSTANTE");
LCD_GOTOXY(1,2);
LCD_PUTC("GRAVITACIONAL");
DELAY_MS(1000);
LCD_PUTC("\f");
LCD_GOTOXY(1,1);
LCD_PUTC("INICIANDO");
DELAY_MS(500);
LCD_GOTOXY(1,1);
LCD_PUTC("INICIANDO.");
DELAY_MS(500);
LCD_GOTOXY(1,1);
LCD_PUTC("INICIANDO..");
DELAY_MS(500);
LCD_GOTOXY(1,1);
LCD_PUTC("INICIANDO...");
DELAY_MS(500);
LCD_PUTC("\f");
WHILE(TRUE)
{
SWITCH (START)
{
CASE 0:
LCD_GOTOXY(1,1);
LCD_PUTC("PRESIONE BOTON");
LCD_GOTOXY(1,2);
LCD_PUTC("PARA INICIAR");
DELAY_MS(200);
BREAK;
CASE 1:
DIST=DISTANCIA();
//START++;
BREAK;
CASE 2:
TEMP=TIEMPO();
START++;
BREAK;
/*
CASE 3:
CALCULO();
START=0;

BREAK;
*/
}
}
}

You might also like