For couple of buttons this code works fine, but when I increase number of button handling operations, some weird things occur - the further from beginning is the button handling routine, more rarely it responds to user.

The code below has 8 "blocks" of button handling.

first 3 work fine, 4th one works only maybe on 10 or 15th press. 5th and further - do not work at all.
And this is not issue of particular code - if I move say "5th block" to 1st place of this code, then it works fine.

PIC18F45K80 @64mhz.

Code:

IF UPBT=0 THEN
MENUITEM=MENUITEM+1
IF MENUITEM>6 THEN MENUITEM=1
pause 200
ENDIF
WHILE UPBT=0:WEND 


IF DNBT=0 THEN
MENUITEM=MENUITEM-1
IF MENUITEM<1 THEN MENUITEM=6
pause 200
ENDIF
WHILE DNBT=0:WEND




IF LBUT=0 AND MENUITEM=2 THEN  
RICXVI=RICXVI+1
IF RICXVI>31 THEN RICXVI=1
pause 200
GOSUB SETTIME
ENDIF
WHILE LBUT=0:WEND 


IF RBUT=0 AND MENUITEM=2 THEN  
RICXVI=RICXVI-1
IF RICXVI<1 THEN RICXVI=31
pause 200
GOSUB SETTIME
ENDIF
WHILE RBUT=0:WEND 




IF LBUT=0 AND MENUITEM=1 THEN  
TVE=TVE+1
IF TVE>13 THEN TVE=1
pause 200
GOSUB SETTIME
ENDIF
WHILE LBUT=0:WEND 


IF RBUT=0 AND MENUITEM=1 THEN  
TVE=TVE-1
IF TVE<1 THEN TVE=13
pause 200
GOSUB SETTIME
ENDIF
WHILE RBUT=0:WEND 






IF LBUT=0 AND MENUITEM=3 THEN  
DGE=DGE+1
IF DGE>7 THEN DGE=1
pause 200
GOSUB SETTIME
ENDIF
WHILE LBUT=0:WEND 


IF RBUT=0 AND MENUITEM=3 THEN  
DGE=DGE-1
IF DGE<1 THEN DGE=7
pause 200
GOSUB SETTIME
ENDIF
WHILE RBUT=0:WEND