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