Although I haven't tried it, the following code should work.
It uses no pauses whatsoever.


' Set up timer1 for /8 prescaler

T1CON = %00110001

TOP:
IF PIR1.0 = 1 THEN
PIR1.0 = 0
TMR1H = $D
TMR1L = $CF
Hcounter = Hcounter + 1
IF Hcounter.0 = 0
GOSUB DOTHEWORK
ENDIF
ENDIF

If Button1 = 0 THEN SecCounter = 60
IF Button2 = 0 THEN BTN2 = 1
IF Button3 = 0 THEN BTN3 = 1

GOTO TOP


DOTHEWORK: ' Gets here exactly once per second


IF BTN2 = 1 AND SecCounter > 0 THEN
LEDFLAG = 1
ENDIF
IF BTN3 = 1 AND BTN2 = 1 AND SecCounter > 0 THEN
HORN = 1
ENDIF
IF LEDFLAG = 1 THEN
TOGGLE LED
ENDIF
IF SecCounter > 0
SecCounter = SecCounter -1
ENDIF


Return