Tom,

The value of the pot doesn't really matter as long as its over say 5k. You see you are going to set up a voltage divider across Vcc and ground with the wiper going to the A/D pin. Then I simply read the value of the A/D (0 -1023) and I divide it to give me the number of selections I need. Here is an example. Note the tmr1cnt variable. TMR1 is free running with a 1mS period and tmr1cnt is a variable that is incremented every 1mS. This is compared to mud(menu update) to provide the timing to smoothly update the display. The other timing is provided by the variable "I". It is updated every 1mS if a button is pressed. It is cleared if the button is released. This variable is compared to MBP(menu button press) to debounce the button and ensure that it was held in for a bit.

read_pot:
adcin 3, adval3
y = adval3 / 204
return

SETUP_MENU:
if tmr1cnt > mud then
tmr1cnt = 0
gosub read_pot
x = x + 1
endif
select case y
case 0
lcdout $FE,$C0,"->Reset Counters"
case 1
lcdout $FE,$C0,"->Set Rej. Dwell"
case 2
lcdout $FE,$C0,"->Set Threshold "
case 3
lcdout $FE,$C0,"->Prog. Scanner "
case 4,5
lcdout $FE,$C0,"->Exit Setup "
end select
if i > MBP then
select case y
case 0
tmr1cnt = 0
i = 0
gosub reset_counters
case 1
tmr1cnt = 0
i = 0
gosub set_dwell
case 2
tmr1cnt = 0
i = 0
gosub set_thrsh
case 3
tmr1cnt = 0
i = 0
gosub prog_scan
case 4,5
@ BSF 0x06,1 ;SCANNER Off
gosub SETUP_LCD
goto main
end select
endif
goto SETUP_MENU


Hope this helps

Joe