Autor Tema: RLF W,W  (Leído 2607 veces)

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

Desconectado _Canito_

  • PIC12
  • **
  • Mensajes: 74
RLF W,W
« en: 20 de Diciembre de 2004, 07:22:00 »
Hola a todos,

No si es un problema del simulador del MPlab o que es lo que es toy haciendo mal en el siguiente codigo:

movlw B"00000001"   ;cargar un valor en W
bcf status,c               ;limpiar el carry
rlf w,w                      ;rotar el valor en W hacia la izquierda y guardarlo en W

W deberia quedar con B"00000010" pero el resultado es W=B"00000000".

Mi duda es si "rlf w,w"  se puede implementar o no.

¿Alguien podría verificar esto y confirmarme si realmente no funciona?


Gracias.
Un saludo a todos
Jorge.

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
RE: RLF W,W
« Respuesta #1 en: 20 de Diciembre de 2004, 08:31:00 »
Codigo:

Syntax: [ label ] RLF f,d


Example   RLF REG1, 0

                     Before Instruction

                     REG1 = 1110 0110
                     C = 0

                     After Instruction

                     REG1 = 1110 0110
                     W    = 1100 1100
                     C = 1




Parece ser que hay que indicarle el valor de un registro . o esto entiendo .

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
RE: RLF W,W
« Respuesta #2 en: 20 de Diciembre de 2004, 08:51:00 »
Hola Jorge, verifique el codigo, y efectivamente queda en cero...

tambien, pensando a W como el mismo registro escribi rlf w,f  y alli aparece "00000001" pero no rota... Llorando

yo tengo el mplab 5.70.40

tendremos que estudiar.... y no tira ningun error....
nunca rote sobre W.....

Norberto

Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: RLF W,W
« Respuesta #3 en: 20 de Diciembre de 2004, 08:58:00 »
Me temo que "rlf w,w" no se puede implementar, Canito.

Como dice Sispic, hay que indicarle el valor del registro temp que quieres modificar:
RLF f,d
f : Dirección del Registro de almacenamiento inicial ( desde 00(00h) a 127(7Fh) )
d : Selección de destino ( 0 o 1 )

La operación en sí es tal que mueve el contenido que haya en el registro f un bit a la izquierda, incluyendo el bit de carry.
La selección del destino indicará dónde se almacena el nuevo valor:

si d = 0 : el resultado va a W
si d = 1 : el resultado va a f

Una cosa: esta instrucción lleva consigo un efecto flag:    el bit más significativo del registro f se cargará en C.

Espero haberte ayudado.

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
RE: RLF W,W
« Respuesta #4 en: 20 de Diciembre de 2004, 09:20:00 »
Sonrisa Gigante
mirando FIGURE 1-1: PIC16F84A BLOCK DIAGRAM
alli se ve que el registro de instrucciones, decode control etc, no tienen acceso directo al registro w.....
Como Manifiesta Elena y Sipic.... tendras que emplear un registro temporal.... Llorando


o crear la RLW... o una macro loco
Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
RE: RLF W,W
« Respuesta #5 en: 20 de Diciembre de 2004, 12:10:00 »
El compilador no da error y se traga  ->  RLF W,W  por que  W es una definición constante y es equivalente a cero .


así :
;==========================================================
;
;       Register Definitions
;
;==========================================================

W                            EQU     H"0000"
F                            EQU     H"0001"

osea que  RLF W,W rotará el contenido de la posicion 0 y guarda en w

felices fiestas ¡


Desconectado _Canito_

  • PIC12
  • **
  • Mensajes: 74
RE: RLF W,W
« Respuesta #6 en: 20 de Diciembre de 2004, 15:06:00 »
Gracias a todos,

Felices Fiestas.
Jorge.


 

anything