Bascom Uart nur Müll

Gast #942648
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.
1
$regfile = "m8def.dat"                                      
2
$crystal = 3579545                                         
3
$baud = 4800
4
Dim S As String * 17
5
Dim B As String * 17
6
Dim Zs0 As String * 5
7
Dim Zs1 As String * 5
8
Dim Zs2 As String * 5
9
Dim Zs3 As String * 5
10
Dim Zs4 As String * 5
11
Dim Snm0 As String * 5
12
Dim Anm0 As String * 5
13
Dim Sa0 As String * 5
14
Dim Aoa0 As String * 5
15
On Urxc Onrxd
16
Enable Urxc
17
Enable Interrupts
18
Main:
19
Do
20
If S = "Prog" Then Goto Programmierung
21
Loop
22
End
23

24
Onrxd:
25
S = S + Chr(udr)
26
Return
27

28
Programmierung:
29
S = ""
30
Print "test ok"
31
Do
32
If Len(s) > 17 Then S = ""
33
If Len(s) > 13 Then
34
B = S
35
S = ""
36
Zs0 = Mid(b , 1 , 2 )
37
Zs1 = Mid(b , 4 , 4 )
38
Zs2 = Mid(b , 9 , 2 )
39
Zs3 = Mid(b , 12 , 1 )
40
Zs4 = Mid(b , 14 , 1 )
41
Select Case Zs0
42
Case "E0" : Snm0 = Zs1
43
             Anm0 = Zs2
44
             Sa0 = Zs3
45
If Zs3 = "2" Then Aoa0 = Zs4 Else Aoa0 = "0"
46
Print "Eingangsnummer:" ; Zs0
47
Print "Seriennummer:" ; Zs1
48
Print "Ausgangsnummer:" ; Zs2
49
Print "Schatart:" ; Zs3
50
           Zs0 = ""
51
           Zs1 = ""
52
           Zs2 = ""
53
           Zs3 = ""
54
           Zs4 = ""
55
           B = ""
56
End Select
57
End If
58
Loop Until S = "Stop_3305"
59
S = ""
60
Goto Main
Gast #942687
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?
Gast #942716
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren