X-Git-Url: https://git.llucax.com/z.facultad/66.09/etherled.git/blobdiff_plain/6add33161e732ed834469f217a7ba97200694d63..b80298a892113b8e686b408c9d62fcef5edc1411:/src/leds.h?ds=sidebyside diff --git a/src/leds.h b/src/leds.h index 188978b..45c640e 100644 --- a/src/leds.h +++ b/src/leds.h @@ -3,6 +3,11 @@ #ifndef _LEDS_H_ #define _LEDS_H_ +#include "reg51.h" + +/** Cantidad mínima de columnas (es más un límite estético que físico) */ +#define LEDS_MIN_COLS 8 + /** Cantidad máxima de columnas */ #define LEDS_MAX_COLS 32 @@ -10,10 +15,19 @@ extern unsigned char leds_matrix_len; /** Matriz de leds, cada elemento del array es una columna */ -extern unsigned int leds_matrix[LEDS_MAX_COLS]; +extern idata unsigned int leds_matrix[LEDS_MAX_COLS]; + +/** Setea retardo de refresco de la matriz */ +#define leds_delay_set(delay) (RCAP2H = ((unsigned char) -delay)) +/* usamos directamente el rcap2h negado (complementado) */ + +/** Obtiene retardo de refresco de la matriz */ +#define leds_delay_get() ((unsigned char) -RCAP2H) +/* usamos directamente el rcap2h negado (complementado) */ -/** Retardo de refresco de la matriz (en múltiplos de 0.1ms) */ -extern unsigned char leds_delay; +/** Tamaño del retardo de refresco de la matriz */ +#define LEDS_DELAY_SIZE sizeof(RCAP2H) +/* usamos directamente el rcap2h */ /** Inicializa leds * @@ -39,6 +53,14 @@ void leds_write_high(unsigned char); /** Actualiza el delay al recomendado según el tamaño de la matriz */ void leds_delay_update(); +/** Bloquea timer de leds cuando se accede a una zona crítica (P0 y/o P2). */ +void leds_lock(); + +/** Desbloquea el timer de los leds. + * @precond Se llamó a leds_lock(); + */ +void leds_unlock(); + /** Atiende interrupción del timer2 para 'dibujar' la matriz */ void leds_timer2_isr() interrupt 5;