I made a multi-function timer that deals with that and does different things according to how long sw is pressed ( and improved it to a touch sw using a/d)...... simply loops through routines using counts of pauses between sw presses.

part of sw press checks......

FOR B5= 1 TO 10 '.1 SECONDS FOR TIMER
PAUSE 6
if GPIO.1= 1 then start
NEXT B5

read 1,b6 :PAUSE 10: W0=60*B6:W1=W0
HIGH 4 ': HIGH 2

FOR B5 = 1 TO 100 '2 SECONDS FOR 6 HR
PAUSE 10
if GPIO.1=1 then TIMER
NEXT B5
W0=28800 '8 HRS
HIGH 2