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);
}
}
}
//////////// 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