hallo ik wil een teller maken zodat je eerst 15 keer op een knopje moet drukken en dan gaat er een led branden. nu heb ik dit geprobeerd maar als ik het uitvoer en ik druk een keer op het knopje gaat het ledje al branden. wat is hier het probleem?


Device 16F628A                ;Gebruik een 16F628A type
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              ;Alle ingangen digitaal
PORTB_PULLUPS On              
Dim teller     As Byte     
Clear
teller = 15

Repeat
If PORTB.0 = 0 Then Dec teller
Until teller = 0

High PORTA.1

End

Moet je misschien eerst wachten totdat de poort weer hoog is geworden?

je repeat iets, maar je geeft niet aan tot waar dat loopje moet lopen
beter kijken , pfff:p

idd, je moet wachten met aftellen tot de knop weer losgelaten is

[Bericht gewijzigd door JesperR op (42%)]

je kan een subje maken.met een oneindig loopje en dat het pas terug gaat naar het aftellen van je teller zodra de knop los is.

is dit nou diezeelfde pic als dat ene topic ?
aah dat is al gelukt zie ik :)

[Bericht gewijzigd door JesperR op (10%)]

Een debounce kan trouwens ook wel nuttig zijn...

ja dit is weer dezelfde pic hij werkt nu! maar kan je misschien een beginnetje maken aan een code?


Device 16F628A                ;Gebruik een 16F628A type
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              ;Alle ingangen digitaal
PORTB_PULLUPS On              
Dim teller     As Byte   
  
Clear
teller = 15
 
Repeat
If PORTB.0 = 0 Then GoSub WachtopLaag
Until teller = 0
 
High PORTA.1
 
End
;sub
WachtopLaag:

While 1=1
If PORTB.0 = 1 Then Return
Wend

zoiets ?

bedankt moet ik hier nog wat in wijzigen of is deze kant en klaar
?

zou t meteen moeten doen,

het is handig dat je ook snapt waarom het vorige niet werkte. je moet daarvoor tog n bepaald soort inzicht krijgen in t programma verloop.

die loop heet wel wachtoplaag, maar hij wacht op t hoog worden uiteraard :p

[Bericht gewijzigd door JesperR op (19%)]

deze doet helemaal niets de led gaat niet aan na 15 keer klikken. maar volgensmij word er in jouw code nergens afgeteld?

ja klopt, ben de heledag al niet echt wakker :p

moet je ff in het subje zetten

heb je ook al op picbasic.nl gekeken bij de cursus daar wordt dit ook uitgelegd hoe je dit moet doen.

ja 'k heb al gekeken op picbasic maar daar moet wat aan veranderd worden. waar moet ik de "dec teller" zetten?

dat staat toch allemaal uitgelegd in de cursus. als je die nou eerst volgt dan wordt het vanzelf duidelijker hoe het allemaal werkt

ja, je kan ook mijn vorige antwoord LEZEN


Device 16F628A                ;Gebruik een 16F628A type
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              ;Alle ingangen digitaal
PORTB_PULLUPS On              
Dim teller     As Byte   
 
Clear
teller = 15
 
Repeat
If PORTB.0 = 0 Then GoSub WachtopLaag
Dec teller
Until teller = 0
 
High PORTA.1
 
End
;sub
WachtopLaag:

While 1=1
If PORTB.0 = 1 Then Return
Wend

zo dus??

nee,

valt toch tegen hoe lastig lezen is ofniet?

jij zegt dat ie in het subje moet. maar hij moet eerst weer open zijn de schakelaar. dus moet ie na gosub toch??

ja klopt :p
na gosub, maar in t loopje

[Bericht gewijzigd door JesperR op (57%)]

Repeat
If PORTB.0 = 0 Then GoSub WachtopLaag
Dec teller
Until teller = 0

het loopje duurt toch tot until teller = 0

pak eens n papiertje en schrijf eens op wat t programma moet, zowel als de knop word ingedrukt als dat hij niet word ingedrukt.

ik wil t ook wel zeggen, maar dan maar jij de volgendekeer weer een topic aan met zoiets. dus ik probeer je nu wat te laten leren


Device 16F628A                ;Gebruik een 16F628A type
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              ;Alle ingangen digitaal
PORTB_PULLUPS On              
Dim teller     As Byte   
 
Clear
teller = 15
 
Repeat
If PORTB.0 = 0 Then GoSub WachtopLaag
Until teller = 0
 
High PORTA.1
 
End
;sub
WachtopLaag:

While 1=1
If PORTB.0 = 1 Then Return
Dec teller
Wend

zo dan?? ik had het onderste gedeelte niet gezien.

nee, wat hij nu doet is elke keer at hij die wacht loop doorloopt 1 van de teller aftellen.

ja maar dat moet toch ook want je geeft eerder aan dat de teller op 15 word ingesteld en hij moet aftellen naar 0. dus hij moet elke keer eentje aftellen