Quantcast
Channel: MEL PICBASIC Forum
Viewing all articles
Browse latest Browse all 4793

Blinking Project

$
0
0
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


Viewing all articles
Browse latest Browse all 4793