www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom + String


Autor: Kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry, muss noch dazusagen, das sich der String natürlich auch ändert.
also nicht immer 01010101 !

ciao Kay

Autor: anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ä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)

Autor: Kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: ATmega8Tester (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

du kannst es auch anders machen. Mit dem Befehl Inputbin kannste direkt
Byte's pruefen.


Mfg

Dirk

Autor: ATmega8Tester (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dirk,

wie kann ich das mit InputBin lösen ? die Bascom Hilfe dazu versteh ich
net. danke

Kay

Autor: ATmega8Tester (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DDRB = &B11111111   ' PortB alles Ausgänge
Do
  Inputbin PORTB  ' warten auf ein Zeichen/Byte auf
                  ' der Schnittstelle und
                  ' nach Eingang dem PortB zuweisen
Loop

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

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

Config Serialbuffer .....


Mfg

Dirk

Autor: Kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.