Bascom Befehl gesucht

Gast #3724104
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
Angehängte Dateien:
#3724115
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.
Gast #3724952
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.
Gast #3725638
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
#3725799
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).
Gast #3726508
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.
Gast #3726537
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.
Gast #3726549
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.
Gast #3726554
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.
Gast #3726559
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.
Gast #3726590
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 ;-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.