Autor Tema: Tablas con PIC 16F84A  (Leído 5174 veces)

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

Desconectado Iten

  • PIC10
  • *
  • Mensajes: 17
Tablas con PIC 16F84A
« en: 22 de Junio de 2010, 19:46:15 »
Hola gente que tal, queria pedirles ayuda con el tema de manejo de tablas y de saltos indexados. No entiendo muy bien, he leido en el foro, en varios libros y todavía no logro entender el tema. Gracias por sus ayudas!

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Tablas con PIC 16F84A
« Respuesta #1 en: 22 de Junio de 2010, 21:22:09 »
Creo que tendrías que especificar un poco más que es lo que no entendés.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Iten

  • PIC10
  • *
  • Mensajes: 17
Re: Tablas con PIC 16F84A
« Respuesta #2 en: 23 de Junio de 2010, 15:12:43 »
No entiendo para que sirven o como se arman. Entiendo lo de los registros W y PCL. Pero no logro entender el tema del salto, como se llama a la rutina. Tengo las ideas desordenadas!

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Tablas con PIC 16F84A
« Respuesta #3 en: 23 de Junio de 2010, 15:40:03 »
No entiendo para que sirven o como se arman. Entiendo lo de los registros W y PCL. Pero no logro entender el tema del salto, como se llama a la rutina. Tengo las ideas desordenadas!

Hola, cuando uno comienza con ASM siempre se topa con ese problema. En el buscador, en la página principal, coloca las palabras clave "tablas asm". Encontrarás varios temas tratando tus dudas.

Desconectado Iten

  • PIC10
  • *
  • Mensajes: 17
Re: Tablas con PIC 16F84A
« Respuesta #4 en: 23 de Junio de 2010, 20:37:55 »
Hola gente, he leido y me quedaron las cosas un poco mas claras. Ahora lo que no entiendo bien es como se hace para llamar a cualquier posicion de la tabla en cualquier momento. estuve viendo en el foro y no entendi bien. Gracias!

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Tablas con PIC 16F84A
« Respuesta #5 en: 23 de Junio de 2010, 21:07:24 »
Supongamos que tenemos la función Tabla. La llamamos desde nuestro programa con call Tabla.

Tabla
  addwf PCL,F                                           
  retlw 0  ;Aquí apunta el PCL si W vale 0     
  retlw 1  ;Aquí apunta el PCL si W vale 1     
  retlw 2  ;Aquí apunta el PCL si W vale 2     

Para no entrar en determinados detalles digamos lo siguiente:
PCL contiene la posición de memoria de la siguiente instrucción a realizar. (Esto no es del todo cierto, ya que el que contiene la dirección es el PC, Program Counter)

Si ejecutamos cualquier instrucción (que no sea un call o un goto), luego de ejecutada la instrucción el PCL se incrementa en 1.

Cuando llamamos a la función Tabla, PCL apunta a la línea "addwf PCL,F".
Luego de ejecutarse esa instrucción, PCL contiene una nueva dirección a la cual va a saltar nuestro programa.

Como nuestra instrucción era sumar W al propio PCL, la nueva dirección apuntada por el PCL estará determinada por W.
Así, si W es 0 la instrucción que se va a ejecutar es la inmediatamente siguiente a "addwf PCL,F". Si W es 2 la instrucción que se va a ejecutar es la siguiente a ("addwf PCL,F" + 2)
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Iten

  • PIC10
  • *
  • Mensajes: 17
Re: Tablas con PIC 16F84A
« Respuesta #6 en: 24 de Junio de 2010, 11:26:18 »
"Así, si W es 0 la instrucción que se va a ejecutar es la inmediatamente siguiente a "addwf PCL,F". Si W es 2 la instrucción que se va a ejecutar es la siguiente a ("addwf PCL,F" + 2)"


Una consulta. Si W=2 no seria "addwf PCL,F" + 3 ? Digo, no se, el valor 2 no esta en la 3º posicion de la tabla?

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Tablas con PIC 16F84A
« Respuesta #7 en: 24 de Junio de 2010, 11:41:20 »
Si el valor 2 está en la 3º posición de la tabla.
Quizá me expliqué mal... O tal vez  generé una confusión pero lo miro de este modo.... si la siguiente a "addwf PCL,F" es la que dice "retlw 0" la siguiente a "addwf PCL,F" +2 seria "retlw 0" +2 por ende es "retlw 2"
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Iten

  • PIC10
  • *
  • Mensajes: 17
Re: Tablas con PIC 16F84A
« Respuesta #8 en: 24 de Junio de 2010, 12:38:42 »
Joya, ya entendí! Muchísimas gracias AngelGris! Agradezco tu tiempo y predisposición! Gracias también a los que aportaron para despejar mis dudas!!!

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Tablas con PIC 16F84A
« Respuesta #9 en: 25 de Junio de 2010, 13:39:09 »
Los micros cuando ejecutan una instruccion (creo que hay que excluir las de salto) hacen siempre una instruccion en W que es  PCL+1 para pasar a la siguiente instruccion y asi hacer que el programa corra, en las tablas hacen PCL+W y a continuacion hacen +1, esto se ve bien cuando llamas a una tabla y en W lleva 0, hace PCL+0 y se quedaria en esa instruccion y no devolveria ningun valor, pero como a continuacion hace PCL+1 nos va al primer valor de la tabla y asi para todos los valores. Espero que se entienda porque es un poco lioso.


 

anything