TODOPIC
Microcontroladores PIC => - Niple - => Mensaje iniciado por: camilo2 en 14 de Septiembre de 2010, 23:14:16
-
Hola a todos, soy nuevo en el foro y en la programación con Niple, por favor necesito que me expliquen como hacer para generar en el ASM la instrucción( rrf contador,f ) ya que en Niple tengo dos opciones, guardarlo en el mismo registro, o guardarlo en el registro w, y eso genera (rrf contador,1 o rrf contador,0 y yo necesito que genere rrf contador.f porque con el 1 o 0 no rota el registro a la derecha pero sin con la f. Gracias de antemano :-/ :-/
-
Cuando insertas un bloque de RRF en Niple lo que se realiza es rotar un bit a la derecha y para ello debes de selecionar el registro a rotar y en el destino seleccionar el mismo registro que has rotado.
De todas formas luego compruebo que es lo que ha generado en el codigo en ASM al compilar.
Fermin
-
En Niple he probado el codigo generado en ASM y te pone por ejemplo
"rrf conta1,1"" Esto significa que el bit se rota a la dereha y al ser ,1 indica que el resultado de la rotacion se guarda en el mismo registro donde se realizó la rotacion en esta caso conta1.
Adjunto un ejemplo donde puedes verlo.
Fermin
-
Gracias Fermin por responder, lo que yo necesito hacer es una pequeña fórmula matemática, que yo lo hago en formato asm pero es impopcible en Niple, a continuacion paso a explicar( 600-74=526/4=131 ) 600 es la cuenta máxima que se va a contar, luego le resto 74, hasta ahi todo bien, ahora tengo que dividir en 4. Niple para dividir en 16 bits ocupa una fórmula de 40 instrucciones que yo lo reemplazo por 6 instrucciones simplemente rotando el registro 2 veces, lo que necesito es como hacer para guardar el resultado de 16 bits en un registro de 8 bits ya que el resultado mayor es 131. Gracias.
bcf status,c
rrf contador1,f
rrf contador2,f
bcf status,c
rrf contador1,f
rrf contador2,f
-
Si el resultado es de 16 bits y el resultado mayor es de 131 ¿ese numero no se habra guardado en el byte bajo del par de registros?
Si es asi solo tienes 2 opciones
o trabajar con ese byte bajo del par de registros de 8bits
o bien asignar a otro registro de 8bits el registro bajo del resultado de 16bits. Eso se hace con asignar valor--> registro destino-->registro origen.
fermin