TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: FirmSoft en 16 de Octubre de 2004, 11:05:00

Título: Problemas con rutinas y retornos
Publicado 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!
Título: RE: Problemas con rutinas y retornos
Publicado por: PWRINVITRO en 16 de Octubre de 2004, 11:18:00
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!!!
Título: RE: Problemas con rutinas y retornos
Publicado por: FirmSoft en 16 de Octubre de 2004, 19:50:00
   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!
Título: RE: Problemas con rutinas y retornos
Publicado por: Micom en 17 de Octubre de 2004, 00:47:00
Solo es de salto no hay que poner ningun return ni nada, solo que deve de saltar a una etiqueta.          
Título: RE: Problemas con rutinas y retornos
Publicado por: PWRINVITRO en 17 de Octubre de 2004, 09:59:00
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!!!
Título: RE: Problemas con rutinas y retornos
Publicado por: FirmSoft en 17 de Octubre de 2004, 14:57:00
   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
Título: RE: Problemas con rutinas y retornos
Publicado por: PWRINVITRO en 17 de Octubre de 2004, 15:05:00
Aclarado por messenger!!