www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik BASCOM AVR-Befehl


Autor: Kurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

wird das      While portb.4 = 0       ausgeführt
(Pin gelesen und dann entschieden) oder nicht.

Gruss Kurt

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wäre es möglich, das es "While pinb.4 = 0" heißen könnte?

Gruß
Andi

Autor: Kurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
heureka es funzt,

Hallo Andi, danke für die schnelle und richtige Antwort.

Gruss Kurt

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitteschön!
Aber ich hoffe, Du hast den Hintergrund verstanden.
PORTn,x ist immer Port direkt schalten bzw. auf high oder low setzen.
PINn,x ist immer aktuellen Zustand des Ports abfragen, also prüfen, ob
ein Port-Pin high oder low ist.

Gruß
Andi

Autor: HansHans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
da das ja jetzt schon gelöst ich habe ich auch eine Frage
und mache nicht extra einen Neun Threade auf.
ich habe ein Problem mit dem Mod Befehl ab 255


Dim X As Byte
Dim Y As Integer

Y =256
X = Y Mod 6
Print X
Jetzt steht in X    -- > 0 das mußte aber 4 sein

Was läuft da  falsch ? das Problem ist  ab dem Übergang 255/256 ?

Bei X=Y Mod 8 ist alles OK ...

oder auch bei :
Dim X As Byte
Dim Y As Integer
Dim Hilfe As Integer

Y =256
Hilfe = Y Mod 6
X = Hilfe
Print X
......stimmt das Ergebnis


Danke für eine Aufklärung

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das liegt wahrscheinlich daran, das BASCOM keine korrekte Division mit
16Bit / 8Bit machen kann was ja bei dem Befehl MOD passiert.
In Deinem 2. Beispiel mit der Hilfsvariable wird eine 16Bit / 16Bit
Division gemacht und dann einfach die unteren 8 Bits von Hilfe nach X
kopiert.

So müßte es funktionieren:

Dim X As Integer
Dim Y As Integer

Y =256
X = Y Mod 6
Print X

Gruß
Andi

Autor: HansHans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort ,
ja so geht es natürlich auch, aber bei beiden Lösungen
verbraucht man halt mehr Ram
aber wen‘s halt sein muß .....und man‘s weis.

Nur so eine „Rechenfehler“ erstemal finden .....ist ja das Problem

Gruß HansHans

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht gibt es in BASCOM eine Funktion um eine 8Bit-Variable
temporär in eine 16Bit-Variable zu erweitern.
Kenn mich zwar unter anderem mit Basic aus aber nicht speziell mit
BASCOM da ich nur ASM-Code in meine µC quetsche (wesentlich sparsammer
und effizienter).

Vielleicht gibs in BASCOM sowas wie "int(X) = Y Mod 6" oder so was,
keine Ahnung.
Blätter einfach mal die Online-Hilfe durch.

Gruß
Andi

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.