Está en la página 1de 3

; - TECLADO.LIB \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ; www.x-robotics.

com ; Descipcion: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\ ; Esta libreria realiza un escaneo en un teclado matricial de 4x4 teclas, ; el escaneo lo realiza poniendo un cero logico en las filas correspondientes ; y verificando las columnas para encontrar la interseccion provocada por ; el accionamiento de una tecla y asi saber la fila y columna de la tecla. ; ESTA SUBRUTINA CONVIERTE LA TECLA PULSADA EN SU EQUIVALENTE ASCII ; para ser usada con el display LCD. ; ; Se tienen que inicializar las siguientes variables en el programa que ; use esta libreria: ; - ( Tecla ) ;Devuelve la tecla pulsada ;****************************************** http://www.x-robotics.com ******* KB_Port entradas del RB4-7 polarizacion BSF MOVLW MOVWF BSF entradas BCF RETURN CLRF INCF MOVLW MOVWF NOP ;Inicializa la puerta B para las ;teclado. Programa RB0-3 como salidas y ;entradas con las resistencias de ;habilitadas. STATUS,RP0 ;Selecciona P gina 1 0F0h ;PB4-7 como entradas TRISB ;y PB0-3 como salidas OPCION,RBPU ;Habilita R de polarizacion en STATUS,RP0 ;Vuelve a la p gina 0. ;Retorna. ;Escanea el teclado ;Borra Tecla y ;prepara Tecla para primer c ;Saca 0 a la primera fila ;de la Puerta B ;Nada para estabilizacin de ;Primera columna = 0 ;Sale si se ha pulsado tecla. ;Si no tecla pulsada, ;Segunda columna = 0 ;Sale si se ha pulsado tecla. ;Si no tecla pulsada, ;Tercera columna = 0 ;Sale si se ha pulsado tecla. ;Si no tecla pulsada, ;Cuarta columna = 0 ;Sale si se ha pulsado tecla.

KB_Scan digo.

Tecla Tecla,f 0Eh PORTB PORTB,4 antirebotes Tecla,f PORTB,5 antirebotes Tecla,f PORTB,6 antirebotes Tecla,f PORTB,7 antirebotes

seal. Cheq_Col

BTFSS GOTO INCF incrementa tecla. BTFSS GOTO INCF incrementa tecla. BTFSS GOTO INCF incrementa tecla. BTFSS GOTO

INCF Tecla,f pulsada,incrementa Tecla. Ultima_Tecla Teclas + 1. actual de Tecla. tecla. MOVLW SUBWF BTFSC GOTO BSF RLF rotacin a izqda. GOTO NTeclas antirebotes rebotes CLRF RETURN d'17' Tecla,w STATUS,Z NTeclas STATUS,C PORTB,f Cheq_Col Tecla

;Si no tecla ;Carga W con el nmero de ;y lo compara con el valor ;Si Tecla + 1 = valor actual. ;No ha sido pulsada ninguna ;Pone a 1 Bit C. ;as la Fila 1 pasa a 1 con la

;Coloca variable Tecla a 0 ;y regresa.

;ahora se espera a que la tecla sea soltada para evitar

;y reactivaciones de tecla ;esta parte puede ser eliminada si para nuestro proyecto no es necesaria ;o es un inconveniente. Espera1 1 Espera2 2 Espera3 3 Espera4 4 BTFSS GOTO BTFSS GOTO BTFSS GOTO BTFSS GOTO PORTB,4 Espera1 PORTB,5 Espera2 PORTB,6 Espera3 PORTB,7 Espera4 ;Si no se suelta la tecla FILA ;vuelve a esperar. ;Si no se suelta la tecla FILA ;vuelve a esperar. ;Si no se suelta la tecla FILA ;vuelve a esperar. ;Si no se suelta la tecla FILA ;vuelve a esperar.

MOVF Tecla,w ;pone en w el numero contenido en la variable CALL T_Conv ;llama a la tabla de conversion y retorna MOVWF Tecla ;con el valor en hexadecimal y lo pone en la variable. RETURN ;vuelve al programa principal que hizo la llamada. T_Conv ADDWF RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW PCL,1 '0' '1' '4' '7' 'A' '2' '5' '8' '0' '3' '6' '9'

;Tecla ;Tecla ;Tecla ;Tecla ;Tecla ;Tecla ;Tecla ;Tecla ;Tecla ;Tecla ;Tecla ;Tecla

n0 = 0 n1 = 1 n2 = 4 n3 = 7 n4 = A n5 = 2 n6 = 5 n7 = 8 n8 = 0 n9 = 3 n10 = 6 n11 = 9

RETLW RETLW RETLW RETLW RETLW

'B' 'F' 'E' 'D' 'C'

;Tecla ;Tecla ;Tecla ;Tecla ;Tecla

n12 n13 n14 n15 n16

= = = = =

B F E D C

También podría gustarte