'******************************************************************************
' Program Name: LED Reaction Game
'
' Program Description: Uses 7 LEDs to create a game
'
' P0 - RED
' P1 - RED
' P2 - RED
' P3 - GREEN
' P4 - RED
' P5 - RED
' P6 - RED
'
' P10 - Button
'
' LEDs turn on then off one at a time P0 - P7
' User has to press the button when the green LED is on
' Then game speeds up
' If button is pressed when Red is on then show score message and End Game
'
' To restart the game press the button again
'
' File Updated from Template.bs2
'
' Author: Mr Birch
'
' Date: Jan 13th 2010
'
'{$STAMP BS2}
'{$PBASIC 2.5}
'******************************************************************************
'******************************************************************************
'******************************************************************************
' Variables
'******************************************************************************
Counter VAR Word ' used in For Next loops Test VAR Bit ' used when checking a button LoopTimer VAR Word ' used in button testing loop BlinkTime VAR Word ' time between each LED turn on and off GameOver VAR Bit ' flag used to see if game is over Score VAR Byte ' used to hold score
'******************************************************************************
' Application Code
'******************************************************************************
MainProgram:
DIRL = %11111111 ' Setup pins 0 to 7 as outputs OUTL = %00000000 ' Turn off all LEDs DIR10 = 0 ' Set pin 10 as input
DO ' Setup Big loop - Game can never End GOSUB GetReady
score = 0 ' Reset score GameOver = 0 ' Set GameOver flag to not over (0) BlinkTime = 100 ' Set initial time for game to 2 seconds
DO WHILE GameOver = 0 ' Run the game while GameOver flag 1 GOSUB LoopLeds ' Run the LoopLEDs Subroutine LOOP
GOSUB ShowScore ' Show Score wait for reset button
LOOP
END ' End the program ' DO NOT DELETE THIS END! ' IT STOPS THE FOLLOWING CODE ' FROM RUNNING AUTOMATICALLY
'******************************************************************************
' Command Subroutines Follow
'******************************************************************************
'
' Get Ready - Code to tell the user to get ready
' Uses a countdown P0 and P7, then P1 and P6, then P2 and P4 Then P5 on
'
GetReady: OUTL = %01000001 PAUSE 500 OUTL = %01000001 PAUSE 500 OUTL = %00100010 PAUSE 500 OUTL = %00010100 PAUSE 500 OUTL = %00001000 PAUSE 500
RETURN
'
' End of Subroutine
'*****************************************************************************
'
' Loop LEDs - Subroutine to turn each LED on /off then check the button
' each section turns on an LED runs the CheckButton subroutine then
' decides if you lost or won
'
LoopLEDs: OUTL = %00000001 ' Turn on LED P0 GOSUB TestButton ' Run CheckButton Sub IF Test = 0 THEN ' If button pressed then lost GOSUB Lose ' so go back to main loop RETURN ENDIF
OUTL = %00000010 ' Turn on LED P1 GOSUB