;****************************
;*							*
;*	Definiciones generales	*
;*							*
;****************************
CLOCK_SPEED			equ	4000000

;****************************
;*							*
;*	LCD						*
;*							*
;****************************
LCD_E_PORT			equ	PORTB
LCD_E				equ	2
LCD_RW_PORT			equ	PORTB
LCD_RW				equ	3
LCD_RS_PORT			equ	PORTA
LCD_RS				equ	0

LCD_DATA_PORT		equ	PORTB
LCD_DATA_MASK		equ 0xf0
LCD_D4				equ	4
LCD_D5				equ	5
LCD_D6				equ	6
LCD_D7				equ	7

;****************************
;*							*
;*	SENSORES				*
;*							*
;****************************
; pH
SPH1_PORT			equ	PORTA
SPH1				equ 2

; 1-WIRE
OWIRE_CONTROL_PORT	equ PORTA
OWIRE_DQ0			equ 4

; Niveles
SN1_PORT			equ	PORTA
SN1					equ 5
SN2_PORT			equ	PORTE
SN2					equ 0
SN3_PORT			equ	PORTE
SN3					equ 1
SN4_PORT			equ	PORTE
SN4					equ 2
SNIVEL_ACUARIO_PORT	equ SN1_PORT
SNIVEL_FILTRO_PORT	equ SN2_PORT
SNIVEL_LLENADO_PORT	equ SN3_PORT
SNIVEL_VACIADO_PORT	equ SN4_PORT
NIVEL_ACUARIO		equ SN1
NIVEL_FILTRO		equ SN2
NIVEL_LLENADO		equ SN3
NIVEL_VACIADO		equ SN4

; Teclado
CURSOR_PORT			equ	PORTB
ARRIBA				equ	4
ABAJO				equ	5
DERECHA				equ	6
IZQUIERDA			equ	7
MENU_PORT			equ	PORTB
MENU				equ	3
ENTER_PORT			equ	PORTA
ENTER				equ	0

;****************************
;*							*
;*	ACTUADORES				*
;*							*
;****************************
LUCES_PORT			equ PORTC
LUCES_TRIS			equ LUCES_PORT
LUCES_L1			equ	0
LUCES_L2			equ	1
LUCES_L3			equ	2
LUCES_L4			equ	3

TEMPERATURA_PORT	equ PORTD
TEMPERATURA_TRIS	equ TEMPERATURA_PORT
TEMPERATURA_T1		equ 0
TEMPERATURA_T2		equ 1
CALENTAR			equ TEMPERATURA_T1
ENFRIAR				equ TEMPERATURA_T2

PH_PORT				equ PORTD
PH_TRIS				equ PH_PORT
PH_PH1				equ 2
PH_PH2				equ 3
AUMENTAR_PH			equ PH_PH1
DISMINUIR_PH		equ PH_PH2

NIVEL_PORT			equ PORTC
NIVEL_TRIS			equ NIVEL_PORT
NIVEL_N1			equ 4
NIVEL_N2			equ 5
LLENAR				equ NIVEL_N1
VACIAR				equ NIVEL_N2

OLEAJE_PORT			equ PORTD
OLEAJE_TRIS			equ OLEAJE_PORT
OLEAJE_O1			equ 4
OLEAJE_O2			equ 5
OLEAJE_O3			equ 6
OLEAJE_O4			equ 7

CEBADOR_PORT		equ PORTB
CEBADOR_TRIS		equ CEBADOR_PORT
CEBADOR_C1			equ 0
CEBADOR_C2			equ 1

BUZZER_PORT			equ	PORTA
BUZZER_TRIS			equ	BUZZER_PORT
BUZZER				equ 1

;****************************
;*							*
;*	Constantes				*
;*							*
;****************************
ADJMIN				equ	9
ADJHR				equ	34
ADJDAY				equ	3

; flags
FLAG_HORA			equ	0

;****************************
;*							*
;*	Variables				*
;*							*
;****************************
DEC_COUNT			equ 0x10	; para convertir bin->bcd
LO_BYTE				equ 0x11
BCD1				equ	0x12
BCD2				equ	0x13
BCD3				equ	0x14

; RELOJ
HORA				equ 0x15	; Hora actual
HORA_ANT			equ 0x16	; Ultima hora que se escribió en el LCD
MINUTO				equ 0x17	; Minuto actual
MINUTO_ANT			equ 0x18	; Ultimo minuto que se escribió en el LCD
SEGUNDO				equ 0x19	; Segundo actual
SEGUNDO_ANT			equ 0x1a	; Ultimo segundo que se escribió en el LCD
SEGUNDO_NTH			equ 0x1b	; Cantidad de ciclos de segundo
TEMPORAL			equ 0x1c	; Temporal para calcular el caracter a mostrar en el LCD (no deberia usarlo nadie porque se usa en la rutina de interrupcion)
MAXNTHS				equ 12		; 12 -> 256 son 244 ciclos ¡CAMBIAR A MHZ!

; TEMPERATURA
TEMPERATURA			equ 0x1d	; Parte entera de la temperatura
TEMPERATURA_RESTO	equ 0x1e	; Resto de la temperatura (0=0, 1=.5)
TEMPERATURA_SIGNO	equ 0x1f	; Signo de la temperatura (0=+, 1=-)

; PH
PH					equ	0x20	; pH del agua

; 1-WIRE
RX_STATE			equ 0x21	; estado del bus
I_BYTE				equ 0x22	; Byte leido del bus
O_BYTE				equ 0x23	; Byte a escribir en el bus
LASEREDROM			equ 0x24	; rom del ds1820 (8 bytes)
TEMPERATURA_LSB		equ 0x25
TEMPERATURA_MSB		equ 0x26
;TH					equ 0x27	; LA PODEMOS ELIMINAR PORQUE NO SE USA
;TL					equ 0x28	; LA PODEMOS ELIMINAR PORQUE NO SE USA
;RESERVED1			equ 0x29	; LA PODEMOS ELIMINAR PORQUE NO SE USA
;RESERVED2			equ 0x2a	; LA PODEMOS ELIMINAR PORQUE NO SE USA
;COUNT_REMAIN		equ 0x2b	; LA PODEMOS ELIMINAR PORQUE NO SE USA
;COUNT_PERC			equ 0x2c	; LA PODEMOS ELIMINAR PORQUE NO SE USA

; PANTALLA
LINEA4				equ 0x27	; 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a

; HORA/MINUTO DE ACTIVACION (temporal)
ADDR_HORA			equ 0x40
ADDR_MINUTO			equ 0x41

; Estado de la pantalla
ESTADO_PANTALLA		equ 0x42
LINEA_MENU			equ 0x43

; TEMPORALES
FLAGS				equ 0x75
FLAGS_TECLADO		equ 0x76
TMP1				equ	0x77
TMP2				equ	0x78
TMP3				equ	0x79
TMP4				equ	0x7a

; LCD
LCD_BUFFER0			equ 0x7b
LCD_CHAR			equ 0x7c
LCD_RESULT			equ	0x7d

; Variables temporales para las macros PUSH y POP
W_TEMP				equ 0x7e
STATUS_TEMP			equ 0x7f

;****************************
;*							*
;*	EEPROM					*
;*							*
;****************************
BASE				equ 0

; backups del estado de los acctuadores
PUERTOB				equ BASE + 0
PUERTOC				equ BASE + 1
PUERTOD				equ BASE + 2

; RELOJ
HORA_EEPROM			equ PUERTOD + 1
MINUTO_EEPROM		equ PUERTOD + 2
SEGUNDO_EEPROM		equ PUERTOD + 3

; TEMPERATURA
BASE_TEMPERATURA		equ SEGUNDO_EEPROM
TEMPERATURA_MEDIA		equ	BASE_TEMPERATURA + 1
TEMPERATURA_MEDIA_RESTO	equ	BASE_TEMPERATURA + 2
MAX_TEMPERATURA			equ	BASE_TEMPERATURA + 3
MAX_TEMPERATURA_RESTO	equ BASE_TEMPERATURA + 4
MAX_TEMPERATURA_SIGNO	equ BASE_TEMPERATURA + 5
MIN_TEMPERATURA			equ	BASE_TEMPERATURA + 6
MIN_TEMPERATURA_RESTO	equ BASE_TEMPERATURA + 7
MIN_TEMPERATURA_SIGNO	equ BASE_TEMPERATURA + 8

; PH
BASE_PH				equ	MIN_TEMPERATURA_SIGNO
PH_MEDIO			equ	BASE_PH + 1
MAX_PH				equ	BASE_PH + 2
MIN_PH				equ BASE_PH + 3

; LUCES
BASE_LUCES			equ	MIN_PH
LUZ1_HORA_ON		equ	BASE_LUCES + 1
LUZ1_MINUTO_ON		equ	BASE_LUCES + 2
LUZ1_HORA_OFF		equ	BASE_LUCES + 3
LUZ1_MINUTO_OFF		equ	BASE_LUCES + 4
LUZ2_HORA_ON		equ	BASE_LUCES + 5
LUZ2_MINUTO_ON		equ	BASE_LUCES + 6
LUZ2_HORA_OFF		equ	BASE_LUCES + 7
LUZ2_MINUTO_OFF		equ	BASE_LUCES + 8
LUZ3_HORA_ON		equ	BASE_LUCES + 9
LUZ3_MINUTO_ON		equ	BASE_LUCES + 10
LUZ3_HORA_OFF		equ	BASE_LUCES + 11
LUZ3_MINUTO_OFF		equ	BASE_LUCES + 12
LUZ4_HORA_ON		equ	BASE_LUCES + 13
LUZ4_MINUTO_ON		equ	BASE_LUCES + 24
LUZ4_HORA_OFF		equ	BASE_LUCES + 25
LUZ4_MINUTO_OFF		equ	BASE_LUCES + 26

; ALIMENTACION
BASE_CEBADOR1		equ LUZ4_MINUTO_OFF
CEBADOR1_HORA_1		equ BASE_CEBADOR1 + 1
CEBADOR1_MINUTO_1	equ BASE_CEBADOR1 + 2
CEBADOR1_HORA_2		equ BASE_CEBADOR1 + 3
CEBADOR1_MINUTO_2	equ BASE_CEBADOR1 + 4
CEBADOR1_HORA_3		equ BASE_CEBADOR1 + 5
CEBADOR1_MINUTO_3	equ BASE_CEBADOR1 + 6
CEBADOR1_HORA_4		equ BASE_CEBADOR1 + 7
CEBADOR1_MINUTO_4	equ BASE_CEBADOR1 + 8
CEBADOR1_HORA_5		equ BASE_CEBADOR1 + 9
CEBADOR1_MINUTO_5	equ BASE_CEBADOR1 + 10
CEBADOR1_HORA_6		equ BASE_CEBADOR1 + 11
CEBADOR1_MINUTO_6	equ BASE_CEBADOR1 + 12
CEBADOR1_HORA_7		equ BASE_CEBADOR1 + 13
CEBADOR1_MINUTO_7	equ BASE_CEBADOR1 + 14
CEBADOR1_HORA_8		equ BASE_CEBADOR1 + 15
CEBADOR1_MINUTO_8	equ BASE_CEBADOR1 + 16
CEBADOR1_HORA_9		equ BASE_CEBADOR1 + 17
CEBADOR1_MINUTO_9	equ BASE_CEBADOR1 + 18
CEBADOR1_HORA_10	equ BASE_CEBADOR1 + 19
CEBADOR1_MINUTO_10	equ BASE_CEBADOR1 + 20

BASE_CEBADOR2		equ	CEBADOR1_MINUTO_10
CEBADOR2_HORA_1		equ BASE_CEBADOR2 + 1
CEBADOR2_MINUTO_1	equ BASE_CEBADOR2 + 2
CEBADOR2_HORA_2		equ BASE_CEBADOR2 + 3
CEBADOR2_MINUTO_2	equ BASE_CEBADOR2 + 4
CEBADOR2_HORA_3		equ BASE_CEBADOR2 + 5
CEBADOR2_MINUTO_3	equ BASE_CEBADOR2 + 6
CEBADOR2_HORA_4		equ BASE_CEBADOR2 + 7
CEBADOR2_MINUTO_4	equ BASE_CEBADOR2 + 8
CEBADOR2_HORA_5		equ BASE_CEBADOR2 + 9
CEBADOR2_MINUTO_5	equ BASE_CEBADOR2 + 10
CEBADOR2_HORA_6		equ BASE_CEBADOR2 + 11
CEBADOR2_MINUTO_6	equ BASE_CEBADOR2 + 12
CEBADOR2_HORA_7		equ BASE_CEBADOR2 + 13
CEBADOR2_MINUTO_7	equ BASE_CEBADOR2 + 14
CEBADOR2_HORA_8		equ BASE_CEBADOR2 + 15
CEBADOR2_MINUTO_8	equ BASE_CEBADOR2 + 16
CEBADOR2_HORA_9		equ BASE_CEBADOR2 + 17
CEBADOR2_MINUTO_9	equ BASE_CEBADOR2 + 18
CEBADOR2_HORA_10	equ BASE_CEBADOR2 + 19
CEBADOR2_MINUTO_10	equ BASE_CEBADOR2 + 20

; OLEAJE
BASE_OLEAJE1		equ CEBADOR2_MINUTO_10
OLEAJE1_HORA_1		equ BASE_OLEAJE1 + 1
OLEAJE1_MINUTO_1	equ BASE_OLEAJE1 + 2
OLEAJE1_HORA_2		equ BASE_OLEAJE1 + 3
OLEAJE1_MINUTO_2	equ BASE_OLEAJE1 + 4
OLEAJE1_HORA_3		equ BASE_OLEAJE1 + 5
OLEAJE1_MINUTO_3	equ BASE_OLEAJE1 + 6
OLEAJE1_HORA_4		equ BASE_OLEAJE1 + 7
OLEAJE1_MINUTO_4	equ BASE_OLEAJE1 + 8
OLEAJE1_HORA_5		equ BASE_OLEAJE1 + 9
OLEAJE1_MINUTO_5	equ BASE_OLEAJE1 + 10
OLEAJE1_HORA_6		equ BASE_OLEAJE1 + 11
OLEAJE1_MINUTO_6	equ BASE_OLEAJE1 + 12
OLEAJE1_HORA_7		equ BASE_OLEAJE1 + 13
OLEAJE1_MINUTO_7	equ BASE_OLEAJE1 + 14
OLEAJE1_HORA_8		equ BASE_OLEAJE1 + 15
OLEAJE1_MINUTO_8	equ BASE_OLEAJE1 + 16
OLEAJE1_HORA_9		equ BASE_OLEAJE1 + 17
OLEAJE1_MINUTO_9	equ BASE_OLEAJE1 + 18
OLEAJE1_HORA_10		equ BASE_OLEAJE1 + 19
OLEAJE1_MINUTO_10	equ BASE_OLEAJE1 + 20

ULTIMO				equ 127





