Autor Tema: teclado pc con pic16f628 sin interrupcion  (Leído 4657 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado manongo123

  • PIC10
  • *
  • Mensajes: 5
teclado pc con pic16f628 sin interrupcion
« en: 30 de Agosto de 2007, 01:29:39 »

hola, he buscado informacion de como comunicar de un teclado a un pic, pero en los ejemplos en todos los casos utilizan la interrupcion INT/RB0, para el proyecto, y si ese pin lo estoy utilizando y lo tengo ocupado? no habria problemas con utilizar este codigo que es un ejemplo:




dato   EQU   03
clock   EQU   02


AUXA      equ   22h
AUXB      equ   23h
rxbuf      equ   24h
count      equ   26h

   ORG    000H
   GOTO   MAIN


    Banksel TRISA
MAIN:     Clrf    PORTA        ; limpia el puerto A,  salidas
          Movlw   0x07         ; Comparadores desactivados,
          Movwf   CMCON        ; i/o digitales.

      BSF      STATUS,RP0
      Movlw      b'00000000'  ;       Movwf   PORTB
      movlw      b'00001100'
          Movwf      PORTA
      BCF      STATUS,RP0
      goto      INICIO

;.....................................................

INICIO       clrf      PORTB
      movlw      b'11111111'
      movwf      PORTB
      call        START
      movf      rxbuf,w                  ;saco el dato por el puerto b para ver cada tecla
      movwf      PORTB                   ; y dejo a un lado los pulsos de reloj y el stop l
      call        retardo                    ; o q viene con un retardo de 1s
      goto      INICIO   
;.....................................................
;.....................................................
START   
        btfsc      PORTA,clock              ;aqui es donde llega la bajada de pulso de reloj
   goto      START
   btfsc      PORTA,dato
   goto      INICIO
   call      RELOJ
   call      RX                     ; con esto ya tengo el dato
   
   return

;....................................................
;....................................................
RELOJ   
        btfss      PORTA,clock
   goto      RELOJ
   nop
   nop
   nop
N1   btfsc      PORTA,clock
   goto      N1
   return
;....................................................
RX   clrf      rxbuf
   movlw      .8
   movwf      count
   bcf      STATUS,0
RXPL   rlf      rxbuf,f   
   call      RELOJ
   call      BITIN
   decfsz   count,f
   goto      RXPL
   return   
;.....................................................


BITIN      btfss      PORTA,dato
      return
      bsf      rxbuf,0
      return   

                      end



no medi tiempos ni nada, les agradeceria si hay informacion de otra manera de sacar los codigos del teclado para el pic en asm.




« Última modificación: 30 de Agosto de 2007, 01:31:48 por manongo123 »

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: teclado pc con pic16f628 sin interrupcion
« Respuesta #1 en: 30 de Agosto de 2007, 20:32:00 »
lo mejor es dejarlo dedicado y acomodar el resto en otrs pines, que mas vas a usar?
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: teclado pc con pic16f628 sin interrupcion
« Respuesta #2 en: 01 de Septiembre de 2007, 11:56:52 »
manongo123, el uso de la interrupción te evita tener que andar haciendo un muestreo contante al pin del puerto, pero por supuesto lo puedes resolver con otro pin solo que lo deberás hacer por software.

En pics con módulo CCP puedes usar el flanco del modo captura para hacer lo mismo.

Saludos


- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: teclado pc con pic16f628 sin interrupcion
« Respuesta #3 en: 03 de Septiembre de 2007, 18:33:49 »
si te fuera posible puedes aprovechar que en el portb los pines 4 al 7 tambien tiene interrupcion en sus pines solo verifica en cual de ellos ha sucedido el cambio y ejecutas
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: teclado pc con pic16f628 sin interrupcion
« Respuesta #4 en: 04 de Septiembre de 2007, 09:28:34 »
si te fuera posible puedes aprovechar que en el portb los pines 4 al 7 tambien tiene interrupcion en sus pines solo verifica en cual de ellos ha sucedido el cambio y ejecutas

La única diferencia es que esa interrupción es por Nivel, siendo que la del RB0 y de los CCP es por flanco, eso habría que cambiar la forma de interpretar los resultados.
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: teclado pc con pic16f628 sin interrupcion
« Respuesta #5 en: 04 de Septiembre de 2007, 11:17:46 »
¿Puedes explicar mejor eso de la "interrupción por nivel"?
Yo las he usado ambas, la externa, y la del puerto B, y ambas se me disparan cuando el PIN cambia de estado. No sé si internamente hay una diferencia y es a eso a lo que te refieres.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: teclado pc con pic16f628 sin interrupcion
« Respuesta #6 en: 04 de Septiembre de 2007, 11:52:17 »
¿Puedes explicar mejor eso de la "interrupción por nivel"?
Yo las he usado ambas, la externa, y la del puerto B, y ambas se me disparan cuando el PIN cambia de estado. No sé si internamente hay una diferencia y es a eso a lo que te refieres.

Una interrupción por Flanco, es la que actua cuando la señal SUBE o BAJA (durante la acción de subir o bajar).

Una interrupción por nivel es la que se activa cuando la tensión logra un cierto valor, sin importar si lo hizo en 1 useg o en 2 horas.


Desde el punto del software tal vez no tenga mucha relevancia pero lo aclaré por las dudas.
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: teclado pc con pic16f628 sin interrupcion
« Respuesta #7 en: 04 de Septiembre de 2007, 12:28:01 »
Suponiendo entonces que la configuramos para que salte en flanco ascendente, ¿quieres decir que la interrupción por flanco salta incluso aunque no se llegue a un 1 lógico y basta con que suba un poco?

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: teclado pc con pic16f628 sin interrupcion
« Respuesta #8 en: 04 de Septiembre de 2007, 15:14:43 »
Suponiendo entonces que la configuramos para que salte en flanco ascendente, ¿quieres decir que la interrupción por flanco salta incluso aunque no se llegue a un 1 lógico y basta con que suba un poco?

No, no basta eso, seria al revés, es probable que si sube "lento" no se detecte el flanco como tal.  Hablo de electrónica elemental, no lo he probado con los pics, solo advierto de ello por si la rutina es muy dependiente del flanco habría que 'probar' realmente si funciona así sin pocos retoques en la interrupción del puerto B.

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: teclado pc con pic16f628 sin interrupcion
« Respuesta #9 en: 04 de Septiembre de 2007, 15:33:35 »
Como se configura una interrupcion por nivel??
Es similar al Treshold que tienen los MCP25050 en su conversor A/D ?? :shock:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado manongo123

  • PIC10
  • *
  • Mensajes: 5
Re: teclado pc con pic16f628 sin interrupcion
« Respuesta #10 en: 04 de Septiembre de 2007, 23:30:55 »
yo tambien estoy de acuerdo con usar la interrupcion para este proyecto, pero en mi programa esa patita la estoy usando para otro fin (tambien interrupcion), y le estoy adicionando un teclado y por lo q veo q es casi como leer una memoria epron serial, no se ve complicado,lo q quiero es reconocer cada tecla y darle un valor o una funcion en mi programa tipo caja registradora (nada de codigo ascii y pasar a computadora) algo simple.y espero terminarlo. 

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: teclado pc con pic16f628 sin interrupcion
« Respuesta #11 en: 05 de Septiembre de 2007, 08:45:20 »
Como se configura una interrupcion por nivel??
Es similar al Treshold que tienen los MCP25050 en su conversor A/D ?? :shock:

No conozco ese conversor, pero siendo más general es como cuando tenes usas las entradas comparador de los pics... tenes por un lado un voltaje de referencia y por el otro tenes la salida.  Si lo supera se activa, sino, no se activa.  Estos 'comparadores' no son más que operacionales de gran ganancia que amplifican cualquier pequeña diferencia.

En los pics, no hay nada que te lo configure de esa forma, simplemente en electrónica se definen un par de formas de activar una compuerta lógica.

por nivel : cuando al tensión llega a un cierto valor
por flanco: cuando la tensión cambia abruptamente de un valor a otro.

En esto es importante ese 'graduación' con que cambia la señal se denomina 'slew rate' y mide la pendiente en que varía la tensión con respecto al tiempo. 

El tema de los cambios por nivel es que suele haber zonas 'no permitidas' , valores de voltaje para los cuales el valor no es 0 ni 1.  Las entradas schmitt trigger vienen a solucionar este problema, son operacionales con gran ganancia que se van a los 5V o a los 0V con un salto rápido de tensión a pesar que la entrada varíe lentamente.   Si uno lo arma, le puede configurar el rango del SI y del NO digamos,

Por ejemplo.

1) Superados los 2.7V que la señal se haga 5V
2) Cuando la señal sea menor que 2.3V que la señal se haga 0V.

A esa región y tipo de comportamiento se le llama 'histéresis' y evita que si la señal es 2.69V la salida esté variando de 5V a 0V constantemente.

Entonces una secuencia sería:
1. cuando la señal de entrada sube lentamente de 0 hasta 2.69V , la salida es 0V
2. cuando la señal de entrada llega a 2.7V, la salida es 5V
3. si la señal de entrada varía entre 2.7V y 5V, la salida es 5V
4. la señal de entrada comienza a descender su valor, y al llegar a 2.7V la salida sigue siendo 5V.
5. la señal de entrada sigue bajando hasta 2.31 y la salida sigue siendo 5V.
6. la señal de entrada es 2.30V entonces la salida pasa a ser 0V.

Con eso logramos que si la entrada tiene cierta fluctuación la salida no variará.  Este es el comportamiento básico de un schmitt trigger.  También son muy útiles para evitar las zonas 'no válidas', por ejemplo si usamos compuertas donde la salida tenga un comportamiento impredecible cuando la entrada está entre 1.2V y 2.3V, es un lugar perfecto para poner un schmitt trigger.

Hay señales que se detectan por un cambio abrupto de su entrada y otras que no, es allí donde vienen las señales que se denominan activas por nivel y activas por flanco.

Al final ambas llegan a un nivel de tensión, el tema es saber en qué tiempo lo hacen.  Con las señales por nivel solamente nos interesa eso, el nivel de voltaje alcanzado, pero en una de flanco se nos pide y se nos está 'diciendo' que el cambio sea rápido y no que sea algo lento. 

El comportamiento de un teclado, es en general por flanco ya que la señal cambia abruptamente.

En general, trato de evitar las señales 'por nivel' y trato de que las mismas cambien de forma rápida, ya que si sucede algo raro en el pic, no se, alguna interferencia o lo que sea, no me gustaría estar en una zona indeterminada.
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: teclado pc con pic16f628 sin interrupcion
« Respuesta #12 en: 05 de Septiembre de 2007, 09:17:02 »
Gracias por la explicacion!! :-/ :-/
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.