/*****************************************************************************/
/* Encoder.c      Julio-2007                                                 */
/*---------------------------------------------------------------------------*/
/* Ejemplo para comprobar los encoders del skybot                            */
/*---------------------------------------------------------------------------*/
/* Prueba del encoder conectado como sensor1. El skybot empieza a avanzar.   */
/* Cuando el sensor detecta 5 transiciones entre el blanco y el negro, en    */
/* cualquier orden, enciende el led y se para.                               */
/*---------------------------------------------------------------------------*/
/*  Javier Valiente <jvaliente@ifara.com>                                    */
/*---------------------------------------------------------------------------*/
/*  LICENCIA GPL                                                             */
/*****************************************************************************/

//-- Especificar el pic a emplear
#include <pic16f876a.h>

//-- Definiciones de los sensores
#define   SENSOR1  0x01
#define   SENSOR2  0x20

#define   ENCODER1 SENSOR1
#define   LED 0x02


unsigned char sensor;

// Contar numero de vueltas

void CuentaNTransiciones(unsigned char num_segmentos)
{
  unsigned char i=0;
  unsigned char old_lectura_sensor, new_lectura;

  old_lectura_sensor = (PORTB & ENCODER1);

  while (i < num_segmentos)
  {
    new_lectura = (PORTB & ENCODER1);
    if (old_lectura_sensor != new_lectura)
        {
          old_lectura_sensor = new_lectura;
          i++; // Suma una transicion
        }
  }
}


void main(void)
{
    TRISB = 0xE1;
        PORTB = 0x1C;
    CuentaNTransiciones(5);
    PORTB=LED; //-- Encender LED y desactivar motores
}