Forum: Mikrocontroller und Digitale Elektronik Bascom Befehl gesucht


von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

Ich habe ein kleines Problem.
Ich suche einen Befehl für Bascom um ein 8 Bit muster auf 8 pins zu 
verteilen und auszugeben(siehe anhang)

Ich steh da auf dem Schauch. Kann mir da einer weiter helfen. Ich 
verlange keine kompletten codes, sondern nur einen Tipp / Denkanstoß. :)

mfg

: Verschoben durch User
von hf (Gast)


Lesenswert?

Porta=variable

von Paul B. (paul_baumann)


Lesenswert?

1
DDRA=&B11111111 'Port A alle Mann sind Ausgang
2
DIM Horst as Byte 'Auszugebendes Byte
3
DIM Zaehler as Byte 'Variable für Zaehler 
4
Do 
5
  For Zaehler = 255 to 0 'Runterzählen
6
      Horst = Zaehler  'zum Testen die Variable "Horst" mit "Zaehler" füllen
7
      Porta = Horst    'und den Wert gleich ausch am Port A ausgeben
8
  Next Zaehler
9
10
Loop 
11
12
Print "MfG Paul"
13
14
End
Ich hoffe, daß ich Deinen Willen richtig verstanden habe.

: Bearbeitet durch User
von Michael (Gast)


Lesenswert?

Das mit dem Zähler ist eine gute Idee. Das werde ich ausprobieren.

Da die effektivität des Codes in meinem Fall keine Rolle spielt, habe 
ich da trotzdem noch ein anliegen.
Die Byte variable z.b. 00001011 kommt ja schon genau so im m32 an. Der 
m32 hat ja nur die Aufgabe diese Byte variable aus einem Speicher 
auszulesen und in seinem CASE zu verlagern wo dann Dim "Zaehler/CASE" as 
Byte festgelegt wird.
Ist das nicht irgendwie alles doppelt gemoppelt?

Ansonsten vielen dank erstmal für die schnellen antworten.

von Paul Baumann (Gast)


Lesenswert?

Michael schrub:
>Der
>m32 hat ja nur die Aufgabe diese Byte variable aus einem Speicher
>auszulesen und in seinem CASE zu verlagern wo dann Dim "Zaehler/CASE" as
>Byte festgelegt wird.

Ägypten, Bahnhof, 8-er Inbus???

Das habe wahrscheinlich nicht nur ich nicht verstanden, sonst hätte 
schon
jemand eine vernünftige Antwort gegeben.

MfG Paul

von Nein (Gast)


Lesenswert?

Ägypten, eindeutig.

von Karl H. (kbuchegg)


Lesenswert?

Ich denke, er hat gar nicht begriffen, was das wesentliche in Pauls 
Beispiel war. Der Zähler ist dort ja nur eine Zutat, damit sich im 
Testprogramm irgendwas tut. Mit der eigentlichen Ausgabe hat er ja 
überhaupt nichts zu tun. Die beschränkt sich auf
1
     Porta = Horst    'und den Wert gleich ausch am Port A ausgeben
wo ganz einfach der Inhalt der Variablen 'Horst' auf dem Port ausgegeben 
wird. Der Rest des Programms ist ja nur schmückendes Beiwerk, damit 
'Horst' unterschiedliche Werte annimmt.


Da die eigentliche Ausgabe somit trivial ist, denke ich der Knackpunkt 
in seinem Nichtverständnis liegt hier
> ie Byte variable z.b. 00001011 kommt ja schon genau so im m32 an.
Wetten, das da wieder mal irgendwas anderes dahinter steckt?
Vielleicht eine String-Übertragung mittels UART (aber das ist dann schon 
wilde Spekulation).

von Michael (Gast)


Lesenswert?

Karl Heinz schrieb:
> Vielleicht eine String-Übertragung mittels UART (aber das ist dann schon
> wilde Spekulation).

Hi,

Übermittelt wird das ganze mit nem i2c Protokoll, wo der m32 die 
Bytevariable aus einer externen Speicheradresse in sich hinein saugt, 
und an seinen 8 Pins verteilt. Der m32 soll in diesem i2c transfer in 
grunde genommen nur als "vermittler" dienen, da ja der D/A Wandler das 
ja nicht kann, eine adresse anzuwählen muss eben der atmega her.

von honk (Gast)


Lesenswert?

Ich bin dafür nun endlich den Bascom nerds ein eigenes Unterforen zu 
spendieren ,dann brauch man da gleich erst gar nicht mehr reinschauen.

von hf (Gast)


Lesenswert?

Michael schrieb:
> in sich hinein saugt,
> und an seinen 8 Pins verteilt.

Ich weiß ja nicht, wie er die Variable "in sich hinein sagugt", aber das 
"verteilen" an seine 8 Pins geht einfach mit
1
Porta=$98
2
oder
3
Porta=&b10011000
Die beiden Zeilen sind gleichwertig und geben die Zahl aus deinem Bild 
im ersten Beitrag wieder.

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

@honk

dafür genügte es hier den Threadtitel zu lesen.

Ansonsten ist das Missbrauch eines  Atmega32 zum Kröteneimer aka 
Datenschaufel.

ts ts ts

von Wattt??? (Gast)


Lesenswert?

Mal doch mal ne Skizze, damit wir verstehen was Du da meinst???

Übermittelt wird das ganze mit nem i2c Protokoll, wo der m32 die
Bytevariable aus einer externen Speicheradresse in sich hinein saugt,
und an seinen 8 Pins verteilt.

Bis hier ok
Der m32 soll in diesem i2c transfer in
grunde genommen nur als "vermittler" dienen, da ja der D/A Wandler das
ja nicht kann,

Ab hier Bahnhof !!!

eine adresse anzuwählen muss eben der atmega her.

von Michael (Gast)


Lesenswert?

Winfried J. schrieb:
> Ansonsten ist das Missbrauch eines  Atmega32 zum Kröteneimer aka
> Datenschaufel.

Der muss ja viele andere sachen auch noch machen, so ist es ja nicht... 
:)

hf schrieb:
> Ich weiß ja nicht, wie er die Variable "in sich hinein sagugt"

Na im Externen Speicher ist bsp. die Byte variable 11101101 hinterlegt 
und kann ausgelesen werden. Der Atmega kontaktiert diesen adressspeicher 
und nimmt dieses gesammte eine Byte, so wie es ist, auf.

von hf (Gast)


Lesenswert?

Michael schrieb:
> Der Atmega kontaktiert diesen adressspeicher
> und nimmt dieses gesammte eine Byte, so wie es ist, auf.

Ja, und wo ist jetzt das Problem?
Du willst einen Befehl, um die 8 Bits dieses Bytes an deine Pins vom 
Port A auszugeben. Ich schrieb ja schon:

Entweder
1
Porta=$98
oder
1
Porta=&b10011000

Damit liegt das Byte an den Pins vom Port A an.
Das hatte ich auch schon ganz oben im 2. Post geschrieben.

von Michael (Gast)


Lesenswert?

Den Post hab ich garnicht gesehen :D
aber danke für die vielen tipps. Ich werde dann weiter Doktor´n

von hf (Gast)


Lesenswert?

Michael schrieb:
> Den Post hab ich garnicht gesehen :D
> aber danke für die vielen tipps. Ich werde dann weiter Doktor´n

Paul hatte auch schon den gleichen Tipp gegeben. Nur daß er die Variable 
eben nicht von irgendwo "gesaugt" hat, sondern einen Zähler von 255 bis 
0 benutzt hat, um verschiedene Bitmuster zu erzeugen, die er dann mit 
der Variablen "Horst" an den Port A ausgegeben hat.

Da hast du in diesem Thread schon reichlich viele Tipps übersehen ;-)

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.