www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik And fuktion Bascom fehler


Autor: Thomas St. (Firma: RF-I) (rasieel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas B. (yahp) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Thomas St. (Firma: RF-I) (rasieel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie ichs gelernt hab es invertiert den ausgang.

wie den sonst auch.

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas St. (Firma: RF-I) (rasieel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas St. (Firma: RF-I) (rasieel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich will nichts erkennen der soll nur die ports gleichzeitig schalten.

dann solln die ports den zustand beibehalten.

Autor: Thomas B. (yahp) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Chris L. (kingkernel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Thomas St. (Firma: RF-I) (rasieel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja klar hab ich schon aber bascom sagt immer noch 3 permanets expectet

Autor: dummy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Config Portb.1 = Input
Config Portb.2 = Input

Bascom Volltrottel wie willst du auf einem EINGANG INPUT
irgendwas ändern? AUSGANG OUTPUT

Autor: Rolf Im forum (for_ro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und du solltest den Eingang mit Pina abfragen, also

If PINA.1 = 1 Then

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas St. (Firma: RF-I) (rasieel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie ist das mit der hilfsvraiable gemeint das kapier ich nicht

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.