Hi, nach längerem Hin und Her hatte ich es ja geschafft ein Programm auf
meine Mikrocontroller zu bekommen.
Nun zeigt mir Bascom aber immer Error, und wenn ich versuche ein Error
zu beheben, dann kommen 2 andere hinzu???!??!?!!???!?!?!?
Ich komme einfach nicht weiter....
Hier das Programm und im Anhang ist meine Vorstellung vom Programm in
SPS S7 Sprache.....
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
$regfile = "m16def.dat"
$framesize = 16
$swstack = 16
$hwstack = 16
$crystal = 1000000
Config Porta.0 = Input
S1 Alias Porta.0
Config Porta.1 = Input
S2 Alias Porta.1
Config Porta.2 = Input
S34 Alias Porta.2
Config Porta.4 = Input
S5 Alias Porta.4
Config Porta.5 = Output
K1 Alias Porta.5
Config Porta.6 = Output
H1 Alias Porta.6
Do
If S1 = 1
Then
Waitms 1000
K1 = 1
If S2 = 1 And Merker0 = 0 'Positive
Flanke
Then Merker0 = 1
If S2 = 0
Then Merker0 = 0
If S2 = 1 And Merker0 = 0 'Alarm
scharf schalten, Positive Flanke
Then Merker1 = 1
If S1 = 1 And S2 = 1 'Entschärfen
Then Merker1 = 0
If S5 = 1 'Entschärfen
Then Merker1 = 0
If Merker1 = 1 And S34 'Alarm
ausgelöst
Then
H1 = 1
K1 = 1
Waitms 5000
K1 = 0
H1 = 1 'Hupe und
Klingel abwechselnd
Waitms 5000
H1 = 0
K1 = 1
Waitms 5000
K1 = 0
H1 = 1
Waitms 5000
H1 = 0
K1 = 1
Waitms 5000
K1 = 1
H1 = 1
Waitms 5000
H1 = 0
K1 = 1
Waitms 5000
K1 = 0
H1 = 0
Waitms 100000
H1 = 1
Waitms 5000
H1 = 0
K1 = 1
Waitms 5000
K1 = 0
H1 = 1
Waitms 5000
H1 = 0
K1 = 1
Waitms 5000
K1 = 0
H1 = 1
Waitms 5000
H1 = 0
K1 = 1
Waitms 5000
K1 = 0
H1 = 0
Merker1 = 0
Loop
End
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Vielleicht kann ja einer von euch Profis schnell mal ein Blick drüber
werfen.
Danke
MfG Andi
Andi schrieb: > Vielleicht kann ja einer von euch Profis schnell mal ein Blick drüber > werfen. Tu dir selbst einen Gefallen und such dir ein BASCOM-Tutorial im Web. DU kannst dir nicht einfach syntaxmässig irgendwelche Dinge ausdenken sonder musst nach den Regeln spielen
Da sind so einige Fehler drin, zB. sind merker0 und merker1 nicht
deklariert, da solltest du vor der do...loop irgendwo so etwas einfügen
Dim merker0 As Bit
Dim merker1 As Bit
das Wort "Then" muss immer in die selbe Zeile wie "If"
vor Loop fehlt ein "End If"
Waitms 100000 geht nicht, weil 100000 ausserhalb des möglichen liegt
> If Merker1 = 1 And S34
da fehlt ein Vergleich wie zB. "S34 = 1"
Bascom ist sehr pingelig, am besten man kompiliert nach jeder kleinen
Änderung, und erst wenn das funktioniert schreibt man weiter. Irgendwann
hat man dann einen gewissen Erfahrungswert, und man kann größere
Schritte machen.
Ich habe schon mehrere Tuts angeschaut, aber die haben ja fast immer den
selben Inhalt mit Hello World und so:
Hier der neue Entwurf:
$regfile = "m16def.dat"
$framesize = 16
$swstack = 16
$hwstack = 16
$crystal = 1000000
Config Porta.0 = Input
S1 Alias Porta.0
Config Porta.1 = Input
S2 Alias Porta.1
Config Porta.2 = Input
S34 Alias Porta.2
Config Porta.4 = Input
S5 Alias Porta.4
Config Porta.5 = Output
K1 Alias Porta.5
Config Porta.6 = Output
H1 Alias Porta.6
Dim merker0 As Bit
Dim merker1 As Bit
Do
If S1 = 1 Then
Waitms 1000
K1 = 1
If S2 = 1 And Merker0 = 0 Then Merker0 = 1
If S2 = 0 Then Merker0 = 0
If S2 = 1 And Merker0 = 0 Then Merker1 = 1
If S1 = 1 And S2 = 1 Then Merker1 = 0
If S5 = 1 Then Merker1 = 0
If Merker1 = 1 And S34 = 1 Then
H1 = 1
K1 = 1
Waitms 5000
K1 = 0
H1 = 1
Waitms 5000
H1 = 0
K1 = 1
Waitms 5000
K1 = 0
H1 = 1
Waitms 5000
H1 = 0
K1 = 1
Waitms 5000
K1 = 1
H1 = 1
Waitms 5000
H1 = 0
K1 = 1
Waitms 5000
K1 = 0
H1 = 0
Waitms 9999
H1 = 1
Waitms 5000
H1 = 0
K1 = 1
Waitms 5000
K1 = 0
H1 = 1
Waitms 5000
H1 = 0
K1 = 1
Waitms 5000
K1 = 0
H1 = 1
Waitms 5000
H1 = 0
K1 = 1
Waitms 5000
K1 = 0
H1 = 0
Merker1 = 0
End If
Loop
End
Allerdings sind immer noch 2 Errors vorhanden, welche ich aber nicht per
Doppelklick anzeigen lassen kann:
Error: 7 Line: 0 IF THEN expected [98] , in File:
Error: 123 Line: 0 END IF expected , in File:
Mfg ........d........e...........r........Andi
Andi schrieb: > Ich habe schon mehrere Tuts angeschaut, aber die haben ja fast immer den > selben Inhalt mit Hello World und so: Dann musst du auch weiter lesen. Alternativ kanmn man, wenn man erst mal ein wenig Übung hat, auch die BASCOM Hilfe zu rate ziehen. zb steht dort, dass die Syntax lautet IF Bedingung THEN Anweisung, auch mehrere Anweisungen ENDIF > If S1 = 1 Then > > > Waitms 1000 > K1 = 1 Wo ist hier das ENDIF? Und rück deinen Code ein, damit nicht alles an der linken Kante klebt. Dein Code hat eine Struktur. Einrückungen können die Struktur zeigen! Aber dazu muss man sie auch machen
Hi Andi,
mein Vorredner hat es schon richtig gesagt. Schau mal in die Hilfe unter
Language Fundamentals. Hier nen paar Tips:
1. if-Anweisung
* if a= 0 then B = 1 => wenn nur eine dann-Bedingung in eine Zeile
* if a= 0 then
b = 1
c = 1
end if => wenn mehrere Bedingungen erfüllt werden sollen, dann immer
mit ein end if beenden.
2. alle Variablen sind zu deklarieren:
* dim a as bit
* dim b as byte.......
Eine gute Seite für den Start ist hier:
http://www.rn-wissen.de/index.php/Kategorie:Quellcode_Bascom
und hier das Forum, was ich sehr
schätze:http://www.roboternetz.de/phpBB2/viewforum.php?f=32
Da wird Dir geholfen :)
Grüße Matthias
entweder Du schreibst den Teil nach "Then" in die gleiche Zeile, oder Du schreibst ein EndIf. Kommentier einfach alles aus, bis keine Kompilierfehler mehr kommen, und nimm dann die Kommentare zeilenweise wieder weg. statt waitms 5000 geht auch wait 5.. ;-)
Karl heinz Buchegger schrieb: > Und rück deinen Code ein, damit nicht alles an der linken Kante klebt. > Dein Code hat eine Struktur. Einrückungen können die Struktur zeigen! > Aber dazu muss man sie auch machen Verlgeich mal hiermit
1 | $regfile = "m16def.dat" |
2 | $framesize = 16 |
3 | $swstack = 16 |
4 | $hwstack = 16 |
5 | $crystal = 1000000 |
6 | |
7 | Config Porta.0 = Input |
8 | S1 Alias Porta.0 |
9 | |
10 | Config Porta.1 = Input |
11 | S2 Alias Porta.1 |
12 | |
13 | Config Porta.2 = Input |
14 | S34 Alias Porta.2 |
15 | |
16 | Config Porta.4 = Input |
17 | S5 Alias Porta.4 |
18 | |
19 | Config Porta.5 = Output |
20 | K1 Alias Porta.5 |
21 | |
22 | Config Porta.6 = Output |
23 | H1 Alias Porta.6 |
24 | |
25 | Dim Merker0 As Bit |
26 | Dim merker1 As Bit |
27 | |
28 | Do |
29 | If S1 = 1 Then |
30 | Waitms 1000 |
31 | K1 = 1 |
32 | End If |
33 | |
34 | If S2 = 1 And Merker0 = 0 Then Merker0 = 1 |
35 | If S2 = 0 Then Merker0 = 0 |
36 | |
37 | If S2 = 1 And Merker0 = 0 Then Merker1 = 1 |
38 | |
39 | If S1 = 1 And S2 = 1 Then Merker1 = 0 |
40 | |
41 | If S5 = 1 Then Merker1 = 0 |
42 | |
43 | If Merker1 = 1 And S34 = 1 Then |
44 | H1 = 1 |
45 | K1 = 1 |
46 | Waitms 5000 |
47 | |
48 | K1 = 0 |
49 | H1 = 1 |
50 | Waitms 5000 |
51 | |
52 | H1 = 0 |
53 | K1 = 1 |
54 | Waitms 5000 |
55 | |
56 | K1 = 0 |
57 | H1 = 1 |
58 | Waitms 5000 |
59 | |
60 | H1 = 0 |
61 | K1 = 1 |
62 | Waitms 5000 |
63 | |
64 | K1 = 1 |
65 | H1 = 1 |
66 | Waitms 5000 |
67 | |
68 | H1 = 0 |
69 | K1 = 1 |
70 | Waitms 5000 |
71 | |
72 | K1 = 0 |
73 | H1 = 0 |
74 | Waitms 9999 |
75 | |
76 | H1 = 1 |
77 | Waitms 5000 |
78 | |
79 | H1 = 0 |
80 | K1 = 1 |
81 | Waitms 5000 |
82 | |
83 | K1 = 0 |
84 | H1 = 1 |
85 | Waitms 5000 |
86 | |
87 | H1 = 0 |
88 | K1 = 1 |
89 | Waitms 5000 |
90 | |
91 | K1 = 0 |
92 | H1 = 1 |
93 | Waitms 5000 |
94 | |
95 | H1 = 0 |
96 | K1 = 1 |
97 | Waitms 5000 |
98 | |
99 | K1 = 0 |
100 | H1 = 0 |
101 | Merker1 = 0 |
102 | End If |
103 | Loop |
104 | |
105 | End |
durch die Einrückung ist genau ersichtlich, welcher Code von welchem if abhängt, wo ein if anfängt und wo es endet, welche Anweisungen davon betroffen sind.
Ahhhhh, jetzt habe ich das mit dem End If und dem einrücken und alles andere auch verstanden. Hab grade richtig klick in der Birne gehört. Danke, sorry, dass ich hier solche Anfänger fragen stelle. Hab gestern auch noch ewig gegooogelt aber kam einfach nicht vorran. Auf jeden Fall ein riesen Dank an euch. MfG der Andi
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.

