Teclado Detección de una tecla pulsada.
Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están  pulled up  a una tensión de referencia. X están configuradas como salida Y estánconfiguradas como entrada X X X X Y  Y  Y  Y 5V
Estructura de un teclado II En las intersecciones están los pulsadores. El pulsador pone en contacto la fila con la columna correspondiente X X X X Y  Y  Y  Y 5V
Funcionamiento I En estado de reposo las columnas reciben toda la tensión de referencia El estado de las entradas Y es de 1 lógico  X X X X 1  1  1  1 5V
Funcionamiento II Al pulsar una tecla se establece un puente entre la fila y la columna. Si la X correspondiente está a tierra toda la corriente derivará hacia ella quedando la entrada Y respectiva en contacto con tierra X X 0 X 1  1  0  1 5V
Procedimiento. El procedimiento para trabajar con el teclado es activar todas las salidas (0 lógico) y esperar a que una de las entrada se active 0 0 0 0 1  1  1  1 5V
Procedimiento Cuando se ha detectado una entrada activa, se vuelven a desactivar todas las salidas y se procede a explorar el teclado fila a fila 0 0 0 0 1  1  0  1 5V
Procedimiento 0 1 1 1 1  1  1  1 5V 1 0 1 1 1  1  1  1 5V 1 1 1 0 1  1  1  1 5V 1 1 0 1 1  1  0  1 5V
Procedimiento Al detectar la columna ya tenemos identificada la tecla pulsada con un “código de tecla” XXXXYYYY 1 1 0 1 1 1 0 1 1 1 0 1 1  1  0  1
Procedimiento Este código de tecla debe luego traducirse al código del carácter asignado a la tecla 11011101 ----->  9 Código ascii del 9: 00111001 (39h) 1 2 3 4 5 6 7 8 C 0 A B F E D 9
Conexión al PIC Las ocho líneas del teclado están conectadas al Puerto B RB0..RB3 se deben configurar como entrada RB4..RB7 se deben configurar como salida RB4 RB5 RB6 RB7 RB0  RB1  RB2  RB3 5V
Conexión al PIC Para proporcionarle tensión al sistema las líneas de salida del puerto B deben estar activadas a  pull up
Rebotes La pulsación es un hecho eléctrico que puede causar cierta inestabilidad. Cuando se detecta una pulsación hay que distinguirla de un rebote producido por una pulsación previa 5v 0v 0v 5v
Rebote Si cada ciclo de instrucción dura un micro segundo, es posible muestrear (leer por el puerto) 1000 veces la señal. Antes de que la señal se estabilice podemos hacer muchas lecturas  0v 5v 1ms
Rebote La manera de evitar los rebotes es esperar un cierto retardo tras haber detectado la pulsación de una tecla y comprobar nuevamente su estado 0v 5v Detección errónea de pulsación de tecla Comprobación de la pulsación 5ms
Fin de pulsación Otro problema es el de las lecturas múltiples de la misma pulsación. Para evitarlo hay que esperar a que la tecla deje de estar pulsada antes de devolver el código 0v 5v Tecla pulsada  fin de pulsación 5v 0v
Programación. Tablas En la programación el aspecto más relevante es el de la traducción de código de tecla a código ascii Para ello lo más cómodo es emplear tablas inicio  movlw 34h movwf numero movlw 0ffh movwf cont otro incf cont,1 Call codigonumero subwf numero,0 btfss STATUS,Z goto otro ;En W queda el numero que designa el código ascii 34h fin   goto fin codigonumero movf cont,w addwf PCL retlw 30h; código ascii del cero retlw 31h; código ascii del uno retlw 32h retlw 33h retlw 34h retlw 35h retlw 36h retlw 37h retlw 38h retlw 39h; código ascii del nueve
Programación. Tablas Mediante las instrucciones de sumar a PCL y retlw se van recuperando valores y comparándolos con el de referencia. Cont va llevando la cuenta y al final indicará la posición del valor encontrado inicio  movlw 34h movwf  numero movlw 0ffh movwf  cont otro incf  cont ,1 Call codigonumero subwf numero ,0 btfss STATUS,Z goto otro ;En W queda el numero que designa el código ascii 34h fin   goto fin codigonumero movf  cont ,w addwf PCL retlw 30h; código ascii del cero retlw 31h; código ascii del uno retlw 32h retlw 33h retlw 34h retlw 35h retlw 36h retlw 37h retlw 38h retlw 39h; código ascii del nueve
Programación.Tablas Hay que tener cuidado con el manejo de PCL como mecanismo de salto. PCL solo actúa en ámbito de página PCLATH 0000 0001  PCLATH=0 0002 0003 ...... 00ff 0100 0101  PCLATH=1 0102 0103 ...... 01ff 0200 0201  PCLATH=2 0202 0203 ...... 02ff 0300 0301  PCLATH=3 0302 0303 ...... 03ff !cuidado¡
Programación. Tablas Si la tabla se encuentra en una página diferente a la 0 es necesario actualizar previamente el PCLATH antes de saltar a la tabla inicio  movlw 34h movwf  numero movlw 0ffh movwf  cont MOVLW HIGH codigonumero MOVWF PCLATH otro incf  cont ,1 Call codigonumero subwf numero ,0 btfss STATUS,Z goto otro ;En W queda el numero que designa el código ascii 34h fin   goto fin codigonumero movf  cont ,w addwf PCL retlw 30h; código ascii del cero retlw 31h; código ascii del uno retlw 32h retlw 33h retlw 34h retlw 35h retlw 36h retlw 37h retlw 38h retlw 39h; código ascii del nueve
Programación. Tablas Las tablas no pueden saltar los límites de una página PCLATH. Ubicar las tablas de forma segura usando la directiva  org 0000 0001  PCLATH=0  0002 0003 ...... 00ff 0100 PCLATH=1 0101  0102 0103 ...... 01ff 0200 PCLATH=2 0201  0202 0203 ...... 02ff 0300 PCLATH=3  0301  0302 0303 ...... 03ff codigonumero movf  cont ,w addwf PCL retlw 30h;  retlw 31h;  retlw 32h retlw 33h retlw 34h retlw 35h retlw 36h retlw 37h retlw 38h retlw 39h;
FIN

Teclado

  • 1.
    Teclado Detección deuna tecla pulsada.
  • 2.
    Estructura de unteclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de referencia. X están configuradas como salida Y estánconfiguradas como entrada X X X X Y Y Y Y 5V
  • 3.
    Estructura de unteclado II En las intersecciones están los pulsadores. El pulsador pone en contacto la fila con la columna correspondiente X X X X Y Y Y Y 5V
  • 4.
    Funcionamiento I Enestado de reposo las columnas reciben toda la tensión de referencia El estado de las entradas Y es de 1 lógico X X X X 1 1 1 1 5V
  • 5.
    Funcionamiento II Alpulsar una tecla se establece un puente entre la fila y la columna. Si la X correspondiente está a tierra toda la corriente derivará hacia ella quedando la entrada Y respectiva en contacto con tierra X X 0 X 1 1 0 1 5V
  • 6.
    Procedimiento. El procedimientopara trabajar con el teclado es activar todas las salidas (0 lógico) y esperar a que una de las entrada se active 0 0 0 0 1 1 1 1 5V
  • 7.
    Procedimiento Cuando seha detectado una entrada activa, se vuelven a desactivar todas las salidas y se procede a explorar el teclado fila a fila 0 0 0 0 1 1 0 1 5V
  • 8.
    Procedimiento 0 11 1 1 1 1 1 5V 1 0 1 1 1 1 1 1 5V 1 1 1 0 1 1 1 1 5V 1 1 0 1 1 1 0 1 5V
  • 9.
    Procedimiento Al detectarla columna ya tenemos identificada la tecla pulsada con un “código de tecla” XXXXYYYY 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1
  • 10.
    Procedimiento Este códigode tecla debe luego traducirse al código del carácter asignado a la tecla 11011101 -----> 9 Código ascii del 9: 00111001 (39h) 1 2 3 4 5 6 7 8 C 0 A B F E D 9
  • 11.
    Conexión al PICLas ocho líneas del teclado están conectadas al Puerto B RB0..RB3 se deben configurar como entrada RB4..RB7 se deben configurar como salida RB4 RB5 RB6 RB7 RB0 RB1 RB2 RB3 5V
  • 12.
    Conexión al PICPara proporcionarle tensión al sistema las líneas de salida del puerto B deben estar activadas a pull up
  • 13.
    Rebotes La pulsaciónes un hecho eléctrico que puede causar cierta inestabilidad. Cuando se detecta una pulsación hay que distinguirla de un rebote producido por una pulsación previa 5v 0v 0v 5v
  • 14.
    Rebote Si cadaciclo de instrucción dura un micro segundo, es posible muestrear (leer por el puerto) 1000 veces la señal. Antes de que la señal se estabilice podemos hacer muchas lecturas 0v 5v 1ms
  • 15.
    Rebote La manerade evitar los rebotes es esperar un cierto retardo tras haber detectado la pulsación de una tecla y comprobar nuevamente su estado 0v 5v Detección errónea de pulsación de tecla Comprobación de la pulsación 5ms
  • 16.
    Fin de pulsaciónOtro problema es el de las lecturas múltiples de la misma pulsación. Para evitarlo hay que esperar a que la tecla deje de estar pulsada antes de devolver el código 0v 5v Tecla pulsada fin de pulsación 5v 0v
  • 17.
    Programación. Tablas Enla programación el aspecto más relevante es el de la traducción de código de tecla a código ascii Para ello lo más cómodo es emplear tablas inicio movlw 34h movwf numero movlw 0ffh movwf cont otro incf cont,1 Call codigonumero subwf numero,0 btfss STATUS,Z goto otro ;En W queda el numero que designa el código ascii 34h fin goto fin codigonumero movf cont,w addwf PCL retlw 30h; código ascii del cero retlw 31h; código ascii del uno retlw 32h retlw 33h retlw 34h retlw 35h retlw 36h retlw 37h retlw 38h retlw 39h; código ascii del nueve
  • 18.
    Programación. Tablas Mediantelas instrucciones de sumar a PCL y retlw se van recuperando valores y comparándolos con el de referencia. Cont va llevando la cuenta y al final indicará la posición del valor encontrado inicio movlw 34h movwf numero movlw 0ffh movwf cont otro incf cont ,1 Call codigonumero subwf numero ,0 btfss STATUS,Z goto otro ;En W queda el numero que designa el código ascii 34h fin goto fin codigonumero movf cont ,w addwf PCL retlw 30h; código ascii del cero retlw 31h; código ascii del uno retlw 32h retlw 33h retlw 34h retlw 35h retlw 36h retlw 37h retlw 38h retlw 39h; código ascii del nueve
  • 19.
    Programación.Tablas Hay quetener cuidado con el manejo de PCL como mecanismo de salto. PCL solo actúa en ámbito de página PCLATH 0000 0001 PCLATH=0 0002 0003 ...... 00ff 0100 0101 PCLATH=1 0102 0103 ...... 01ff 0200 0201 PCLATH=2 0202 0203 ...... 02ff 0300 0301 PCLATH=3 0302 0303 ...... 03ff !cuidado¡
  • 20.
    Programación. Tablas Sila tabla se encuentra en una página diferente a la 0 es necesario actualizar previamente el PCLATH antes de saltar a la tabla inicio movlw 34h movwf numero movlw 0ffh movwf cont MOVLW HIGH codigonumero MOVWF PCLATH otro incf cont ,1 Call codigonumero subwf numero ,0 btfss STATUS,Z goto otro ;En W queda el numero que designa el código ascii 34h fin goto fin codigonumero movf cont ,w addwf PCL retlw 30h; código ascii del cero retlw 31h; código ascii del uno retlw 32h retlw 33h retlw 34h retlw 35h retlw 36h retlw 37h retlw 38h retlw 39h; código ascii del nueve
  • 21.
    Programación. Tablas Lastablas no pueden saltar los límites de una página PCLATH. Ubicar las tablas de forma segura usando la directiva org 0000 0001 PCLATH=0 0002 0003 ...... 00ff 0100 PCLATH=1 0101 0102 0103 ...... 01ff 0200 PCLATH=2 0201 0202 0203 ...... 02ff 0300 PCLATH=3 0301 0302 0303 ...... 03ff codigonumero movf cont ,w addwf PCL retlw 30h; retlw 31h; retlw 32h retlw 33h retlw 34h retlw 35h retlw 36h retlw 37h retlw 38h retlw 39h;
  • 22.