Está en la página 1de 2

; - TECLADO.LIB \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ; www.pagina.

de/ionitron ; 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 ;**************************************************************************** KB_Port ;Inicializa la puerta B para las entradas del ;teclado. Programa RB0-3 como salidas y RB4-7 ;entradas con las resistencias de polarizacion ;habilitadas. BSF STATUS,RP0 ;Selecciona Pgina 1 MOVLW 0F0h ;PB4-7 como entradas MOVWF TRISB ;y PB0-3 como salidas BSF OPCION,RBPU ;Habilita R de polarizacion en entradas BCF STATUS,RP0 ;Vuelve a la pgina 0. RETURN ;Retorna. CLRF INCF MOVLW MOVWF NOP BTFSS GOTO INCF BTFSS GOTO INCF BTFSS GOTO INCF BTFSS GOTO INCF MOVLW SUBWF BTFSC GOTO BSF RLF GOTO NTeclas antirebotes Tecla Tecla,f 0Eh PORTB PORTB,4 antirebotes Tecla,f PORTB,5 antirebotes Tecla,f PORTB,6 antirebotes Tecla,f PORTB,7 antirebotes Tecla,f d'17' Tecla,w STATUS,Z NTeclas STATUS,C PORTB,f Cheq_Col ;Escanea el teclado ;Borra Tecla y ;prepara Tecla para primer cdigo. ;Saca 0 a la primera fila ;de la Puerta B ;Nada para estabilizacin de seal. ;Primera columna = 0 ;Sale si se ha pulsado tecla. ;Si no tecla pulsada, incrementa tecla. ;Segunda columna = 0 ;Sale si se ha pulsado tecla. ;Si no tecla pulsada, incrementa tecla. ;Tercera columna = 0 ;Sale si se ha pulsado tecla. ;Si no tecla pulsada, incrementa tecla. ;Cuarta columna = 0 ;Sale si se ha pulsado tecla. ;Si no tecla pulsada,incrementa Tecla. ;Carga W con el nmero de Teclas + 1. ;y lo compara con el valor actual de Tec ;Si Tecla + 1 = valor actual. ;No ha sido pulsada ninguna tecla. ;Pone a 1 Bit C. ;as la Fila 1 pasa a 1 con la rotacin a izqda. ;Coloca variable Tecla a 0 ;y regresa.

KB_Scan

Cheq_Col

Ultima_Tecla la.

CLRF Tecla RETURN

;ahora se espera a que la tecla sea soltada para evitar rebotes ;y reactivaciones de tecla ;esta parte puede ser eliminada si para nuestro proyecto no es n

ecesaria ;o es un inconveniente. Espera1 Espera2 Espera3 Espera4 BTFSS GOTO BTFSS GOTO BTFSS GOTO BTFSS GOTO MOVF iable CALL a MOVWF n la variable. RETURN a llamada. T_Conv ADDWF RETLW RETLW RETLW RETLW RETLW 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' 'B' 'F' 'E' 'D' 'C' ;vuelve al programa principal que hizo l Tecla ;con el valor en hexadecimal y lo pone e T_Conv ;llama a la tabla de conversion y retorn PORTB,4 Espera1 PORTB,5 Espera2 PORTB,6 Espera3 PORTB,7 Espera4 Tecla,w ;Si no se ;vuelve a ;Si no se ;vuelve a ;Si no se ;vuelve a ;Si no se ;vuelve a suelta la esperar. suelta la esperar. suelta la esperar. suelta la esperar. tecla FILA 1 tecla FILA 2 tecla FILA 3 tecla FILA 4

;pone en w el numero contenido en la var

;Tecla ;Tecla ;Tecla ;Tecla ;Tecla ;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 n12 = B n13 = F n14 = E n15 = D n16 = C

[3N+1]M+3M+1=100000 601M+3M=99999 605M=99999 M=165 A5

n=200

C8

También podría gustarte