EJEMPLO 2: Manejo de Puertos Mediante configuración de los registro tris

Para este ejemplo se utiliza la configuración de puertos mediante los registros TRIS, donde se configura como salidas poniendo un "0" y como entrada poniendo un "1", aparte de esto hay que poner las directivas fast_io para evitar que los puertos se reconfiguren cuando se utilice una instrucción output o input.

//******************************************************************************************
////////////////////////  CONFIGURACION DE PUERTOS MEDIANTE  LOS REGISTROS TRIS  ////////////////////////////'//////
// 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
//******************************************************************************************
///////////////////////ASIGNACION DE NOMBRES A LOS RESPECTIVOS PUERTOS//////////////////////
#BYTE PORTA=0xf80
#BYTE PORTB=0xf81
#BYTE PORTC=0xf82
#BYTE PORTD=0xf83
#BYTE PORTE=0xf84
//*****************************************************************************************
////LAS FUNC. FAST_IO EVITAN RECONFIGURAR LOS PUERTOS CON LAS FUNCIONES OUTPUT E INPUT/////
#USE FAST_IO(A)                 
#USE FAST_IO(B)                 
#USE FAST_IO(C) 
#USE FAST_IO(D)
#USE FAST_IO(E)
//******************************************************************************************
////////////////////////FUNCION PRINCIPAL (MAIN)////////////////////////////////////////////
VOID MAIN (VOID)
{
//////////////////////  CONFIGURACION DE PUERTOS  ///////////////////////////////////////
SET_TRIS_C(0B00000001);
SET_TRIS_B(0);
PORTB=0;
PORTC=0;

   WHILE (1)
   {
      IF (INPUT_STATE(PIN_C0)==1)         //LEE EL ESTADO DEL PIN RC0 Y A SU VEZ LO CONFIGURA ENTRADA
      {
      PORTB=0B10000001;           //SACA DETERMINADO VALOR POR EL PUERTO B Y A SU VE LO
      DELAY_MS(500);                //LO CONFIGURA COMO SALIDA
      PORTB=0B01000010;
      DELAY_MS(500);                //RETARDO DE MEDIO SEGUNDO
      PORTB=0B00100100;
      DELAY_MS(500);
      PORTB=0B00011000;
      DELAY_MS(500);
      }
      ELSE
      {
      PORTB=0B11000000;
      DELAY_MS(500);
      PORTB=0B01100000;
      DELAY_MS(500);
      PORTB=0B00110000;
      DELAY_MS(500);
      PORTB=0B00011000;
      DELAY_MS(500);
      PORTB=0B00001100;
      DELAY_MS(500);
      PORTB=0B00000110;
      DELAY_MS(500);
      PORTB=0B00000011;
      DELAY_MS(500);
      }
   }
}



No hay comentarios:

Publicar un comentario