Device 16F887
Xtal 10
Asm
CONFIG_REQ
__CONFIG _CONFIG1, HS_OSC & WDT_OFF & DEBUG_OFF & FCMEN_OFF & LVP_OFF & IESO_OFF & BOR_OFF & CPD_OFF & CP_OFF & MCLRE_OFF & PWRTE_ON
__CONFIG _CONFIG2, WRT_OFF & BOR40V
EndAsm
All_Digital true
Declare Adin_Res = 8
Declare Adin_Tad = frc
Declare Adin_Stime = 50
Declare LCD_RSPin PORTD.2
Declare LCD_ENPin PORTD.3
Declare LCD_DTPin PORTD.4
Declare CCP1_Pin PORTC.2
Symbol FREQUENTIE = 1000
Symbol KEUZE_SCHAK_1 = PORTA.2
Symbol KEUZE_SCHAK_2 = PORTA.3
Symbol KEUZE_SCHAK_3 = PORTA.5
Symbol KEUZE_SCHAK_4 = PORTE.0
Symbol KEUZE_SCHAK_5 = PORTE.1
Symbol KEUZE_SCHAK_6 = PORTE.2
Symbol KEUZE_SCHAK_7 = PORTC.0
Symbol LED = PORTC.1
Dim WAARDE As Byte
Dim TELLER As Byte
Dim TIJD As Word
Dim MAX_PWM As Byte
Cls
DelayMS 500
Clear
PORTA = %000000
TRISA = %111111
PORTB = %000000
TRISB = %000000
PORTC = %00000000
TRISC = %00000001
PORTD = %00000000
TRISD = %00000000
PORTE = %000
TRISE = %111
ADCON0 = %00000001
ANSELH = %000000
SELECT_MENU:
HPWM 1,0,FREQUENTIE
WAARDE = 0
TELLER = 0
TIJD = 0
LED = 1
DelayMS 250
LED = 0
DelayMS 250
Print At 1,1,"PROG-0"
Print At 2,1,"**SELECT--MENU**"
If KEUZE_SCHAK_1 = 1 Then
GoTo LENTE_ZOMER_HEFST_WINTER
EndIf
If KEUZE_SCHAK_2 = 1 Then
GoTo FADE_IN_FADE_OUT
EndIf
If KEUZE_SCHAK_3 = 1 Then
GoTo FADE_IN_UIT
EndIf
If KEUZE_SCHAK_4 = 1 Then
GoTo AAN_FADE_UIT
EndIf
If KEUZE_SCHAK_5 = 1 Then
GoTo RUN_RANDOM
EndIf
If KEUZE_SCHAK_6 = 1 Then
GoTo RUN_KAARS
EndIf
If KEUZE_SCHAK_7 = 1 Then
GoTo RUN_BLIKSEM
EndIf
GoTo SELECT_MENU
LENTE_ZOMER_HEFST_WINTER:
LED = 1
Print At 1,1,"PROG-1"
Print At 2,1,"LEN-ZOM-HER-WINT"
If KEUZE_SCHAK_1 = 1 Then
WAARDE = ADIn 0
HPWM 1,WAARDE,FREQUENTIE
EndIf
If KEUZE_SCHAK_1 = 0 Then
GoTo SELECT_MENU
EndIf
GoTo LENTE_ZOMER_HEFST_WINTER
FADE_IN_FADE_OUT:
LED = 1
Print At 1,1,"PROG-2"
Print At 2,1,"FADE_IN_FADE_OUT"
TIJD = ADIn 0
TELLER = TELLER + 1
DelayMS TIJD
HPWM 1,TELLER,FREQUENTIE
MAX_PWM = ADIn 1
If TELLER > = MAX_PWM Then
TELLER = TELLER - 1
GoTo WACHT_RAMP_DOWN
EndIf
GoTo FADE_IN_FADE_OUT
WACHT_RAMP_DOWN:
If KEUZE_SCHAK_2 = 0 Then
If TELLER > 0 Then
HPWM 1,0,FREQUENTIE
GoTo SELECT_MENU
EndIf
EndIf
DelayMS 1000
GoTo RAMP_DOWN
GoTo WACHT_RAMP_DOWN
RAMP_DOWN:
TIJD = ADIn 0
TELLER = TELLER - 1
DelayMS TIJD
HPWM 1,TELLER,FREQUENTIE
If TELLER < 1 Then
TELLER = TELLER + 1
GoTo WACHT_RAMP_UP
EndIf
GoTo RAMP_DOWN
WACHT_RAMP_UP:
If KEUZE_SCHAK_2 = 0 Then
If TELLER > 0 Then
HPWM 1,0,FREQUENTIE
GoTo SELECT_MENU
EndIf
EndIf
DelayMS 1000
GoTo FADE_IN_FADE_OUT
GoTo WACHT_RAMP_UP
FADE_IN_UIT:
LED = 1
Print At 1,1,"PROG-3"
Print At 2,1,"**FADE_IN__UIT**"
TIJD = ADIn 0
TELLER = TELLER + 1
DelayMS TIJD
HPWM 1,TELLER,1000
If KEUZE_SCHAK_3 = 0 Then
If TELLER = 0 Then
GoTo SELECT_MENU
EndIf
EndIf
GoTo FADE_IN_UIT
AAN_FADE_UIT:
LED = 1
Print At 1,1,"PROG-4"
Print At 2,1,"**AAN_FADE_UIT**"
TIJD = ADIn 0
TELLER = TELLER - 1
DelayMS TIJD
HPWM 1,TELLER,1000
If KEUZE_SCHAK_4 = 0 Then
If TELLER = 0 Then
GoTo SELECT_MENU
EndIf
EndIf
GoTo AAN_FADE_UIT
RUN_RANDOM:
LED = 1
Print At 1,1,"PROG-5"
Print At 2,1,"***RUN_RANDOM***"
TIJD = ADIn 0
WAARDE = Random
HPWM 1,WAARDE,FREQUENTIE
DelayMS TIJD
HPWM 1,WAARDE,FREQUENTIE
DelayMS TIJD
HPWM 1,WAARDE,FREQUENTIE
DelayMS TIJD
HPWM 1,WAARDE,FREQUENTIE
DelayMS TIJD
HPWM 1,WAARDE,FREQUENTIE
DelayMS TIJD
HPWM 1,WAARDE,FREQUENTIE
DelayMS TIJD
HPWM 1,WAARDE,FREQUENTIE
DelayMS TIJD
HPWM 1,WAARDE,FREQUENTIE
DelayMS TIJD
HPWM 1,WAARDE,FREQUENTIE
DelayMS TIJD
HPWM 1,WAARDE,FREQUENTIE
DelayMS TIJD
HPWM 1,WAARDE,FREQUENTIE
DelayMS TIJD
HPWM 1,WAARDE,FREQUENTIE
DelayMS TIJD
If KEUZE_SCHAK_5 = 0 Then
If WAARDE < 255 Then
HPWM 1,0,FREQUENTIE
GoTo SELECT_MENU
EndIf
EndIf
GoTo RUN_RANDOM
RUN_KAARS:
LED = 1
Print At 1,1,"PROG-6"
Print At 2,1,"***RUN__KAARS***"
WAARDE = Random
If WAARDE < 75 Then
WAARDE = 200
EndIf
HPWM 1,WAARDE,FREQUENTIE
DelayMS 4
HPWM 1,WAARDE,FREQUENTIE
DelayMS 2
HPWM 1,WAARDE,FREQUENTIE
DelayMS 3
HPWM 1,WAARDE,FREQUENTIE
DelayMS 15
HPWM 1,WAARDE,FREQUENTIE
DelayMS 8
HPWM 1,WAARDE,FREQUENTIE
DelayMS 20
HPWM 1,WAARDE,FREQUENTIE
DelayMS 8
HPWM 1,WAARDE,FREQUENTIE
DelayMS 5
HPWM 1,WAARDE,FREQUENTIE
DelayMS 10
HPWM 1,WAARDE,FREQUENTIE
DelayMS 3
HPWM 1,WAARDE,FREQUENTIE
DelayMS 15
HPWM 1,WAARDE,FREQUENTIE
DelayMS 8
HPWM 1,WAARDE,FREQUENTIE
DelayMS 4
HPWM 1,WAARDE,FREQUENTIE
DelayMS 2
HPWM 1,WAARDE,FREQUENTIE
DelayMS 3
HPWM 1,WAARDE,FREQUENTIE
DelayMS 10
HPWM 1,WAARDE,FREQUENTIE
DelayMS 1
HPWM 1,WAARDE,FREQUENTIE
DelayMS 8
If KEUZE_SCHAK_6 = 0 Then
If WAARDE < 255 Then
HPWM 1,0,FREQUENTIE
GoTo SELECT_MENU
EndIf
EndIf
GoTo RUN_KAARS
RUN_BLIKSEM:
LED = 1
Print At 1,1,"PROG-7"
Print At 2,1,"**RUN__BLIKSEM**"
HPWM 1,255,FREQUENTIE
DelayMS 50
HPWM 1,0,FREQUENTIE
DelayMS 50
HPWM 1,255,FREQUENTIE
DelayMS 30
HPWM 1,0,FREQUENTIE
DelayMS 10
HPWM 1,255,FREQUENTIE
DelayMS 60
HPWM 1,0,FREQUENTIE
DelayMS 10
HPWM 1,255,FREQUENTIE
DelayMS 30
HPWM 1,0,FREQUENTIE
DelayMS 50
HPWM 1,255,FREQUENTIE
DelayMS 20
HPWM 1,0,FREQUENTIE
DelayMS 10
HPWM 1,255,FREQUENTIE
DelayMS 20
HPWM 1,0,FREQUENTIE
DelayMS 100
HPWM 1,255,FREQUENTIE
DelayMS 30
HPWM 1,0,FREQUENTIE
DelayMS 50
HPWM 1,255,FREQUENTIE
DelayMS 20
HPWM 1,0,FREQUENTIE
DelayMS 10
HPWM 1,255,FREQUENTIE
DelayMS 20
HPWM 1,0,FREQUENTIE
If KEUZE_SCHAK_7 = 0 Then
GoTo SELECT_MENU
HPWM 1,0,FREQUENTIE
EndIf
DelayMS 5000
HPWM 1,255,FREQUENTIE
DelayMS 50
HPWM 1,0,FREQUENTIE
DelayMS 50
HPWM 1,255,FREQUENTIE
DelayMS 30
HPWM 1,0,FREQUENTIE
DelayMS 10
HPWM 1,255,FREQUENTIE
DelayMS 60
HPWM 1,0,FREQUENTIE
DelayMS 10
HPWM 1,255,FREQUENTIE
DelayMS 30
HPWM 1,0,FREQUENTIE
DelayMS 50
HPWM 1,255,FREQUENTIE
DelayMS 20
HPWM 1,0,FREQUENTIE
DelayMS 10
HPWM 1,255,FREQUENTIE
DelayMS 20
HPWM 1,0,FREQUENTIE
DelayMS 100
HPWM 1,255,FREQUENTIE
DelayMS 30
HPWM 1,0,FREQUENTIE
DelayMS 50
HPWM 1,255,FREQUENTIE
DelayMS 20
HPWM 1,0,FREQUENTIE
DelayMS 10
HPWM 1,255,FREQUENTIE
DelayMS 20
HPWM 1,0,FREQUENTIE
DelayMS 250
HPWM 1,255,FREQUENTIE
DelayMS 50
HPWM 1,0,FREQUENTIE
DelayMS 100
HPWM 1,255,FREQUENTIE
DelayMS 80
HPWM 1,0,FREQUENTIE
DelayMS 30
HPWM 1,255,FREQUENTIE
DelayMS 60
HPWM 1,0,FREQUENTIE
If KEUZE_SCHAK_7 = 0 Then
GoTo SELECT_MENU
HPWM 1,0,FREQUENTIE
EndIf
DelayMS 10000
HPWM 1,255,FREQUENTIE
DelayMS 50
HPWM 1,0,FREQUENTIE
DelayMS 50
HPWM 1,255,FREQUENTIE
DelayMS 30
HPWM 1,0,FREQUENTIE
DelayMS 10
HPWM 1,255,FREQUENTIE
DelayMS 60
HPWM 1,0,FREQUENTIE
DelayMS 10
HPWM 1,255,FREQUENTIE
DelayMS 30
HPWM 1,0,FREQUENTIE
DelayMS 50
HPWM 1,255,FREQUENTIE
DelayMS 20
HPWM 1,0,FREQUENTIE
DelayMS 10
HPWM 1,255,FREQUENTIE
DelayMS 20
HPWM 1,0,FREQUENTIE
DelayMS 100
HPWM 1,255,FREQUENTIE
DelayMS 30
HPWM 1,0,FREQUENTIE
DelayMS 50
HPWM 1,255,FREQUENTIE
DelayMS 20
HPWM 1,0,FREQUENTIE
DelayMS 10
HPWM 1,255,FREQUENTIE
DelayMS 20
HPWM 1,0,FREQUENTIE
If KEUZE_SCHAK_7 = 0 Then
GoTo SELECT_MENU
HPWM 1,0,FREQUENTIE
EndIf
DelayMS 2500
HPWM 1,255,FREQUENTIE
DelayMS 50
HPWM 1,0,FREQUENTIE
DelayMS 100
HPWM 1,255,FREQUENTIE
DelayMS 80
HPWM 1,0,FREQUENTIE
DelayMS 30
HPWM 1,255,FREQUENTIE
DelayMS 60
HPWM 1,0,FREQUENTIE
DelayMS 300
HPWM 1,255,FREQUENTIE
DelayMS 50
HPWM 1,0,FREQUENTIE
DelayMS 50
HPWM 1,255,FREQUENTIE
DelayMS 30
HPWM 1,0,FREQUENTIE
DelayMS 10
HPWM 1,255,FREQUENTIE
DelayMS 60
HPWM 1,0,FREQUENTIE
DelayMS 10
HPWM 1,255,FREQUENTIE
DelayMS 30
HPWM 1,0,FREQUENTIE
DelayMS 50
HPWM 1,255,FREQUENTIE
DelayMS 20
HPWM 1,0,FREQUENTIE
DelayMS 10
HPWM 1,255,FREQUENTIE
DelayMS 20
HPWM 1,0,FREQUENTIE
DelayMS 100
HPWM 1,255,FREQUENTIE
DelayMS 30
HPWM 1,0,FREQUENTIE
DelayMS 50
HPWM 1,255,FREQUENTIE
DelayMS 20
HPWM 1,0,FREQUENTIE
DelayMS 10
HPWM 1,255,FREQUENTIE
DelayMS 20
HPWM 1,0,FREQUENTIE
DelayMS 30000
If KEUZE_SCHAK_7 = 0 Then
GoTo SELECT_MENU
HPWM 1,0,FREQUENTIE
EndIf
GoTo RUN_BLIKSEM
End