TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: vasconinicolas en 16 de Abril de 2006, 16:08:42
-
Hola amigos, tengo una consulta que es mas dificil de exponer que seguramente su respuesta.
Estoy programando en asm y necesito por ejemplo poner un "1" en un bit en particular de una posicion de memoria, bien si escribo:
BSF 0x30,0
esto pone un 1 en el bit 0 de la posicion de memoria 0x30.... ahora aqui esta la cosa.. Como hago si lo que yo necesito es que en lugar de un literal (0x30) haya una variable que contenga por ejemplo ese valor 0x30 de modo que
BSF variable,0
me ponga un 1 en el bit 0 de la "posicion de memoria 0x30" y no directamente sobre el valor que pueda tener la variable en si??? me explico.-........????
Todo esto es porque necesito barrer una matriz de datos que tengo cargada desde la posicion de memoria 0x30 a la 0x50
Espero haberme expresado lo mejor posible ya que no me resulta facil explicar esto...
Muchas gracias por su tiempo y espero poder aclarar este asunto ya que me simplificaria mucho el codigo...
-
Hola
Parece que hablas de direccionamiento indirecto.
Revisa la hoja de carcaterísticas de tu PIC. El registro FSR es un puntero que se ubica en la dirección 04h y el INDF es un registro que apunta al contenido de FSR y se ubica en 00h. Te pongo el ejemplo que viene en la datasheet del PIC16F84A:
- El registro 05h contiene el dato 10h
- El registro 06h contiene el dato FFh
- Carga 05h en FSR (FSR=05h)
- Lee el registro INDF y te entregará el contenido de 05h, es decir, 10h
- Incrementa FSR (es decir, ahora es 06h)
- Lee INDF y te entregará el dato que hay en 06h, es decir, FFh
-
Gracias MigSantiago, debi suponer que el redireccionamiento indirecto tenia alguna aplicacion!!! jeje, es que nunca lo habia utilizado....
me voy a leer sobre el tema...
saludos y muchas gracias....
Nicolas Vasconi
-
:) yo tampoco lo utilizaba cuando usaba lenguaje ensamblador, pero si lo trae el PIC es porque debe tener algún uso útil :wink: