TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: ErnestAl en 20 de Junio de 2007, 19:27:45

Título: Punteros de ram, ¿como se usan?
Publicado por: ErnestAl en 20 de Junio de 2007, 19:27:45
Hola, alguien me puede responder a la pregunta de si usar punteros de ram y direccionamiento indirecto en assambler es lo mismo ¿? :? :? :? :? :? :? :? :?
Título: Re: Punteros de ram, ¿como se usan?
Publicado por: maunix en 20 de Junio de 2007, 19:57:29
Hola, alguien me puede responder a la pregunta de si usar punteros de ram y direccionamiento indirecto en assambler es lo mismo ¿? :? :? :? :? :? :? :? :?

Un direccionamiento indirecto sería la efectivización del uso de un puntero.  El puntero en realidad sería otro registro (que tenga un nombre que vos elijas) que dice a donde debe apuntar y el FSR es quien termina ejecutando la acción.



Título: Re: Punteros de ram, ¿como se usan?
Publicado por: ErnestAl en 21 de Junio de 2007, 10:28:54
Entonces si quisiera almacenar 100bytes recibidos por la USART y almacenarlos en el banco1 de la ram, ¿funcionaria la siguiente rutina de atencion a la interrupcion producida por la USAR?

                    MOVLW    H'80'
                    MOVWF   FSR
  guarda        BCF         STATUS,IRP
                    BSF         STATUS,RP0
                    BCF         STATUS,RP1 ;aCCESO AL BANK1
                    MOVF       TEMP,W
                    MOVWF    INDF
                    INCF         FSR,F
                    DECFSZ    CONTA
                    RETURN        ;SALGO PQ YA HE GUARDADO
                    GOTO         FIN    ;SALIDA PARA APAGAR EL PIC

Siento los posibles fallos,todavia estoy en fase de aprendizaje

   GRACIAS
                   
Título: Re: Punteros de ram, ¿como se usan?
Publicado por: maunix en 21 de Junio de 2007, 11:52:05
Asi como está funcionaría si TEMP está en el banco 1.

Si TEMP está en el banco 0 , no hace falta usar los bits de RP0 y RP1.  El direccionamiento indirecto apunta a 256 bytes a la vez y solo necesitas tocar el bit STATUS<IRP>

Título: Re: Punteros de ram, ¿como se usan?
Publicado por: BrunoF en 21 de Junio de 2007, 11:57:14
Para que lo veas más fácil:

Si bit IRP  = 0 entonces:

FSR puede apuntar desde la posicion 0x00 hasta la 0xFF.

Si bit IRP  = 1 entonces:

FSR puede apuntar desde la posicion 0x100 hasta la 0x1FF.

Por lo que si querés apuntar a la posición 0xF0 de memoria RAM, IRP debería estar a cero y simplemente cargas el valor 0xF0 en el registro FSR.
Posteriormente, con el INDF afectas su contenido.

Saludos.

Título: Re: Punteros de ram, ¿como se usan?
Publicado por: ErnestAl en 21 de Junio de 2007, 16:35:55
¿Y como puedo hacer para que el registro temp este en el banco 1?
Título: Re: Punteros de ram, ¿como se usan?
Publicado por: maunix en 21 de Junio de 2007, 18:49:45
¿Y como puedo hacer para que el registro temp este en el banco 1?

Declararlo en una posición como 0xA0 por ejemplo


TEMP equ 0xA0

Título: Re: Punteros de ram, ¿como se usan?
Publicado por: ErnestAl en 21 de Junio de 2007, 19:02:19
creo que de vez en cuando una repasada al datasheet no vendria mal  :oops: :oops:

 gracias!!!!
Título: Re: Punteros de ram, ¿como se usan?
Publicado por: maunix en 22 de Junio de 2007, 08:36:30
creo que de vez en cuando una repasada al datasheet no vendria mal  :oops: :oops:

 gracias!!!!

Jajaja, y ... digamos que si  :mrgreen: :mrgreen: