EJEMPLO 1: Manejo de Puertos Mediante instrucciones Input y Ouput

Con este ejemplo se pretende mostrar como se realiza el manejo de puertos mediante las instrucciones input y output, para ello se tiene un interruptor en RC0, el cual si se encuentra en cero realiza una secuencia en los leds conectados al puerto B, y si el interruptor se encuentra en uno realiza otra secuencia diferente. 

//******************************************************************************************
//////////// CONFIGURACION DE PUERTOS MEDIANTE INSTRUCCIONES INPUT Y OUTPUT ////////////////
// SE REALIZA UN SECUENCIADOR DE LUCES POR EL PUERTO B CAMBIANDO DE SECUENCIA DEPENDIENDO //
/////////////// DEL ESTADO DEL PIN RC0, AL CUAL LE CONECTAREMOS UN INTERRUPTOR /////////////
//******************************************************************************************
#INCLUDE <18F4550.h>             // LIBRERIA PARA EL 4550
//******************************************************************************************
//////////////////PALABRA DE CONFIGURACION CON CRISTAL DE 4Mhz XT///////////////////////////
#FUSES XT,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOPBADEN
//******************************************************************************************
#USE DELAY (CLOCK=4M)            //SE CONFIGURA LA FUNCION DELAY PARA UNA VELOCIDAD DE 4Mhz
//******************************************************************************************
////////////////////////FUNCION PRINCIPAL (MAIN)////////////////////////////////////////////
VOID MAIN (VOID)
{
   WHILE (1)
   {
      IF (INPUT(PIN_C0)==1)               //LEE EL ESTADO DEL PIN RC0 Y A SU VEZ LO CONFIGURA ENTRADA
      {
      OUTPUT_B(0B10000001);           //SACA DETERMINADO VALOR POR EL PUERTO B Y A SU VE LO
      DELAY_MS(500);                         //LO CONFIGURA COMO SALIDA
      OUTPUT_B(0B01000010);
      DELAY_MS(500);                        //RETARDO DE MEDIO SEGUNDO
      OUTPUT_B(0B00100100);
      DELAY_MS(500);
      OUTPUT_B(0B00011000);
      DELAY_MS(500);
      }
      ELSE
      {
      OUTPUT_B(0B11000000);
      DELAY_MS(500);
      OUTPUT_B(0B01100000);
      DELAY_MS(500);
      OUTPUT_B(0B00110000);
      DELAY_MS(500);
      OUTPUT_B(0B00011000);
      DELAY_MS(500);
      OUTPUT_B(0B00001100);
      DELAY_MS(500);
      OUTPUT_B(0B00000110);
      DELAY_MS(500);
      OUTPUT_B(0B00000011);
      DELAY_MS(500);
      }
   }
}

No hay comentarios:

Publicar un comentario