Hola a todos !
Estoy tratando de terminar un trabajo, pero ya la cabeza (léase los conocimientos) no me dán más.
No es que esté trabado, ni que me esté costando de más .... no.
No sé hacer lo que debiera hacer en ASM, motivo por el cuál les pido si alguien fuese tan amable de ayudarme con algo de código.
Tal vez sea "muy fácil" o "muy sencillo y elemental" pero la cabeza no me dá más.
El planteamiento del problema es el siguiente:
Tengo un programa ya "casi" listo en ASM que está estructurado de la siguiente manera:
Inicio correcto
Primera parte del programa
OPCIÓN
Segunda parte del programa
Loop al inicio y funcionamiento indefinido.
El "casi", lo forma la OPCIÓN.
Cuando el programa llega a esa parte, "debiera leer" un pulsador ubicado en RA4 para ser exacto, y a través de él, ir seleccionando entre OPCIÖN 1, OPCIÓN 2, OPCIÓN 3 ....... hasta OPCIÓN 6.
La selección de OPCIÓN, puede estar en cualquier parte del programa, en la primera, en la segunda .... en cualquier lado.
Al iniciar el programa, debiera encaramarse el mismo en la secuencia:
Inicio correcto
Primera parte del programa
OPCIÓN 1
Segunda parte del programa
Loop al inicio y funcionamiento indefinido con OPCIÓN 1.
Si en algún momento se pulsara RA4, debiera el programa, pasar a trabajar con OPCIÓN 2, quedando funcionando de ésta forma :
Inicio correcto
Primera parte del programa
OPCIÓN 2
Segunda parte del programa
Loop al inicio y funcionamiento indefinido con OPCIÓN 2.
Naturalmente, luego de llegar a OPCIÓN 6, pulsando RA4 pasar a OPCIÓN 1.
Eso es lo que "no sé hacer", el mecanismo de elección y trabajo con la porción de programa seleccionada.
Yo coloco en el programa, cualquiera de las 6 opciones y el programa funciona perfecto, pero con ésa sóla opción.
Podría armar todo en 6 programas individuales y con las instrucciones BTFSS y BTFSC armar una situación para que "salte" a otro segmento de programa y quede en un lazo de subprograma completo con la opción, pero esos 6 "subprogramas" no alcanzan a entrar en la memoria disponible y tampoco sería una salida muy elegante que digamos ....
Me doy cuenta que debiera crear un registro de nombre OPCIÓN, que debo ir incrementando (INCF) de a una unidad cada vez que se pulse RA4, y de ésa forma indicarle al programa por que número de OPCIÓN debe pasar en cada vuelta del loop, ........ "pero no sé armarla a ésa idea" !
En éste momento el programa está armado así:
Inicio correcto
Primera parte del programa
ESPACIO PARA LA OPCIÓNSegunda parte del programa
Loop al inicio y funcionamiento indefinido con la OPCIÓN seleccionada.
OPCIÓN 1
OPCIÓN 2
OPCIÓN 3
OPCIÓN 4
OPCIÓN 5
OPCIÓN 6
Cualquiera de las opciones que coloque en espacio destinado a ellas, hace que el programa funcione perfectamente.
Cómo llegué a armar el resto del programa? Con un programa que tenía, de manera más elemental, y repitiendo los subprogramas, que al ser más elementales, entraban todos en un 16F84A.
Si alguien pudiera ayudarme se lo voy a agradecer.
Espero haber sido claro con lo que estoy necesitando.
Saludos a todos.
Mario