cblock
		TECLA
		flag_tecla
endc

CONFIGURA_TECLADO
		bsf STATUS,RP0
		bcf STATUS,RP1
		mov TRISB,b'00001111'
		bcf OPTION_REG,7	;Activo Pull Up
		bcf STATUS,RP0
return

LEO_TECLADO
		mov TECLA,0
		clrf flag_tecla
L1_C0
		;Ponemos la Primera Linea
		mov PORTB,b'01110000'
		movfw PORTB
		andlw 0x0F
		movwf TECLA
		compara TECLA,b'1110'
		jnz L1_C1	;Si no es igual
		mov TECLA,0x0E;'*'
		jmp press_tecla
L1_C1
		compara TECLA,b'1101'
		jnz L1_C2	;Si no es igual
		mov TECLA,0;'0'
		jmp press_tecla
L1_C2
		compara TECLA,b'1011'
		jnz L1_C3	;Si no es igual
		mov TECLA,0xF;'*'
		jmp press_tecla
L1_C3
		compara TECLA,b'0111'
		jnz L2_C0	;Si no es igual
		mov TECLA,0xD;'*'
		jmp press_tecla


L2_C0
		;Ponemos la Segunda Linea
		mov PORTB,b'10110000'
		movfw PORTB
		andlw 0x0F
		movwf TECLA
		compara TECLA,b'1110'
		jnz L2_C1	;Si no es igual
		mov TECLA,7;'9'
		jmp press_tecla
L2_C1
		compara TECLA,b'1101'
		jnz L2_C2	;Si no es igual
		mov TECLA,8;'0'
		jmp press_tecla
L2_C2
		compara TECLA,b'1011'
		jnz L2_C3	;Si no es igual
		mov TECLA,9;'*'
		jmp press_tecla
L2_C3
		compara TECLA,b'0111'
		jnz L3_C0	;Si no es igual
		mov TECLA,0x0C;'*'
		jmp press_tecla

L3_C0
		;Ponemos la Primera Linea
		mov PORTB,b'11010000'
		movfw PORTB
		andlw 0x0F
		movwf TECLA
		compara TECLA,b'1110'
		jnz L3_C1	;Si no es igual
		mov TECLA,4;'*'
		jmp press_tecla
L3_C1
		compara TECLA,b'1101'
		jnz L3_C2	;Si no es igual
		mov TECLA,5;'0'
		jmp press_tecla
L3_C2
		compara TECLA,b'1011'
		jnz L3_C3	;Si no es igual
		mov TECLA,6;'*'
		jmp press_tecla
L3_C3
		compara TECLA,b'0111'
		jnz L4_C0	;Si no es igual
		mov TECLA,0x0B;'*'
		jmp press_tecla

L4_C0
		;Ponemos la Primera Linea
		mov PORTB,b'11100000'
		movfw PORTB
		andlw 0x0F
		movwf TECLA
		compara TECLA,b'1110'
		jnz L4_C1	;Si no es igual
		mov TECLA,1;'*'
		jmp press_tecla
L4_C1
		compara TECLA,b'1101'
		jnz L4_C2	;Si no es igual
		mov TECLA,2;'0'
		jmp press_tecla
L4_C2
		compara TECLA,b'1011'
		jnz L4_C3	;Si no es igual
		mov TECLA,3;'*'
		jmp press_tecla
L4_C3
		compara TECLA,b'0111'
		jnz fin_teclado;si no es igual
		mov TECLA,0x0A;'*'
		jmp press_tecla
fin_teclado
		return
press_tecla
		mov flag_tecla,1
		return
