Bascom + String

Gast #71201
Hallo,

ich würde gerne einen String, der aus 8 Zeichen besteht ( 01010101 )
über die Serielle an meinen AVR schicken. das ist ja auch kein problem.
jetzt soll genau dieser String am PortB ausgeben werden.

PORTB    = &B01010101

Nur wie kann ich mithilfe von Bascom den Empfangenen String auslesen
und auf PortB wiedergeben ?

mfg Kay
Gast
ähm...ein string ist eine zeichenkette. das was du meinst sind wohl
bytes.

du schreibst das empfange byte in eine variable (als byte deklariert)
und setzt den port dann auf diese variable (portb = variable)
Gast
hallo anfänger,

ich habe ein Terminalprogramm. mit dem sende ich "01010101" an den
AVR. das sind doch aber 8 Byte oder ? muss ich dann jedes Byte einzeln
deklarieren ?

mfg Kay
Gast
Hallo Kay,

du darfst nicht den String "01010101" senden,
sondern nur e i n Zeichen/Byte wie z.B. U!

Zur Erklärung:
&B01010101 = Dezimal 85 = Ascii-Zeichen U
&B01000001 = Dezimal 65 = Ascii-Zeichen A
usw.

Also sendest du einfach z.B. ein "U" über die serielle
Schnittstelle.

In BASCOM:

DDRB = &B11111111   ' PortB alles Ausgänge
Do
  PORTB = Waitkey() ' warten auf ein Zeichen/Byte auf
                    ' der Schnittstelle und
                    ' nach Eingang dem PortB zuweisen
Loop

Grüße
ATmega8Tester
Gast
Hallo

@Dirk
es gibt ja wie bekannt verschiedene Wege nach Rom... :-)

@Alle
Ich für meinen Teil habe mir angewöhnt in BASCOM die zu realisierende
Aufgabenstellung durchaus mit zwei, drei Ansätzen zu untersuchen.
Der Unterschied in den vom Compilat (bin-Daten) belegten Ressourcen im
Flash kann nicht unerheblich sein.

In unserem Beispiel wohl eher zu vernachlässigen:
PORTB = Waitkey()   14 Byte   weniger wie  Inputbin PORTB
auch hier wohl eher zu vernachlässigen:
LCD Chr(65);Chr(66);Chr(67);Chr(67);Chr(68);Chr(69) 10 Byte weniger wie
LCD "ABCDEF"

PS:
Funktionen wie Waitkey, Input, Print verwende ich eigentlich nur für
Testzwecke, da sie eine BASCOM-Software-Emulation der USART darstellen
und sehr viel Ressourcen benötigen.
Ich verwende lieber die AVR-Register und Interrupts der USART direkt in
BASCOM und kann somit eine gepufferte interruptgesteuerte Übertragung
mit weitaus weniger Ressourcen realisieren.

Gruß
ATmega8Tester
Gast
DDRB = &B11111111   ' PortB alles Ausgänge
Do
  Inputbin PORTB  ' warten auf ein Zeichen/Byte auf
                  ' der Schnittstelle und
                  ' nach Eingang dem PortB zuweisen
Loop
Gast
Hi,

es ist aber sinnvoll noch ein Ringbuffer fuer den Empfang zunutzen und
nicht direkt den interrupt des UART's.

Config Serialbuffer .....


Mfg

Dirk
Gast
hi,

es gibt also keine relativ einfache möglichkeit, einen "String" z.b.
01010101 über die serielle zu schicken und mir dann so am Portx
auszugeben ?

dann werde ich halt rumprobieren müssen.

danke für eure antworten

gruß Kay

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 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.