CCCPaste

Conmutador_PIC

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