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


von Gast (Gast)


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

von ich (Gast)


Lesenswert?

schon mal nur mit
1
Do   
2
   Print "a"
3
Loop

getestet?

von Gast (Gast)


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?

von volkstrottel (Gast)


Lesenswert?

$frame
$swstack etc.

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

von Paul Baumann (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.