mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom Uart nur Müll


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein Problem mit Bascom, wenn ich mein Atmega8 am Uart habe 
empfange ich nur Müll auf meinem Terminal(Das Terminal ist richtig 
eingestellt). Hier mein Code vielleicht findet ihr den Fehler ich bin 
ratlos.
$regfile = "m8def.dat"                                      
$crystal = 3579545                                         
$baud = 4800
Dim S As String * 17
Dim B As String * 17
Dim Zs0 As String * 5
Dim Zs1 As String * 5
Dim Zs2 As String * 5
Dim Zs3 As String * 5
Dim Zs4 As String * 5
Dim Snm0 As String * 5
Dim Anm0 As String * 5
Dim Sa0 As String * 5
Dim Aoa0 As String * 5
On Urxc Onrxd
Enable Urxc
Enable Interrupts
Main:
Do
If S = "Prog" Then Goto Programmierung
Loop
End

Onrxd:
S = S + Chr(udr)
Return

Programmierung:
S = ""
Print "test ok"
Do
If Len(s) > 17 Then S = ""
If Len(s) > 13 Then
B = S
S = ""
Zs0 = Mid(b , 1 , 2 )
Zs1 = Mid(b , 4 , 4 )
Zs2 = Mid(b , 9 , 2 )
Zs3 = Mid(b , 12 , 1 )
Zs4 = Mid(b , 14 , 1 )
Select Case Zs0
Case "E0" : Snm0 = Zs1
             Anm0 = Zs2
             Sa0 = Zs3
If Zs3 = "2" Then Aoa0 = Zs4 Else Aoa0 = "0"
Print "Eingangsnummer:" ; Zs0
Print "Seriennummer:" ; Zs1
Print "Ausgangsnummer:" ; Zs2
Print "Schatart:" ; Zs3
           Zs0 = ""
           Zs1 = ""
           Zs2 = ""
           Zs3 = ""
           Zs4 = ""
           B = ""
End Select
End If
Loop Until S = "Stop_3305"
S = ""
Goto Main

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schon mal nur mit
Do   
   Print "a"
Loop

getestet?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja hab ich, dass funktioniert auch soweit doch das Problem ist das er 
immer automatisch in das Label "Programmierung" geht ohne das die If 
Bedingung in der Hauptschleife erfüllt wird. Woran kann das liegen?

Autor: volkstrottel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
$frame
$swstack etc.

Unerklärliches Programmverhalten rührt meist aus den
Stack und Frameeinstellungen her.

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Zeile: "If S = "Prog" Then Goto Programmierung"
ist nicht gut. Das hinterläßt Trümmer auf dem Stack.

Geh mal mit "Exit Do" aus der Schleife und schreibe die Interruptroutine
ganz unten hin.
also so: "IF S= "Prog" then exit do"

MfG Paul

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.