Hi Fratello. A while back I did the same basic thing you're doing. On an ADC pin I attached a 47K pullup resistor. Then a 22K resistor with pushbutton to ground, 10K with button to ground, 2.2K with button to ground and a 1K with button to ground. Here is the code. It works perfect for me.
ANSEL = 0 'all inputs digital
CMCON = 7 'comparators off
DEFINE OSCCAL_1K 1 ' Set OSCCAL for 1K device to accurize osc
TRISIO = %11111111 'SET I/O'S to all inputs for now
@ device pic12F675, INTRC_OSC_NOCLKOUT, wdt_on, BOD_ON,pwrt_on, mclr_off, protect_on
BUT VAR BYTE 'BUTTON VARIABLE
BUT2 VAR BYTE 'VARIABLE TO COMPARE READINGS TO PREVENT WRONG ADC READINGS
Pause 500 'SETTLE DOWN
STAYHERE:
ADCIN 3,BUT 'ADCIN COMMAND AUTOMATICALLY CONVERTS I/O TO ADC PORT
IF BUT < 100 Then STAYHERE 'IF BUTTON STUCK on power up WAIT HERE
BEGIN:
NAP 0 'REDUCE BATTERY DRAIN
ADCIN 3,BUT
IF BUT > 100 Then begin 'BUTTON not PUSHED
table:
ADCIN 3,BUT
Pause 100
ADCIN 3,BUT2
IF BUT <> BUT2 Then TABLE 'RE-READ ADC should both be same
IF BUT < 91 AND BUT > 71 Then (DO FUNCTION 1)
IF BUT < 50 AND BUT > 40 Then (DO FUNCTION 2)
IF BUT < 15 AND BUT > 8 Then (DO FUNCTION 3)
IF BUT < 8 AND BUT > 4 Then (DO FUNCTION 4)
IF BUT < 5 AND BUT > 2 Then (DO FUNCTION 5) '1K & 2.2K BUTTON PUSHED @ SAME TIME
GOTO BEGIN
Bookmarks