TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: CARlosDAN783 en 21 de Mayo de 2012, 17:47:50
-
:) :lol: Hola a toda la comunidad de este foro, mis mas lindos deseos para todos.
Bueno la razón de esta consulta es para saber si en lenguaje asm, se puede definir un registro de usuario con un valor directamente establecido, esto es para evitar tener que establecerlo luego, este es el ejemplo; realizo un registro con el nombre carl en la direccion 0x0c ok, hasta aqui todo bien pero me gustaria que ese registro desde el principio lleve un valor preestablecido por ejemplo el 0xff y no tener que hacer la siguiente lineas de codigo
:5] :5] :5]
movlw 0xff
movwf carl
decfsz carl
ect,ect,ect
Y empezar de esta forma:
decfsz carl
ect,ect,ect
ojala y me haya dado a entender bien.
carlosdan783
Mensajes: 1
Registrado: Lun May 21, 2012 9:23 am
-
Hola ,lo que hago siempre al inicio de un programa es borra todas las posiciones de registros :shock:
y cuando tengo que hacer una rutina de retardo en loop lo hago con la instruccion incfsz :shock:
no se me ocurre ahora otra opcion ,quizas ya la estes usando :shock:
Saludos!!!
Ejemplo:
CONTADOR EQU 20H
;
INICIO MOVLW 20H
MOVWF FSR
BORRA CLRF INDF
INCF FSR,F
MOVF FSR,W
XORLW 6FH
BTFSS STATUS,Z
GOTO BORRA
;
LOOP INCFSZ CONTADOR,F
GOTO $-1
RETURN
-
:) Gracias por responder mi amigo pero no entiendes lo que digo, te lo explicare de nuevo creo el registro Contador en la posicion de memoria 0x20 pero quiero tratar de insertarle directamente un valor por ejemplo el decimal 23, es como si quisiera hacer esto
Contador=23 equ 0x20 osea que el registro Contador esta en la posición 20 con el valor 10111 me entiende ahora si. Ahora si mal no recuerdo creo que en lenguaje C se puede hacer esto si no estoy mal claro que con otra estructura de código. :o
-
Pues tampoco es que sea un experto del asm, pero me parece que todo valor que quieras cargar en una dirección de memoria lo tienes que hacer pasándolo por el w, ya que juegas directamente con la arquitectura del micro, de hecho los compiladores de C, lo que hacen al traducirlo a asm, es eso también. Asique, salvo que esté equivocado y alguien nos de una sorpresa, me temo que tendrás que seguir pasando los valores a través del registro W o mediante alguna operación matemática si estás en el programa ya.
(Y tampoco es tan pesado hacer ctrl+C y ctrl+v jejee y cambiar alguna cosilla).
Un saludo.
-
:lol: Gracias amigo NoSepComo tienes razón el lenguaje C hace eso de pasarlo primero al asm y luego código maquina .hex los registros de usuario siempre se inician desde cero y no se puede iniciar con un valor predeterminado lastima que sea así.