Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: _Canito_ en 20 de Diciembre de 2004, 07:22:00
Título: RLF W,W
Publicado por: _Canito_ 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.
Título: RE: RLF W,W
Publicado por: Sispic 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 .
Título: RE: RLF W,W
Publicado por: todopic 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...
yo tengo el mplab 5.70.40
tendremos que estudiar.... y no tira ningun error.... nunca rote sobre W.....
Norberto
Título: RE: RLF W,W
Publicado por: Elena2000 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.
Título: RE: RLF W,W
Publicado por: todopic en 20 de Diciembre de 2004, 09:20:00
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....
o crear la RLW... o una macro Norberto
Título: RE: RLF W,W
Publicado por: Sispic 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 ¡
Título: RE: RLF W,W
Publicado por: _Canito_ en 20 de Diciembre de 2004, 15:06:00