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