Progrmming menus on 2x16LCD

I have built a control panel having 2 x 16 char LCD, 16 button numerical keypad controlled by 68HC11. I have a series of menus for entering process settings. The menus are navigated using up, down, left and right arrows - similar to mobile phone menus. Mostly the menus consist of a title on the upper line and editable numerical value on the lower line. The problem: At present I have ten simple menus. Navigation is clunky and the code is becoming spagettilike. I also would like submenus. I am using assembly language and can give about 1K bytes to the menu part of the program. Is there a clever way to do this? I am hoping there may be a standard way to do it, or that I will get suggestions for giving structure to the process. In Hope. J. Casey.

Reply to
Joseph Casey
Loading thread data ...

Perhaps a tiny menu interpreter? That would seperate the data (menu layout) from the code. Each menu would seem to have text and a list of actions possible depending on the key. Two bytes for key and action type, then 2 bytes for either a code address or address of the next menu depending on the action type. Add code stubs, a little menu stack, toss into assembler, serve...

MENU1: db "Text to be displayed on LCD, yada yada", 0 ; My brain's in Intel mode right now db UPKEY, MENUCHANGE dw MENU0 db DOWNKEY, MENUCHANGE dw MENU10 db NOPKEY, MENU1 db SUBKEY1, CALLMENU dw MENU1-1 db SUBKEY2, CALLMENU dw MENU1-2 db 0 ; Menu terminator

It gets mildly trickier if the text is generated by code rather than constants, but I'm not going to do _all_ your work. :^P

--
Ron Sharp.
Reply to
Android Cat

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.