I'm a total beginner with picbasic, why does my code everytime goes to the "CASE ELSE GOSUB BLINK8" part?
Code:
Include "Modedefs.bas"
DEFINE OSC 4
POWER_LED Var PORTB.0 '
LED1 Var PORTB.7 '
LED2 Var PORTB.6 '
LED3 Var PORTB.5 '
LED4 Var PORTB.4 '
PINTOBLINK VAR BYTE
I VAR BYTE
J VAR BYTE
I_RAMDOM VAR BYTE
TMP_RND VAR BYTE
Main:
HIGH POWER_LED
PAUSE 200
LOW POWER_LED
BLINK_START:
GOSUB SET_RANDOM_VAR
SELECT CASE I_RAMDOM
CASE 1
GOSUB BLINK1
CASE 2
GOSUB BLINK2
CASE 3
GOSUB BLINK3
CASE 4
GOSUB BLINK4
CASE 5
GOSUB BLINK5
CASE 6
GOSUB BLINK6
CASE 7
GOSUB BLINK7
CASE ELSE
GOSUB BLINK8
END SELECT
goto BLINK_START
BLINK1:
FOR I = 1 TO 5
HIGH LED1
HIGH LED2
HIGH LED3
HIGH LED4
PAUSE 200
LOW LED1
LOW LED2
LOW LED3
LOW LED4
PAUSE 200
NEXT I
RETURN
BLINK2:
FOR I = 1 to 3
HIGH LED1
HIGH LED2
HIGH LED3
HIGH LED4
PAUSE 300
LOW LED1
LOW LED2
LOW LED3
LOW LED4
PAUSE 300
NEXT I
RETURN
BLINK3:
FOR I = 1 TO 2
HIGH LED1
HIGH LED2
HIGH LED3
HIGH LED4
PAUSE 1200
LOW LED1
LOW LED2
LOW LED3
LOW LED4
PAUSE 1200
NEXT I
RETURN
BLINK4:
PAUSE 3000
RETURN
BLINK5:
FOR I = 1 TO 5
HIGH LED1
HIGH LED2
HIGH LED3
HIGH LED4
PAUSE 200
LOW LED1
LOW LED2
LOW LED3
LOW LED4
PAUSE 1500
NEXT I
RETURN
BLINK6:
FOR J = 1 TO 2
FOR I = 1 TO 2
HIGH LED1
HIGH LED2
HIGH LED3
HIGH LED4
PAUSE 200
LOW LED1
LOW LED2
LOW LED3
LOW LED4
PAUSE 200
NEXT I
PAUSE 1000
NEXT J
RETURN
BLINK7:
FOR I = 1 TO 10
HIGH LED1
HIGH LED2
HIGH LED3
HIGH LED4
PAUSE 100
LOW LED1
LOW LED2
LOW LED3
LOW LED4
PAUSE 1000
NEXT I
RETURN
BLINK8:
FOR I = 1 TO 2
HIGH LED1
HIGH LED2
PAUSE 1000
LOW LED1
LOW LED2
PAUSE 1000
NEXT I
FOR I = 1 TO 2
HIGH LED3
HIGH LED4
PAUSE 1000
LOW LED3
LOW LED4
PAUSE 1000
NEXT I
RETURN
SET_RANDOM_VAR:
RANDOM TMP_RND
IF TMP_RND // 2 = 0 THEN
RANDOM TMP_RND
IF TMP_RND // 2 = 0 THEN
RANDOM TMP_RND
IF TMP_RND // 2 = 0 THEN
I_RAMDOM=1
ELSE
I_RAMDOM=2
ENDIF
ELSE
RANDOM TMP_RND
IF TMP_RND // 2 = 0 THEN
I_RAMDOM=3
ELSE
I_RAMDOM=4
ENDIF
ENDIF
ELSE
RANDOM TMP_RND
IF TMP_RND // 2 = 0 THEN
RANDOM TMP_RND
IF TMP_RND // 2 = 0 THEN
I_RAMDOM=5
ELSE
I_RAMDOM=6
ENDIF
ELSE
RANDOM TMP_RND
IF TMP_RND // 2 = 0 THEN
I_RAMDOM=7
ELSE
I_RAMDOM=8
ENDIF
ENDIF
ENDIF
RETURN
end