Autor Tema: Manejo de Menùs en Assembly para Pic  (Leído 1703 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Pic_amateur

  • PIC10
  • *
  • Mensajes: 5
Manejo de Menùs en Assembly para Pic
« en: 15 de Marzo de 2006, 09:48:00 »
Buenas!

Estoy realizando parte de mi tèsis de grado con un pic 16F873A.
Hasta ahora, en todos mis proyectos he manejado los menùs que he realizado mediante un registro en el cual asignaba un bit para cada estado del menù (de manera similar a una maquina de estados), pero resulta que ahora mi menù se ha vuelto algo largo, lo que hace esta estrategia un poco engorrosa.

Alguien puede darme consejos para manejar menùs? Gracias!!!

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Manejo de Menùs en Assembly para Pic
« Respuesta #1 en: 15 de Marzo de 2006, 20:10:00 »
Escrito originalmente por Pic_amateur
Buenas!

Estoy realizando parte de mi tèsis de grado con un pic 16F873A.
Hasta ahora, en todos mis proyectos he manejado los menùs que he realizado mediante un registro en el cual asignaba un bit para cada estado del menù (de manera similar a una maquina de estados), pero resulta que ahora mi menù se ha vuelto algo largo, lo que hace esta estrategia un poco engorrosa.

Alguien puede darme consejos para manejar menùs? Gracias!!!


A decir verdad hice software con numerosos menús y la máquina de estados siempre me funcionó a la perfección.

Eso es solo para mostrar que menu, pero si quieres saber que opcion tomar cuando presionas tal o cual tecla,  entonces en ese caso te conviene usar una única rutina de teclado con todas las posibilidades.  cuando seteas el numero de menú, también seteas las teclas "habilitads" para ese menu.  Esa subrutina devuelve la tecla presionada y dentro de la rutina del menú tomas la decision (de pasar a otro menuu, incrementar un contador, etc).

Creo que es una forma muy práctica y eficiente de programar N menus.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Pic_amateur

  • PIC10
  • *
  • Mensajes: 5
RE: Manejo de Menùs en Assembly para Pic
« Respuesta #2 en: 16 de Marzo de 2006, 17:57:00 »
Hola!

Bueno, muchas gracias por tu respuesta!

Te cuento: Normalemente utilizo un registro comùn que serà el que me maneje los estados del menù, y concentro los pulsadores que me llevaràn el flujo del menù cada uno a un pin de un puerto especìfico y a una and, la cual entrega su salida a la INT del Pic.

Cada vez que la interrupciòn es llamada, evalùo el estado del menù (leyendo mi registro de control) y verifico cual pin del puerto de los pulsadores esta activado, para asì avanzar al siguiente estado y realizar las acciones pertinentes.

Amigo Maunix, tienes algo que agregarle a este manejo, o alguna forma de simplificarlo?

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Manejo de Menùs en Assembly para Pic
« Respuesta #3 en: 16 de Marzo de 2006, 18:30:00 »
Escrito originalmente por Pic_amateur
Hola!

Bueno, muchas gracias por tu respuesta!

Te cuento: Normalemente utilizo un registro comùn que serà el que me maneje los estados del menù, y concentro los pulsadores que me llevaràn el flujo del menù cada uno a un pin de un puerto especìfico y a una and, la cual entrega su salida a la INT del Pic.

Cada vez que la interrupciòn es llamada, evalùo el estado del menù (leyendo mi registro de control) y verifico cual pin del puerto de los pulsadores esta activado, para asì avanzar al siguiente estado y realizar las acciones pertinentes.

Amigo Maunix, tienes algo que agregarle a este manejo, o alguna forma de simplificarlo?



Yo no uso interrupciones para el teclado.  Hago polling porque el teclado en mis aplicaciones no es para nada crítico.  Las interrupciones lo dejo para refrescos de pantalla (si uso 7 segmentos) o para comunicaciones por la usart, u otras cosas más prioritarias en cuestiones de tiempo.

Hago lo mismo, voy y escaneo el teclado (gralmente hago matrices con lo cual no es tan solo leer un pin) pero más alla de eso, esa rutina "resuelve" el problema y me devuelve un valor que almaceno en TECLA.  Ese valor de tecla, lo recibo entonces en la rutina del menú en cuestión y ahí hago lo que tenga que hacer.

Osea, si estoy en MENU1 y oprime la tecla2.  Tal vez tenga que activar un rele y pasar al MENU8.  Todo esto lo hago desde la rutina del MENU1.  

y así sucesivamente.  De esa forma tengo separada cada rutina de cada menú.  En el loop del menú estoy "leyendo el teclado" mientras de fondo se hacen las tareas importantes que mencioné antes.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)


 

anything