TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: cheswik en 04 de Junio de 2007, 11:07:59
-
Hola,
La intención del siguiente código era escribir en la posición 110h de la ram (banco2). Para ello selecciono el banco 2 y cargo el apuntador con un 10h. Al ejecutar el programa lo que realmente se modifica es la dirección 10h del banco 0. ¿Alguien puede decirme que estoy haciendo mal?
INICIO clrf STATUS
movlw 0x10
movwf FSR ;INICIO APUNTADOR
movlw 0x01 ;DATO A ALMACENAR
bsf STATUS,RP1 ;BANCO2
bcf STATUS,RP0
movwf INDF ;ACCESO INDIRECTO
bcf STATUS,RP1
END
Gracias
-
hola bienvenido al foro, si estas usando un pic de la gama 16FXXXX entonces lo que pretendes es utilizar el direccionamiento indirecto con 9 bits, pues deseas apuntar al banco2, primero lee bien esta parte del datasheet:
(http://img443.imageshack.us/img443/2897/65025905mu8.jpg)
se refiere a que uses el bit IRP del registro status, ahora observa el grafico:
(http://img501.imageshack.us/img501/6178/25290470ud0.jpg)
- los bits RP0 RP1 son para moverse entre los bancos en un direccionamiento directo
- el bit IRP y el octavo bit del registro FSR sirven para moverse entre los bancos en un direccionamiento indirecto
pruebalo y nos comentas tus resultados, exitos! :-/
-
Como ya te ha explicado magistralmente micro_cadaver, lo que debes tener en cuenta es que el registro FSR es de 8 bits, por lo que puedes apuntar a las primeras 256 posiciones de RAM sin tener necesidad de setear el bit IRP.
Si deseas direccionar una posicion más alla de la 0xff, entonces debes setear el bit IRP, y apuntar en el registro FSR a la posicion correcta.
Entonces, para direccionar indirectamente a la posicion 110h, deberias hacer:
bsf STATUS,IRP ;posicion a afectar = 0x100 + valor registro FSR
movlw 0x10
movwf FSR ;posicion a afectar= 0x100 + 0x10 = 0x110
(recordá que te queda el bit IRP seteado...)
¿Se comprendió?
Suerte
-
cheswik
tal ves te sirva
http://www.todopic.com.ar/foros/index.php?topic=12640.0
saludos
-
Perfectamente entendido, con irp seteado selecciono bancos 2 y 3 (desde 0x100 a 0x1ff). tengo que fijarme mejor en el datasheet.
Gracias a todos
bsf STATUS,IRP ; SELECCION BANCOS 2-3
movlw 0x10 ; DIR 0X110
movwf FSR ; INICIO APUNTADOR
movlw 0x01 ;DATO A ALMACENAR
movwf INDF ;ACCESO INDIRECTO