supuestamente hablaN que despues de un call debe venir un return y si no es asi que pasa?El call carga en la PILA (o stack) la dirección desde donde se está llamando a la subrutina. Esto permite que al ejecutar RETURN el PIC tome esa dirección+1 para seguir ejecutando instrucciones (o +2 en caso de los PIC18).
puesto que si yo acciono un pulsador en preguntas ese return no se ejecuta.
esto lo hice una vez para que un pulsador quedará sencibles a la pulsada.
o de que otra manera ese pulsador puede quedar sensible que el pic lo atienda inmediatamente.
ejemplo:
call retardo
retardo
movlw .250
movwf reg1
decfsz reg1
goto preguntas
return
preguntas
btfsc porta,0
goto rot1
btfsc porta,1
goto rot2
btfsc porta,2
goto rot3
goto retardo
bueno muy bien entendido caballero.
al momento de ejecutar el call y no el return de ese call y el programa sigue y para estar seguro de que ese return que no hice no me afecte el programa como se haria para eliminar ese return que queda esparando en el call.
se que es confusa la pregunta
gracias caballero.
Perdona microcom, pero se ve que ando lelo hoy.
¿Que es lo que queres reformar de ese programa?
Saludos.
caballeros
para anular ese return que se puede hacer.
o sea despues del call si no biene un return como se hace para normalizarl a pila sin llevar a cabo ese return.
o eso no tiene solucion sino es con un return
gracias y saludos.
caballeros muchas gracias por lo correspondido y las explicaciones dadas.
como se puede hacer para que un pulsador o pregunta se a atendida inmediatamente.
sin recurrir al las interrupciones.
para un retardo de 1seg tiene que pasar este tiempo para que el pulsador sea atendido
buena caballero y yo que me encontraba 0.00001% de estas instrucciones y ejemplos que me estas indicando estan callendo en el punto.
ademas siempre tengo la costumbre de colocar una resistencia a tierra y preguntar por unos pero eso no es un inconveniente en esto..
bueno ahi biene la pregunta si yo pregunto por unos o sea coloco una resistencis a tierra y conecto el pulsador a vcc. entonces cogeria
clrf mascara
movf porta,0
andwf mascara,1
btfss status,2
return
sigue el retardo
ahi se eliminaria le complemento de comf porta ya que no seria necesario.
como el puerto esta a tierra y al hacer AND con mascara que tambien es 0
se me activa el bit 2 de status lo cual no hay ningun pulsador presionado y el progarama sigue su retardo normal hasta que se acabe.
siguen rotando los leds con 5seg de retardo y sigo preguntado.
al salir del retardo por un pulsador
btfsc mascara,0
goto primer
btfsc mascara,1
goto segundo
btfsc mascara,2
goto tercer
caballero digame como boy .
el retardo sigue si no pulso ningun pulsador ya aqui no se toma en cuenta el tiempo pulsado en el pulsador si no que se debe atender el pulsador inmediatamente sin esperar nada.
con el programa que usted me corrigio en el otro link que el problema era del direccines generales del pic 16f873A.
tengo un retardo de 5seg y como la pregunta de los pulsadores la tengo es fuera de retardo tengo que demorar un largo rato presionando culaquier pulsador para que sea atendido.
y con esta explicacion ya se como es atendido inmediatemente sin alterar el stack de la pila y reducindo el programa.
caballero si no es un inconveniente de seguirle preguntando de esto ya que me quedan mas dudas.
gracias y saludos
Lo que quiero decirles es que cuando hacen un GoTo dentro de un Call estan haciendo una llamada recursiva.
El PIC no admite recursividad. En ninguno de los lenguajes de programacion...
tenia ganas de preguntar pero me di la tarea de esperar que opinan manos expertas en el asunto .
Lo que quiero decirles es que cuando hacen un GoTo dentro de un Call estan haciendo una llamada recursiva.?
El PIC no admite recursividad. En ninguno de los lenguajes de programacion?
saludos y gracias