CCCPaste

BlinkMultidestello

/*
 * File:   demo.c
 * Author: Ing. Alejo S. Giles
 * 
 * UNLPam
 * Fac. de Ingeniería
 * Computación II
 *
 * Created on 29 de abril de 2020, 17:26
 * 
 * Compilador: XC8
 * 
 * Funcionalidad:
 * Blink Multidestello
 * 
 * Led conectado en el pin 0 del PORTD
 * 
 */
#include "config.h"

//Escribiendo el valor los registro
//#define CONFIGURAR_LED_TEST		TRISD = TRISD & ~(1<<0)
//#define ENCENDER_LED_TEST			LATD = LATD | 1
//#define APAGAR_LED_TEST			LATD = LATD & 0b11111110
//#define CS_LED_TEST				2

//Accediendo por el nombre del bit
#define CONFIGURAR_LED_TEST		TRISD0=0
#define ENCENDER_LED_TEST		LD0=1
#define APAGAR_LED_TEST			LD0=0
#define CS_LED_TEST				5

//Accediendo mediante la unión
//#define CONFIGURAR_LED_TEST	TRISDbits.RD0=0
//#define ENCENDER_LED_TEST		LATDbits.LD0=1
//#define APAGAR_LED_TEST		LATDbits.LD0=0
//#define CS_LED_TEST			10

void BlinkMultidestello(void)
	{
	const unsigned char t_off=8;			//
	const unsigned char t_on=2;			//200ms
	const unsigned char cant_pulsos=5;
	
	static unsigned long centiseg_ini=0;
	static unsigned char t_espera=0;
	static bit led=0;
	static unsigned char pulso=0;
	
	if(centiseg-centiseg_ini < t_espera) return;
	centiseg_ini=centiseg;
	
	if(led) 
		{
		led=0;
		ENCENDER_LED_TEST;
		t_espera=t_on;
		if(!pulso) pulso=cant_pulsos;
		}
	else	
		{
		led=1;
		APAGAR_LED_TEST;
		pulso--;
		if(t_espera)	pulso=t_on;
		else			pulso=t_off;
//		t_espera=pulso ? t_on: t_off;
		}

	}
void main(void) 
    {
    setup();
    CONFIGURAR_LED_TEST;
	
    while(1)
		{
		BlinkMultidestello();
        }
    }