PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : tastendruck ein, beim nächsten druck wieder aus?



bigeggmc
22.03.2006, 22:41
nabend alle zusammen,
mir ist grad ein kleines problem untergekommen, ich möchte mit einem taster ein port auf 1 setzen und mit dem gleichen taster den port beim erneuten drücken auf 0 setzten, kann mir jemand helfen oder evt nen link hir im forum geben, ich hab mich hier grad totgesucht, irgendwie geb ich wohl die falschen stichwörter ein oder so
schonmal danke im vorraus.

gruss, bigeggmc

Bluesmash
22.03.2006, 22:47
if pin... then toggle port...

mit toggle wird einfach der momentane zustand umgekehrt... us 1 wird 0 und aus 0 wird 1... das prellen des tasters musst du aber noch berücksichtigen sonst wird bei einem tastendruck gleich mehrmals getogglet....

gruss bluesmash

Darth_Ding
22.03.2006, 23:01
zur vervollständigung: das entprellen löst man meistens mit einem "waitms XXX", ich würd sagen das je nach taster ein wert von 40-100 reichen sollte.

bigeggmc
22.03.2006, 23:07
hab da 80 ms genommen, das funzt ganz gut, danke für die schnelle hilfe um diese zeit ;)
hatte das sonst halt über nen zentralen austaster gemacht, aber ich wollte den behalten und trotzdem noch jeden einzelnen port wieder abschalten können, oder eben zentral alle zusammen auf 0

bigeggmc
22.03.2006, 23:20
sorry für den doppelpost, aber wie kann ich toggle einsetzen um z.b. ein lauflichtprog mit der taste zu starten und mit eben dieser auch wieder zu beenden? irgendwie funzt das mit den ports wunderbar, nur mit dem lauflicht ned :(

Bluesmash
23.03.2006, 10:31
dazu würde ich einfach ein bit toggeln, welches dan das lauftlicht ein und ausschaltet...

pseudo basic code:

dim bit1 as bit

if pin... then toggle bit1

if bit1=1 then

hier den code für das lauflicht

end if


hoffe das hilft dir weiter...
gruss bluesmash

E-Fan
23.03.2006, 11:00
Ich hab solche Sachen bislang immer mit den Befehlen "Debounce" und "Not" erledigen lassen.
Sinngemäß hab ich also per Debounce den Taster entprellen lassen und dann in die folgende Routine das hier geschrieben:

Portx.y = not Portx.y

Toggle verursacht (glaub ich) etwas mehr Code und braucht mehr Rechenzyklen um ausgeführt zu werden. Müsste man mal im Simulator austesten.
Nutzt man "Config Debounce" nicht so setzt der Compiler die Entprellzeit auf 25ms fest.

Um ein Lauflicht zu starten kannste in der Routine die nach dem Betätigen des Tasters folgen soll einen Timer starten der das Programm ablaufen lässt oder sonst welche anderen Bits setzen/zurücksetzen die dem µC verklickern das Du jetzt in Diskostimmung bist ;)