That's right my secrets out. I have done a few projects that involve user interfaces and I like to use a pot to scroll through menu items. I also use a single button and assign it different funtions based on how long its held down. You see I like to use a timer to debounce my switch. I set a timer to run free with a 1 mS period. Then when I service its interrupt I check to see if the button is pressed and if it is I increment a counter. Back in my main loop I check the value of the counter and if it is > then say 1000 I toggle an output, if it is > then 3000 I enter the menu screens. If the button is not pressed I zero the counter.
Hope this helps,
Joe Kupcha.
P.S. Consider using a harware UART so that you won't need to wait and you won't miss any characters.
Edit: If you want to use buttons for navigation you can save I/O by using an analog port and setting up a resistor network with the switches shorting out indivdual resistors.
Bookmarks