PDA

View Full Version : toggle command w/ multiple switches



earltyso
- 13th February 2007, 19:50
Hello,
I want to use the toggle command to efficiently jump from LCD screen to LCD screen using just 2 push button switches. I have heard that using the toggle command is the best way to do this. Can anyone provide a sample code for doing this. Here is a small portion of my code....
thanks,





main:
Pause 100
While PORTB.6 = 0
LCDOut 254,1
LCDOut 254,130, "Is your favorite"
LCDOut 254,196, "color green?"
LCDOut 254,216, "Yes No"
Pause 50

IF switch1 = 0 Then YES 'yes selected
IF switch2 = 0 Then NO 'no selected
GoTo main

YES:
Pause 100'wait for enought time to remove finger
While PORTB.6 = 0 'always true
Low PORTB.4
LCDOut 254,1
LCDOut 254,128,"U must B a GRN thumb"
LCDOut 254,192,"Here is YOUR color!"
LCDOut 254,152,"Keep Going?"
LCDOut 254,216,"Yes No"
High PORTB.4
Pause 50
IF switch1 = 0 Then KeepGoing 'yes selected
IF switch2 = 0 Then Finished 'no selected
GoTo YES

Wend
GoTo intro'this condition will never be met

KeepGoing:
Pause 100'wait for enought time to remove finger
Low PORTB.4
While PORTB.6 = 0 'always true
Low PORTB.4
LCDOut 254,1
LCDOut 254,129,"Thanks for playing"
'LCDOut 254,195,"my game show!"
LCDOut 254,148,"Try it from the top?"
LCDOut 254,216,"Yes No"
Pause 50

IF switch1 = 0 Then YES3 'yes selected
IF switch2 = 0 Then NO3 'no selected
GoTo KeepGoing

Wend
GoTo intro'this condition will never be met

YES3:
GoTo intro
NO3:
Pause 50
LCDOut 254,1
LCDOut 254,134,"The End"
GoTo NO3

skimask
- 13th February 2007, 23:32
Hello,
I want to use the toggle command to efficiently jump from LCD screen to LCD screen using just 2 push button switches. I have heard that using the toggle command is the best way to do this. thanks,

What does your PBP manual say about the 'TOGGLE' command?

earltyso
- 14th February 2007, 04:38
not enough...else why would I ask?!

skimask
- 14th February 2007, 05:01
not enough...else why would I ask?!

Because 'TOGGLE' doesn't really have anything to do with switches or inputs, except to make inputs into outputs and 'TOGGLE' the state of that output.

You set up a couple of routines, one for each display, add in a flag variable.
In the main loop, you check your switches. If the correct switch is pushed, the loop jumps to one of the routines (according to the 'flag' setting) to display AND sets the 'flag' to X, then jumps back to the main loop.
If another switch is pushed, the loop jumps to another one of the routines (again, according to the 'flag' setting) to display AND sets the 'flag' to Y, and again, jumps back to the main loop to await another switch push.

Your program looks like it should work just fine, it's just a bit jumbled around and, as you pointed out, isn't quite as efficient as it could be. Then again, if it works, who cares :)

earltyso
- 14th February 2007, 20:12
Thanks for the help, could you please tell me more about setting up flags in PBP? I remember doing this back in my microprocessor machine code (many years ago) class but did not know this could be done in PBP.

HenrikOlsson
- 14th February 2007, 21:11
Hi,
A flag is just a bit that you set or reset at one (ore more) point in the program and then read at another point. Sort of a one bit memory if you will.


myFlag VAR BIT 'This is a single bit flag.

Flags VAR BYTE 'Variable containig 8 bits ("flags").

Flag0 VAR Flags.0 'This points to the first bit in Flags
Flag1 VAR Flags.1 'This points to the second bit in Flags
DisplayON VAR Flags.2 'Another flag in the 'flag-byte'

' //And so on....

Main:

If Flag0 = 1 then 'Is Flag0 set?
High Portb.0 'If so set PortB.0 High
Else
Low PortB.0 'If not, set it low
Endif


If PortA.0 = 1 AND PORTA.1 = 0 then
Flag1 = 1 'If so
Else
Flag1 = 0
Endif

' //And so on...



/Henrik Olsson.

earltyso
- 15th February 2007, 17:47
thanks for the help!