Autor Tema: Direccionamiento Indirecto (Registros FSR e INDF) - Duda  (Leído 8243 veces)

0 Usuarios y 4 Visitantes están viendo este tema.

Desconectado Juanp

  • PIC10
  • *
  • Mensajes: 13
Direccionamiento Indirecto (Registros FSR e INDF) - Duda
« en: 14 de Mayo de 2007, 18:19:39 »
Quisiera utilizar el direccionamiento indirecto porque tengo que hacer un programa donde uso muchísimas variables y tenía pensado cambiar de lugar un puntero para ir moviendome por los distintos registros para grabarlos y enviar. el tema es que en la hoja de datos del PIC16F87x dice lo siguiente: "...Writing to the INDF register indirectly results in a no operation..."   :shock: (en la sección 2.5 Indirect Adressing). No sé exactamente a que se refiere, quiere esto decir que no puedo ejecutar por ejemplo "MOVWF INDF" (pretendo grabar el contenido de w dentro del registro al que está apuntando FSR) ? Si esto fuera asi, que otra manera existe de apuntar (o colocar un puntero) a los registros para realizar operaciones?

Saludos

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Direccionamiento Indirecto (Registros FSR e INDF) - Duda
« Respuesta #1 en: 14 de Mayo de 2007, 20:13:26 »
pues que raro no? jejeej, yo suelo usar el FSR con el INDF y normal el pic hace lo que le ordeno, y esta bien la manera en que lo piensas programar, primero se escribe en FSR la direccion del registro que quieres utilizar, luego escribes en INDF el contenido que va a tener el registro direccionado con el FSR.
ejemplo:
movlw 0x20
movwf FSR
movlw 0xAA
movwf indf

lo cual es igual

movlw 0XAA
movwf 0X20
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: Direccionamiento Indirecto (Registros FSR e INDF) - Duda
« Respuesta #2 en: 14 de Mayo de 2007, 22:27:32 »
el tema es que en la hoja de datos del PIC16F87x dice lo siguiente: "...Writing to the INDF register indirectly results in a no operation..."

Te dice que si accedes indirectamente al INDF se ejecutará como un NOP, osea que no hará nada.

Te está diciendo que si el FSR = 0x04 y escribes en el INDF... estás escribiendo sobre el mismo registro y resultará en un NOP porque estás apuntando indirectamente al mismo registro que quieres modificar. 

Espero se haya entendido.

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 micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Direccionamiento Indirecto (Registros FSR e INDF) - Duda
« Respuesta #3 en: 15 de Mayo de 2007, 00:35:29 »
ah gracias maunix  :-/ por la aclaración, claro claro... el FSR tiene como direccion el valor 0X04 segun el datasheet



asi es, tiene sentido lo del NOp en ese caso.  :-)
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

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

Desconectado reiniertl

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Direccionamiento Indirecto (Registros FSR e INDF) - Duda
« Respuesta #4 en: 15 de Mayo de 2007, 09:55:07 »
Si mal no recuerdo la explicación de mi profesor al respecto , porque en esa clase me fui de pesca y regresé con un cachalote.

El registro INDF no es un registro físico, es decir realmente no es una localización de memoria como FSR, o cualquier TRIS, sino que se utiliza para el direccionamiento por referencia y ortogonal del resto de la memoria, al escribir en INDF, la unidad de control toma el dato que está en W y lo escribe en la localización de memoria correspondiente al valor almacenado en SFR, algo parecido pasa con las lecturas.

Esto normalmente se haría complicando la unidad de control del procesador y creando unas cuantas instrucciones más, pero para mantener la ortogonalidad y el set de instrucciones es que se utiliza esta técnica, así usted sigue utilizando "movwf indf" (escritura) y "movfw indf" (lectura) como en el resto de las instrucciones lo que en vez de colocar directamente la localización de memoria a la que accede utiliza un registro puntero SFR y un "registro" especial para esta operación también especial INDF.

PD0: irse de pesca en clase es dormirse encima de la mesa o pupitre
PD1: si en esto hay algún disparate es mío, no de mi profesor, recordar que no estuve presente todo el tiempo porque la pesca del cachalote lleva tiempo.

Un saludo Reinier

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Direccionamiento Indirecto (Registros FSR e INDF) - Duda
« Respuesta #5 en: 17 de Mayo de 2007, 08:51:45 »
El registro INDF no es un registro físico, es decir realmente no es una localización de memoria como FSR, o cualquier TRIS, sino que se utiliza para el direccionamiento por referencia y ortogonal del resto de la memoria, al escribir en INDF, la unidad de control toma el dato que está en W y lo escribe en la localización de memoria correspondiente al valor almacenado en SFR, algo parecido pasa con las lecturas.

A los fines de completar la información en algunos pics es algo más completo que eso ya que los 16F con más de 2 bancos de memoria también hay que "banquear" los accesos indirectos.   Con el FSR se accede a 256 bytes.  Si el pic tiene 4 páginas de memoria ram (16F876 por ejemplo) además hay que setear/borrar el bit para tener un control de 9 bits.  El bit en cuestión es el STATUS<irp>.

En los 18F esto se soluciona ya que hay directamente FSRxL y FSRxH.  La x es porque tienen 3 registros indirectos!!  y ni hablar si el 18F tiene set de instrucciones extendido jiji, pero bueno, ya es entrar en demasiado detalle que no va a los fines del post.  :) :)
- 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)


 

anything