/*****************************************************************************/ /* sensores.c Junio-2005 */ /*---------------------------------------------------------------------------*/ /* Ejemplo para el skybot */ /*---------------------------------------------------------------------------*/ /* Se lee el estado de los 4 sensores y se envia por el puerto A. Si se */ /* conectan 4 leds a los bits RA0, RA1, RA2 y RA3 se veran respectivamente */ /* los sensores 1, 2 , 3 y 4 */ /* Este programa es muy util para comprobar el correcto funcionamiento */ /* de todos los sensores, pero es necesario la conexion de leds externos. */ /* Este ejemplo funciona perfectamente con la placa FREELEDS, que tiene 8 */ /* leds */ /*---------------------------------------------------------------------------*/ /* Andres Prieto-Moreno <andres@ifara.com> */ /* Juan Gonzalez <juan@iearobotics.com> */ /* Modificado por: 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 SENSOR3 0x40 #define SENSOR4 0x80 //-- Definiciones de los bits del puerto A #define RA0 0x01 #define RA1 0x02 #define RA2 0x04 #define RA3 0X08 //---------------------------- //- Comienzo del programa //---------------------------- void main(void) { //-- Configurar puerto A para salida TRISA=0; //-- Configurar el puerto B para trabajar con el Skybot //-- RB0, RB5, RB6 y RB7 como entradas //-- RB1, RB2, RB3 y RB4 como salidas TRISB=0xE1; //-- Los motores del Skybot parados PORTB=0x00; //-- Inicialmente los leds apagados PORTA=0x00; //-- Bucle principal while(1) { //-- Sensor 1 lee blanco? if ((PORTB & SENSOR1)==0) { PORTA&=~RA0; //-- si, Apagar el led } else { PORTA|=RA0; //-- no, Encender led } //-- Sensor 2 lee blanco? if ((PORTB & SENSOR2)==0) { PORTA&=~RA1; //-- si, Apagar el led } else { PORTA|=RA1; //-- no, Encender led } //-- Sensor 3 lee blanco? if ((PORTB & SENSOR3)==0) { PORTA&=~RA2; //-- si, Apagar el led } else { PORTA|=RA2; //-- no, Encender led } //-- Sensor 4 lee blanco? if ((PORTB & SENSOR4)==0) { PORTA&=~RA3; //-- si, Apagar el led } else { PORTA|=RA3; //-- no, Encender led } } }