/* * File: demo2.c * Author: Alejo * * Created on 6 de mayo de 2020, 16:13 */ // Blink --> Activar la salida RD1 un cierto tiempo y desactivar RD1 otro tiempo // Conmutador: Invertir el estado de la salida salida, por cada flanco ascendente en la entrada. #include "config.h" //--> https://pastebin.com/iCVtqpfB //config.c --> https://pastebin.com/KRXRaxR8 #define CONFIGURAR_LED_TEST TRISD1=0 #define ENCENDER_LED_TEST LD1=1 #define APAGAR_LED_TEST LD1=0 //#define ACTIVAR_SALIDA LATD |= 0b00000010 //Poner en alto el bit 0 (RD0) //#define DESACTIVAR_SALIDA LATD &= ~0b00000010 //Poner en bajo el bit 0 (RD0) //#define ACTIVAR_SALIDA LATDbits.LD1=1 //#define DESACTIVAR_SALIDA LATDbits.LD1=0 //Para interactuar con la SALIDA, utilizar: #define CONFIGURAR_SALIDA TRISB7=0 #define ACTIVAR_SALIDA LB7=1 #define DESACTIVAR_SALIDA LB7=0 #define INVERTIR_SALIDA LB7 = !LB7 //Para interactuar con la ENTRADA, utilizar: #define CONFIGURAR_ENTRADA TRISA0=1 #define ENTRADA_ACTIVADA RA0 //--------------------------------------------------------------------- void BlinkSincronico(void) { static unsigned long centiseg_ant=0; const unsigned char tpo_espera=5; static bit salida_activada=0; //Actviar la salida, esperar un tiempo, desactivar la salida, esperar un tiempo if(centiseg - centiseg_ant < tpo_espera) return; centiseg_ant= centiseg; salida_activada = !salida_activada; if(salida_activada) ENCENDER_LED_TEST; else APAGAR_LED_TEST; } //--------------------------------------------------------------------- void Conmutador(void) { static bit entrada_activada_ant=0; //Invertir el estado de la salida salida, //por cada flanco ascendente en la entrada (CAMBIO DE BAJO A ALTO) if(ENTRADA_ACTIVADA == entrada_activada_ant) return; entrada_activada_ant= ENTRADA_ACTIVADA; if(ENTRADA_ACTIVADA) INVERTIR_SALIDA; } //--------------------------------------------------------------------- void main(void) { setup(); CONFIGURAR_LED_TEST; CONFIGURAR_SALIDA; CONFIGURAR_ENTRADA; while(1) { BlinkSincronico(); Conmutador(); } return; }