TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: FirmSoft en 16 de Octubre de 2004, 11:05:00
-
En una llamada a una rutina de lectura:
call LEER
LEER
btfsc VALOR
goto EsUno
goto EsCero
EsUno
return
EsCero
return
poner dos returns dentro de la misma rutina... afecta en algo?... porque en un codigo que estoy haciendo necesito algo similar a esto y al poner 2 returns el programa actua de manera anormal
.
Alguna opinion....Gracias!
-
JEJEJEJJEJE no vale esos RETURN son totalmente independientes al micro no le importa si la opcion fue UNO o si fue CERO lo q le importa es encontrar en elgun momento el RETURN del CALL q se realizo.... de hecho puedes tener hasta 8 CALLS anidados ya que la profundidad de pila es 8.... si tienes algun problema con comportamientos anormales debe ser en la logica de programacion mas no en los yamados!!!


-
Osea que el llamado se hace normal, y para retornar no importa que return usemos mientras sea return?... osea.. podemos tener una rutina LECTURA y una rutina LECTURA2... y usar para retornar a la llamada el mismo return de la otra rutina... es decir:
call LECTURA2
call LECTURA
LECTURA
....
....
LECTURA2
....
....
return
Otra pregunta.... aparte de esto... la instruccion GOTO... funciona como la instruccion CALL ??? es decir, al encontrar un return, retorna o es solo un salto y al encontrar el return regresa a la llamada de la rutina?? ... Gracias y mil saludos!
-
Solo es de salto no hay que poner ningun return ni nada, solo que deve de saltar a una etiqueta.
-
Saludos... las instrucciones GOTO $-x donde x=0,1,2,3...,n, n<=15(para q sea util) y las btfss, btfsc son instrucciones de saltos relativos y se usan primordialmente para moverte dentro de una misma rutina segun se cumpla una condicion.... en cambio las instrucciones de CALL y GOTO son instrucciones de salto absoluto.. para moverse por todo el codigo la diferencia esta en que si usa un GOTO para ir a una rutina y luego kieres devolverte a donde hisite el goto debes poner una etiketa en el lugar donde te kieres devolver u usar otro GOTO... con el CALL basta con poner un RETURN para seguir con la ejecucion normal del programa... claro cuando usas un GOTO no necesarioamente tienes q devolverte al lugar de donde lo hiciste... es para q veas la diferencia y con respecto a lo otro si haces yamado a lectura y ademas kieres q se ejecute lectura 2 puedes hacerlo asi... si yamas a lectura2 y no kieres q se ejecute lectura tambien esta correcto pero si kieres q soloo se ejecute lectura sin pasar por lectura2 entonces debes poner el RETURN al final de LECTURA!!!! saludos!!!
-
Mil gracias... jeje.. debes pensar que soy de madera
... solo me quedo una duda de todo esto y es en la parte donde dices:
las instrucciones GOTO $-x donde x=0,1,2,3...,n, n<=15(para q sea util)
En que varia el cambio de los numero de 0 a 15 y porque no ecceder los 15?? ... Gracias y disculpa por tatos interrogatorios 

-
Aclarado por messenger!!