/*
* Ejercicio resuelto en clase de Computación II
* Fecha: 20/05/20
* by Alejo S. Giles
*
Mapeo de contador: Mapear en salidas, los 4 (cuatro) bits menos
significativos (nibble bajo) de una variable contador. El contador deberá
incrementarse automáticamente cada un segundo, y reiniciase con cada
flanco ascendente en la entrada.
*
* https://pastebin.com/9pRMtSJh
*/
#include "config.h"
//BLINK
#define CONFIGURAR_LED_TEST TRISD1=0
#define ENCENDER_LED_TEST LD1=1
#define APAGAR_LED_TEST LD1=0
//Para interactuar con las SALIDAS, utilizar:
#define CONFIGURAR_SALIDAS TRISB=0
#define ACTIVAR_SALIDA0 LB0=1
#define DESACTIVAR_SALIDA0 LB0=0
#define ACTIVAR_SALIDA1 LB1=1
#define DESACTIVAR_SALIDA1 LB1=0
#define ACTIVAR_SALIDA2 LB2=1
#define DESACTIVAR_SALIDA2 LB2=0
#define ACTIVAR_SALIDA3 LB3=1
#define DESACTIVAR_SALIDA3 LB3=0
//Para interactuar con la ENTRADA, utilizar:
#define CONFIGURAR_ENTRADA TRISA0=1
#define ENTRADA_ACTIVADA RA0
void MapeoDeContador(void)
{
static unsigned char contador = 0; //0b0000 0000 0000 0000 //0x0000
static unsigned long centiseg_ant = 0;
static bit entrada_activada_ant=0;
//Boton de reset
if(ENTRADA_ACTIVADA != entrada_activada_ant)
{
entrada_activada_ant= ENTRADA_ACTIVADA;
//Si detectó un flanco ascendente
if(ENTRADA_ACTIVADA) contador=0;
}
//Incremento del contador
if (centiseg - centiseg_ant < 3) return;
centiseg_ant = centiseg;
contador++;
//Queremos copiar los cuatro bits menos significativos del contador, en PORTB
//Mapeo del nibble bajo (4 bits menos significativos)
PORTB &= 0b11110000; // "Limpiamos" los 4 bits menos significativos de PORTB
PORTB |= contador & 0x0F; //Copiamos los 4 bits menos significatovos de contador en PORTB
}
void Blink(void)
{
static unsigned long centiseg_ant=0;
static bit led=0;
if((centiseg - centiseg_ant) < 5) return;
centiseg_ant=centiseg;
led=!led;
if(led) ENCENDER_LED_TEST;
else APAGAR_LED_TEST;
}
void main(void)
{
setup();
CONFIGURAR_SALIDAS;
CONFIGURAR_ENTRADA;
CONFIGURAR_LED_TEST;
APAGAR_LED_TEST;
while (1)
{
Blink();
MapeoDeContador();
}
}