DEVICE 16F628A ;Gebruik een 16F628A type CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF PORTB_PULLUPS ON ;On-chip pull-up weerstanden actief (voor de schakelaars) CLEAR ;Wis alle RAM geheugen ;Logische constanten SYMBOL AAN = 0 SYMBOL OFF = 0 SYMBOL ON = 1 SYMBOL UIT = 1 ;Algemene constanten SYMBOL MaxTijd = 2000 ;Poortnamen SYMBOL ActieLED = PORTA.2 SYMBOL ErrorLED = PORTA.3 SYMBOL StartToets = PORTB.0 SYMBOL ReactieToets = PORTB.1 SYMBOL Lengte = 16 ;Variabele declareren DIM Teller AS WORD ;76543210 TRISA = %11110011 TRISB = %11111111 CLEAR DELAYMS 500 ga_naar: ;geef alles gewoon een simpele label, kan je er altijd naar terug ;Hoofdprogramma CLS ;Scherm wissen PRINT "laden:" ;Plaats tekst PRINT AT 2, 1, REP "_"\Lengte ;Teken een lijn van underscore (lage) streepjes REPEAT DELAYMS 200 INC Teller PRINT AT 2, 1, REP 255\Teller ;Aantal blokjes afhankelijk van 'Teller' UNTIL Teller = Lengte ;Blokjes tekenen totdat het aantal gelijk is aan 'Lengte' PRINT AT 1, 1, REP " "\14 ;Wis oude tekst van regel 1 uit PRINT AT 1, 1, "press start" ;Zet op de eerste regel 'Klaar!' als alle blokjes er staan GOTO main ;naar de main loop GOTO ga_naar ;voor de zekerheid opnieuw beginnen als goto main niet werkt ;Hoofdprogramma main: WHILE 1 = 1 WHILE StartToets = UIT : WEND CLS PRINT "Komt ie!" ActieLED = OFF ErrorLED = OFF Teller = 0; DELAYMS 4000 IF ReactieToets = AAN THEN ErrorLED = ON PRINT AT 1, 1, "Niet valsspelen!" ELSE ActieLED = ON WHILE Teller < MaxTijd ; IF ReactieToets = AAN THEN BREAK DELAYMS 1 INC Teller WEND IF Teller < MaxTijd THEN PRINT AT 1, 1, "snelheid= ", DEC Teller, "mS" IF Teller < 100 THEN PRINT AT 2, 1, "heel snel" ELSE ActieLED = OFF ErrorLED = ON PRINT AT 1, 1, "Te laat!" ENDIF ENDIF WEND GOTO main ;voor de zekerheid erbij END