Forum: Mikrocontroller und Digitale Elektronik BASCOM AVR-Befehl


von Kurt (Gast)


Lesenswert?

Hallo Leute,

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

Gruss Kurt

von Andi (Gast)


Lesenswert?

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

Gruß
Andi

von Kurt (Gast)


Lesenswert?

heureka es funzt,

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

Gruss Kurt

von Andi (Gast)


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

von HansHans (Gast)


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

von Andi (Gast)


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

von HansHans (Gast)


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

von Andi (Gast)


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

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
Noch kein Account? Hier anmelden.