list p=16f877
include <p16f877.inc>

CBLOCK
conteo
resp
Decena
Centena
Unidad
TECLA1
cont2
ENDC

			bsf 3,5
			movlw b'00000100'; 2pushbotoms,4bitsdelapantalla, bit E
			movwf 86h ; tris b
			movlw b'00001111'; Config. Teclado
			movwf 88h ; tribD
			movlw b'11110010'; RS-RW, ALARMA
			movwf 07 ; trisC
			movlw 06h; SALIDAS DIGITALES
			movwf 9fh; ADCON1
			bcf 3,5
			clrf 6h
			clrf 7h
			clrf 8h
Main

		btfsc	5,5
		goto	abrirpuerta
		btfss	5,6
		goto	$+2
		goto	abrirpuerta
		CALL    UP_LCD 	            ;Puertos para trabajar con el LCD        
	    CALL    LCD_INI             ;Inicializa LCD 
	    CALL	BORRA_Y_HOME	    ;Borra LCD
        CALL    DISPLAY_ON_CUR_OFF  ;Activa LCD
		CALL    CURSOR		    ;Mensaje en modo normal y movimiento del cursor a la derecha

        MOVLW   0x87               ;Direccion primera fila, primera columna
        CALL    LCD_REG             ;Indicar al LCD que es una instruccion                  
		
		MOVLW	'C'
		CALL    LCD_dato
		MOVLW	'L'
		CALL    LCD_dato
		MOVLW	'A'
		CALL    LCD_dato
		MOVLW	'V'
		CALL    LCD_dato
		MOVLW	'E'
		CALL    LCD_dato
		MOVLW	':'
		CALL    LCD_dato
		
		cont_dig	movlw .3
					movwf conteo
					movlw 0x8D
					movwf LCD_REG
					RETURN
					
		Explorar	call	Key_scan	;Se hace un chequeo del teclado
					movlw	0x80		;codigo de ninguna tecla pulsada
					subwf	TECLA1,W
					btfsc	3,2
					goto	Explorar		;Si no hay tecla pulsada vuelve a explorar
					call	Key_off		;Si hay tecla pulsada espera a que se suelte
					call	Key_Hex		;se pasa el valor a Hexadecimal
					CALL	KEY_ASCII
					movwf	resp		;Se respalda la tecla
					CALL    LCD_dato
					movf	Decena,w
					movwf	Centena
					movf	Unidad,w
					movwf	Decena
					movf	resp,w
					movwf	Unidad


		seguir		decfsz	conteo,f
					goto	Explorar
				
		

		movlw	'3'
		xorwf	Centena,w
		btfss	3,2
		goto	cont_dig
		movlw	'5'
		xorwf	Decena,w
		btfss	3,2
		goto	cont_dig
		movlw	'4'
		xorwf	Unidad,w
		btfss	3,2
		goto	cont_dig
		bsf		5,0		;Abre la puerta
		call	tiempo		;Espera 3 sg
		bcf		5,0		;cierra la puerta
		
		goto	cont_dig
		
		tiem		movlw	.60
					movwf	101
		loop		btfss	8b,3
					goto	loop
					bcf		8b,3
					return

		tiempo		movlw	.60
					movwf	cont2
		llamar		call	tiem
					decfsz	cont2,f
					goto	llamar
					
		Abrirpuerta	
		
					bsf		7h,3
					call	tiempo
					RETURN
					
					#INCLUDE	"lcd_cxx_n.asm"
					#INCLUDE	"Lteclado.asm"
					
					END