Hallo, Ich hab n problem in bascom. Hier der code Config Porta.1 = Input Config Portb.1 = Input Config Portb.2 = Input Do If Porta.1 = 1 Then Toggle Portb.1 and Portb.2 End If Loop End Leider hat bascom ein problem mit meiner UND verknüpfung
Ich glaub, nicht bascom hat ein Problem mit deinem UND. Eher du mit den Befehlen von bascom. Was solln Toggle A und B auch bedeuten?
Hallo, ich glaube die 'and' Funktion ist in dieser Konstellation nicht anwendbar. Ausserdem ist der Toggle Befehl für Ausgangsports gedacht, du hast jedoch portb.1 und portb.2 als Input definiert. Ich vermute folgendes Programm sollte deine Aufgabe erfüllen: Config Porta.1 = Input Config Portb.1 = output Config Portb.2 = output Do If Porta.1 = 1 Then Toggle Portb.1 wait 1 'damit Du auch was erkennen kannst Toggle Portb.2 wait 1 End If Loop End Gruß Jürgen
kann ichs so auch machen?? Config Porta.1 = Input Config Portb.1 = Input Config Portb.2 = Input Do If Porta.1 = 1 Then Toggle Portb.1 Toggle Portb.2 End If Loop
ich will nichts erkennen der soll nur die ports gleichzeitig schalten. dann solln die ports den zustand beibehalten.
Thomas St wrote: > wie ichs gelernt hab es invertiert den ausgang. Jo, das denkt man sich intuitiv auch, es invertiert den Ausgang - und nicht mehrere. > wie den sonst auch. Und wie bitte soll das Ergebnis der UND-Verknüpfung von zwei Pins invertiert werden? Was soll das für diese beiden Pins bedeuten? PS: Eingänge invertieren?
Du hast PORTB.1 und PORTB.2 immernoch als Eingang deklariert. So wird das nie was! Du musst schon auf Ausgang schalten, wenn du was schalten willst! das AND ist nur für logische Vergleiche gedacht. Mehrere Befehle zusammenfassen kannst du damit nicht.
ja klar hab ich schon aber bascom sagt immer noch 3 permanets expectet
Config Portb.1 = Input Config Portb.2 = Input Bascom Volltrottel wie willst du auf einem EINGANG INPUT irgendwas ändern? AUSGANG OUTPUT
Und du solltest den Eingang mit Pina abfragen, also If PINA.1 = 1 Then
Hallo, bei meinem Vorschlag von oben werden die Ports bei jedem Schleifendurchlauf umgeschaltet. Wenn dieser Schaltvorgang nur einmal ausgeführt werden soll brauchst du noch eine Hilfsvariable, die anzeigt, ob der Toggle schon erfolgt ist. dim Hilfsvarible as bit Config Porta.1 = Input Config Portb.1 = output Config Portb.2 = output Hilfsvariable = 0 Do if Porta.1 = 0 then Hilfsvariable = 0 If Porta.1 = 1 Then if Hilfsvariable = 0 then Hilfsvariable = 1 Toggle Portb.1 Toggle Portb.2 End If end if Loop End ich habs jetzt nich ausprobiert, aber vieleicht hilft es Dir. Gruß Jürgen
Siehe Rolf dim Hilfsvarible as bit Config Porta.1 = Input Config Portb.1 = output Config Portb.2 = output Hilfsvariable = 0 Do if Pina.1 = 0 then Hilfsvariable = 0 If Pina.1 = 1 Then if Hilfsvariable = 0 then Hilfsvariable = 1 Toggle Portb.1 Toggle Portb.2 End If end if Loop End
In der Hilfsvariablen merkt sich das Programm ob der Toggle Befehl seit Programmstart schon einmal ausgeführt wurde. Wird der Toggle Befehl ausgführt wird gleichzeitig die Hilfsvariable gesetzt. Mit der Abfrage 'if Hilfsvariable = 0 then' wird überprüft ob der der Toggle Befehl schon in einem vorherigen Programmdurchlauf ausgeführt wurde und wenn nicht, dann wird er nun ausgeführt. Ich nehme an, das Pina.1 mit einem Taster bedient wird. Hierbei muß noch das Prellen berücksichtigt werden. Am einfachsten ist dies mit einem kurzen 'Wait' zu unterdrücken. Soll bei einem erneuten Tasdendruck wieder ein Toggle erfolgen, muß nach dem Loslassen der Taste die Hilfsvariable wieder zurückgesetzt werden. Das folgende Programm sollte so im Simulator laufen: $regfile = "m128def.dat" $crystal = 1000000 dim Hilfsvarible as bit Config Porta.1 = Input Config Portb.1 = output Config Portb.2 = output Set Hilfsvarible Do 'Waitms 100 'zum entprellen einfügen If Pina.1 = 0 Then Reset Hilfsvarible If Pina.1 = 1 Then If Hilfsvarible = 0 Then Set Hilfsvarible Toggle Portb.1 Toggle Portb.2 End If end if Loop End
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.