#include <16F873A.H>
#fuses PUT,BROWNOUT,NOWDT,NOLVP,XT,PROTECT,WRT_50%,CPD	//Fusibles de programacion
#use delay(clock=4M)                  					                //Frecuencia de trabajo
#use i2c (master,scl=PIN_C3,sda=PIN_C4,slow)   			          //Habilita funciones I2C por hardware
#use fast_io (C)								//Configuracion de los puertos
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)   		      //Habilita las funciones RS232, velocidad a 9600 baudios

#define Tx			printf
#define Rx			getc
#define Tx_char		putc
#define lcd_xy		lcd_gotoxy
#define	lcd_char	lcd_putc	

int I2C_Buffer [16];            						//buffer de recepción de un dispositivo I2C
int1 data=0;

#include <I2C_16-18FXXX.H>            					//Incluye rutinas I2C básicas de propósito general            
#include <SRF02_multidir.H>         					//Incluye rutinas de control del sónar SRF02 multidireccion
#include "lcdb.c"										//Incluye rutinas para el manejo de la LCD en el puerto B

#int_CCP2												//Interrupcion  para el control de la medida								
void go_done_isr(void)
{
	if(data)
		data = false;
	else
		data = true;
}

void main()
{  
   	int16   resultado1,resultado_old=0;

   	SETUP_ADC_PORTS(NO_ANALOGS);
	SETUP_CCP2(CCP_CAPTURE_FE);
	enable_interrupts(INT_CCP2);
	enable_interrupts(GLOBAL);
   	lcd_init();
   
   	lcd_char("\fSRF02 - M.L.O");  
   	putc(0x0c);
   	Tx("SRF02 - M.L.O\r\n");
   	delay_ms(1000);

   	lcd_char("\f");
   	while(true)
   	{
		if(data)
		{
		SRF02_cm(SRF02_1);//SRF02_1 : 0xE0
		resultado1=make16(I2C_Buffer[0],I2C_Buffer[1]);
		lcd_xy(1,1);
		Tx(lcd_char,"dx:%lu cm             ",resultado1);
		if(resultado1 != resultado_old)
			{
			Tx("dx: %lu cm \r\n", resultado1);
			resultado_old = resultado1;
			}
		}
		else
		{
		lcd_xy(1,1);
		lcd_char("ESPERANDO ACTIVACION");
		}
}
