Hey something else today!
Any comments you dont understand is in norwegian... so just forget those
I MINOR problem with my basic stamp 2.5 code. I'm trying to get a 8-bit counter so stop counting in its tracks by just pushing the buttonPin quickly once. if you press it again the counter should start to count normally from were it stopped. Now I have pretty much tried to rewrite and debug the code for over a week. It should work for me but it doesn't. The problem is with reading if buttonPin has been pressed.
PLEASE HELP ME!!!!!!
Any comments you dont understand is in norwegian... so just forget those
I MINOR problem with my basic stamp 2.5 code. I'm trying to get a 8-bit counter so stop counting in its tracks by just pushing the buttonPin quickly once. if you press it again the counter should start to count normally from were it stopped. Now I have pretty much tried to rewrite and debug the code for over a week. It should work for me but it doesn't. The problem is with reading if buttonPin has been pressed.
PLEASE HELP ME!!!!!!
Code:
' {$STAMP BS2}
' {$PBASIC 2.5}
' ---[ Programbeskrivelse ]--------------------------------
'
' Viser en 8-bits binærteller på LED koplet til P0 - P7.
' Dette programmet fungerer som en vanlig BS-2 teller men med et par ekstra funksjoner.
' Trykker du på Knapp 0 kan du pause og starte kretsen.
' Vrir du på potentiometeret kan du endre hastigheten telleren teller.
' ---[ I/O Definisjoner ]----------------------------------
Pot PIN 14 ' definerer pinne 14 som Pot
buttonPin PIN 15 ' definerer pinne 15 som buttonPin
' ---[ Konstanter ]----------------------------------------
MinCount CON 0 ' tellers startverdi = 0
MaxCount CON 255 ' tellers sluttverdi = 255
' ---[ Variabler ]-----------------------------------------
cntr VAR Byte ' variabel for 8-bits teller
PotVal VAR Word ' definerer variabelet PotVal som Word
currentState VAR Bit ' definerer et variabel som heter currentState
LEDs VAR OUTL ' LED-er på P0 - P7
LEDsDirs VAR DIRL ' DIRS kontroll for LEDs
whileBreak VAR Bit ' definerer et variabel som heter whileBreak
' ---[ Initialisering ]------------------------------------
LEDsDirs = %11111111 ' DIRS kontroll til LEDene
LEDs = %11111111 ' gjør LEDene til utganger
currentState = 1 ' setter currentState = 0 som er standar verdi
whileBreak = 0 ' setter whileBreak = 0 som er standar verdi
' ---[ Programkode ]---------------------------------------
Main: ' starter en hoved funksjon som heter: main
FOR cntr = LEDs TO MaxCount ' sløyfe gjennom alle verdiene
GOSUB pauseButton ' Starter en "sub routine" some heter: pauseButton
GOSUB Read_Pot ' Starter en "sub routine" some heter: Read_Pot
DEBUG DEC ? PotVal ' Gjør om verdiene den får fra PotVal om til desimaltall som programmet kan bruke
LEDs = cntr ' send count til LEDs
PAUSE PotVal ' pauser programmet i PotVal mengde
NEXT
IF MaxCount THEN OUTL=0 ELSE GOTO Main ' hvis cntr = MaxCount, avsluttes loopen og programmet går videre
GOTO Main ' går til main
Read_Pot: ' starter en "Sub Routine" som heter: Read_Pot
HIGH Pot ' Sender en puls til kondensatoren slik at den lades opp
PAUSE 1 ' Pauser i 1 ms for å gi kondensatorenen til å lade seg litt ut
RCTIME Pot, 1, PotVal ' Leser oppladnings/utladningds hastigheten på kondensatoren
RETURN ' hopper opp til neste linje i main funksjonen
pauseButton: ' starter en ny under funksjon som heter pauseButton
IF buttonPin = 0 & currentState = 1 THEN ' hvis buttonPin = 0 og currentState = 0, fortsett
DEBUG DEC ? currentState, CR ' konverterer og printer ut et desimaltall av currentState verdien
currentState = 0 ' redefinerer currentState = 0 slik at du kan pause kretsen
GOSUB pauseSeq ' går til en "sub routine" som heter pauseSeq
ENDIF ' ender if-statement
RETURN ' returnerer til der den var i main
pauseSeq: ' starter en "sub routine" som heter pauseSeq
DO WHILE whileBreak < 1 ' repeter mens whileBreak < 1
PAUSE 1 ' pauser programmet i 1 ms
IF buttonPin = %0 & currentState = 0 THEN ' hvis buttonPin = 0 og currentState = 0, fortsett
whileBreak = 5 ' redefinerer whileBreak = 1
ENDIF ' ender if-statement
whileBreak = 0 ' redefinerer whileBreak som 0 for å starter telling senere
LOOP ' looper tilbake til do
RETURN ' returnerer til pauseButton
' ----------------- Extra tileggs oppgaven er levert i et eget program ------