BASCOM AVR-Befehl

Gast #149348
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
Gast #149349
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
Gast #149350
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
Gast #149351
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
Gast #149352
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren