pic Jul. 2016 | Page 60

La técnica de programación requiere tanto de entradas como de salidas. Las filas están conectadas a las patillas de salida y las columnas a las de entrada. Se comienza el testeo colocando a ‘0’ la primera fila, y a ‘1’ las restantes. Si la tecla pulsada estuviese en la columna ‘0’, ésta colocaría en su línea un ‘0’ lógico. Bastará con hacer un muestreo de las columnas, buscando el 0, para saber la tecla exacta que fue pulsada en la matriz. Si no es pulsada ninguna tecla en una fila, las entradas se encuentran en estado flotante, razón por la qu e son necesarias las resistencias de polarización internas, que mantienen las entradas a nivel alto. Dichas resistencia permiten conectar el teclado matricial sin añadir componentes externos. Su activación se realiza a través del bit RBPU del registro OPTION. El programa ejemplo, llamado Teclado.asm, gestiona un teclado hexagesimal (4 filas y 4 columnas) situado en la puerta B. Con el LED situado en RA4 marcaremos si hay o no una tecla pulsada (se encenderá si alguna lo está), mientras que con el resto de LED’s conectados al puerto A indicaremos el número binario equivalente a la tecla pulsada. El WatchDog no está siendo controlado, con lo que le sugerimos que lo desactive para la simulación. LIST P = 16F84 ;Indicamos el modelo de PIC a utilizar ; Definición de registros opcion leds EQU EQU 0X01 0X05 TRISA teclado EQU EQU 0X05 0x06 TRISB estado EQU EQU 0X06 0X03 ;Dirección del registro OPTION ;Hemos conectado los LED's al puerto A ;La dirección 0x05 corresponde al registro porta ; (puerto A) en el banco0 ; y TRISA en banco 1 ;Hemos conectado el teclado al puerto B ;La dirección 0x06 corresponde al registro ; portb (puerto B) en el banco1 ; y TRISB en banco 1 ; La dirección del registro de estado es la 0x03 ; Definición de bits banco EQU 5 pulsada rbpu Z C EQU EQU EQU EQU 4 7 2 0 ; ; ; ; ; ; Bit del registro de estado correspondiente al banco de datos Bit del LED que indica si una hay teclas pulsadas Bit que activa las resistencias internas del puerto B Bit de registro W con valor cero Bit del acarreo. Se pone en el bit 0 al rotar un registro. 58