Você está na 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 ;entradas con las resistencias de polarizacion BSF MOVLW MOVWF BSF entradas BCF RETURN KB_Scan CLRF INCF cdigo. MOVLW MOVWF NOP seal. Cheq_Col BTFSS GOTO INCF incrementa tecla. BTFSS GOTO INCF incrementa tecla. BTFSS GOTO INCF incrementa tecla. BTFSS GOTO 0Eh PORTB PORTB,4 antirebotes Tecla,f PORTB,5 antirebotes Tecla,f PORTB,6 antirebotes Tecla,f PORTB,7 antirebotes ;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. Tecla Tecla,f STATUS,RP0 ;Vuelve a la p gina 0. ;Retorna. ;Escanea el teclado ;Borra Tecla y ;prepara Tecla para primer ;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 ;Inicializa la puerta B para las ;teclado. Programa RB0-3 como salidas y

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

;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

Você também pode gostar