TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: julio_med en 13 de Septiembre de 2007, 23:45:55
-
hola
tengo una duda
lo que deseo hacer es desde un programa llamado tesis.asm hacer un llamado de otro .asm; por decir teclado.inc.
cuando "tesis.asm"lo estoy simulando y llaga al a la instruccion que llama al otro progragrama, lo ejecuta perfectamente, pero cuando deseo volver al primer programa(tesis.am) se resetea este y pierdo informacion previamente guardada
¿este es el funcionamiento correcto?....¿hay alguna forma de que retorne exactamente donde iba como si se tratara de un call o una macro????
grasias
-
¿este es el funcionamiento correcto?....¿hay alguna forma de que retorne exactamente donde iba como si se tratara de un call o una macro????
No, no es el funcionamiento correcto, evidentemente algo hay ahí que no está bien hecho.
Podrías hacer un goto a la línea próxima siguiente desde el 'otro programa' pero esa es una solución bastante poco elegante.
La única forma elegante que se me ocurre es que uses el CALL , ¿porqué no lo usas?
-
cuando "tesis.asm"lo estoy simulando y llaga al a la instruccion que llama al otro progragrama, lo ejecuta perfectamente, pero cuando deseo volver al primer programa(tesis.am) se resetea este y pierdo informacion previamente guardada
De que manera "llama" al otro programa...CALL ??? GOTO???...Podrías poner esa parte del código y también las ultimas lineas del programa del que debe retornar para que lo veamos y así poder ayudar
-
bueno amigos yo estoy llamando el otro programa asi
NOP
INCLUDE <ENSAYO.INC>
y en el otro programa
org 0a00
goto inicio
ininio
banksel portb
movlw b'00000000'
ect aqui le pongo a hacer cualquier cosa, igual es solo un ensayo
y cuando termina le pongo return y se devuelve pero al inicio del primer programa asi que me borra cualquier info guardada en cualquier registro
-
bueno panas
cuando intento llamar el programa con un CALL o UN GOTO me saca Symbol not previously defined (#INCLUDE)
Symbol not previously defined (ENSAYO.INC)
si la hago asi
call #include ensayo.inc
goto #include ensayo.inc
o
call ensayo o call ensayo.inc o lo mismo con el goto
y si lo intento definir asi:#DEFINE OTRO INCLUDE ENSAYO.INC
para hacer la llamada asi CALL OTRO
igual me saca error
-
julio_med en assembler se usa include solamente sin el #.
También fijate de agregarle comillas al archivo .inc.
Revisa si es eso.
-
maunix:
si uso la llamada de esta manera: INCLUDE "ENSAYO.INC". La simulacion me sigue generando el mismo problema; ahora si utilizo comillas sencillas me saca este error Cannot open file (Include File "'ENSAYO.INC'" not found)
copie este archivo en la carpeta MPASM SUIT de el mplab osea donde estan todos los .INC que utilizamos para no tener que definir todas las variables del pic y mas sin embargo me sigue diciendo que no encuentra el archivo
que puedo hacer??????
-
si uso la llamada de esta manera: INCLUDE "ENSAYO.INC". La simulacion me sigue generando el mismo problema; ahora si utilizo comillas sencillas me saca este error Cannot open file (Include File "'ENSAYO.INC'" not found)
Es con comillas dobles.
copie este archivo en la carpeta MPASM SUIT de el mplab osea donde estan todos los .INC que utilizamos para no tener que definir todas las variables del pic y mas sin embargo me sigue diciendo que no encuentra el archivo
No es necesario para nada, es más, tampoco recomiendo poner tus propios .inc en donde están las declaraciones de registros de todos los pics del MPASM.
¿puedes subir el error que te da? ¿el archivo está en la misma carpeta que el .asm?
que puedo hacer??????
Incluir un .inc es como si "copiaras y pegaras" el código en el lugar donde hayas hecho el include. Eso hace que por ejemplo el .inc bajo ningún punto de vista debe tener un 'end' . ojo con eso
Al instarar el MPASM este te creo las variables de entorno PATH ?
Si sigues con problemas, postea los mensajes que te da el MPASM al querer ensamblar o bien sube el proyecto con sus archivos en un .zip así lo podemos mirar más en detalle
Saludos
-
MAUNIX:
amigo ya funciona, tenias razon con lo de el END en el sugundo programa (ensayo.inc) osea al que estoy llamando desde tesis.asm
pero mas sin embargo en el segundo programa NO debe ir un ORG XXX para cuando termine el segundo programa pueda retornar justo donde iba; como vos decia "cortar y pegar"
asi que la llamada la estoy haciendo: INCLUDE "ENSAYO.INC" y dentro de ensayo:
ej:
LIST P=16F877A
#INCLUDE <P16F877A.INC>
aqui no se necesita definir los registros de nuevo ya que los toma de el primer programa en mi caso tesis.asm
BANKSEL TRISB
MOVLW 00H
MOVWF TRISB
BANKSEL PORTB
CLRF PORTB
BUCLE BSF PORTB,7
CLRF PORTB
MOVLW 10H
MOVWF PROG_CHOOSER
para poder salir de ENSAYO solo dejamos que acabe las instrucciones para que haga el cambio automatico a tesis.asm y continue normalmente, no requiere return.
AMIGOS GRASIAS LA AYUDA SIRVIO MUCHISIMO
-
AMIGOS GRASIAS LA AYUDA SIRVIO MUCHISIMO
Me alegro que te haya funcionado y mucho más me alegro que hayas comprendido de qué se trata el include en asm.
Saludos