X-Git-Url: https://git.llucax.com/z.facultad/66.09/etherled.git/blobdiff_plain/0052faf6d85ec776823a1a33efc8d911b4b4e2f6..b80298a892113b8e686b408c9d62fcef5edc1411:/src/leds.h?ds=sidebyside diff --git a/src/leds.h b/src/leds.h index b24a6d6..45c640e 100644 --- a/src/leds.h +++ b/src/leds.h @@ -3,6 +3,8 @@ #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 @@ -15,8 +17,17 @@ extern unsigned char leds_matrix_len; /** Matriz de leds, cada elemento del array es una columna */ extern idata unsigned int leds_matrix[LEDS_MAX_COLS]; -/** Retardo de refresco de la matriz (en múltiplos de 0.1ms) */ -extern unsigned char leds_delay; +/** 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) */ + +/** Tamaño del retardo de refresco de la matriz */ +#define LEDS_DELAY_SIZE sizeof(RCAP2H) +/* usamos directamente el rcap2h */ /** Inicializa leds * @@ -42,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;