]> git.llucax.com Git - z.facultad/66.09/etherled.git/blobdiff - src/leds.h
Emprolija un poco el retarno, no necesita más usar el multiplicador.
[z.facultad/66.09/etherled.git] / src / leds.h
index 188978b7fe77aec36e70aab87686e34bb6526183..45c640ed9f4d9fe120d1deed42ad06c25ffe432d 100644 (file)
@@ -3,6 +3,11 @@
 #ifndef _LEDS_H_
 #define _LEDS_H_
 
 #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
 
 /** Cantidad máxima de columnas */
 #define LEDS_MAX_COLS 32
 
 extern unsigned char leds_matrix_len;
 
 /** Matriz de leds, cada elemento del array es una columna */
 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
  *
 
 /** 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();
 
 /** 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;
 
 /** Atiende interrupción del timer2 para 'dibujar' la matriz */
 void leds_timer2_isr() interrupt 5;