#include "adc0808.h"
#define  UCHAR unsigned char
#define  UINT unsigned int

extern UCHAR idata buffer[8] ;

/*pulso en patilla Start para iniciar la conversion*/
void inicio(void)
{
    START=1;
    START=0;
}
//Pulso en ALE para hacer q leea la direccion dada
void direccion(void)
{
	ALE=1;
	ALE=0;
}

UCHAR leer_dato(UCHAR canal)  
{
	UCHAR i,var;
	//Habria que comprobar si esta libre
	DIRE_ADC &= 0xF8 ;
	DIRE_ADC |= (canal&0x07); //Solo le pasamos los 3 bits de menos peso como direccion
	direccion();			//Hacemos que el ADC nos leea la direccion

	inicio();				//Le decimos q inicie la conversion
	while(i++);				//255us de espera, mientras se lleva acabo la conversion

	OE=1;					//Activamos la salida

	i=220;
	while(i++); //35 us de espera

	var=VALOR_ADC;			//Almacenamos el valor en var

	OE=0;					//Desactivamos la salida
	return(var);
}
void barrido(UCHAR * buffer, UCHAR cant)
{
	UCHAR i;
	for(i=0;i<cant;i++)
	{
		*(buffer+i)=leer_dato(i);
	}
}

void barrido_con_mascara(UCHAR MASQ)
{
	UCHAR i;
	for (i=0;i<8;i++)
	{
		if (MASQ^i) //no funciona. Probar rotando la mascara 
		{
			buffer[i]=0x00;
		}
		else 
		{	
			buffer[i]=leer_dato(i);
		}
	}
}//Fin barrido con mascara	
