mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit Bascom


Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich hab in Bascom diesen Code geschrieben:
$regfile = "attiny13.dat"
$crystal = 1200000
Dim B As Byte
Dim I As Integer
Open "comd.0:19200,8,n,1" For Input As #2
For I = 1 To 60
   B = Inkey(#2)
     If B = 126 _
     Then

     Else
     If B = 255 _
     Then

     End If
   End If
     Next I
Close #2
End

Bascom zeigt mir immer an, dass die letzte Zeile fehlerhaft wäre, wieso?
Vielen Dank für eure Unterstützung!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Bascom zeigt mir immer an, dass die letzte Zeile fehlerhaft wäre, wieso?

Ich rate mal: ein END IF zuviel wegen ELSE?

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist es nicht, dann zeigt er immer noch einen Fehler an, ich hab zwei 
If und zwei End If benutzt.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das ist es nicht, dann zeigt er immer noch einen Fehler an, ich hab zwei
>If und zwei End If benutzt.

Stimmt;) Ich sollte zu bascom besser nix posten:(

Soll dein Programm eigentlich nach der for loop aufhören?
Oder fehlt da irgendwo ein do loop oder sowas?
Wie gesagt kenn mich mit bascom nich so aus.

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nochmal abschreiben wirkt wunder, obwohl es das gleiche ist.
Komisch!
$regfile = "attiny13.dat"
$crystal = 1200000
   Dim B As Byte
   Dim I As Integer
   Open "comb.0:1000, 8,n,1,Inverted" For Input As #1
   For I = 1 To 60
   B = Inkey(#1)
   If B = 126 _
   Then

   Else
   If B = 255 _
   Then

   End If
   End If
   Next I
   Close #1
End

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, nach der For-Schleife hörts aus, aber bei Then und Then schreib ich 
noch was rein.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ja, nach der For-Schleife hörts aus, aber bei Then und Then schreib ich
>noch was rein.

Dein Programm läuft also genau so lange bis i=60?
Und danach gar nicht mehr? Ist das so gewollt?

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Nochmal abschreiben wirkt wunder, obwohl es das gleiche ist.
>Komisch!

Es ist nicht das Gleiche! Du hast oben Comd.0 als Port öffnen wollen.
Der kleine Kerl hat aber nur Port B.

Das passiert schon mal....;-)

MfG Paul

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, das hab ich übersehen.
Vielen Dank.
Ich hab leider noch nen Problem, Bascom ist recht dumm.
Ich öffne in einem If einen ComPort, Bascom meint, der wäre aber schon 
geöffnet, nur weil das Close im If steht. Wie kann ich das ändern, oder 
kann ich den Fehler einfach ignorieren?

$regfile = "attiny13.dat"
$crystal = 1200000
   Dim B As Byte
      Dim I As Integer
   Open "comb.0:1000, 8,n,1,Inverted" For Input As #1
 Do
     B = Inkey(#1)
  Loop Until B > 0
       If B = 126 _
   Then
       For I = 0 To 63
         Do
     B = Inkey(#1)
  Loop Until B > 0
       Writeeeprom B , I
       Next
       Close #1
   Else
   If B = 255 _
   Then
     Close #1
      Open "comb.0:1000, 8,n,1,Inverted" For Output As #2
       For I = 0 To 63
         Readeeprom B , I
         Print #2 , B
       Next
      Close #2
        End If
   End If
   End

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@holger
Das war nur nen Ausschnitt, den ich schonmal vorbereitet habe.

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Fehler kannst Du nicht ignorieren, weil dann ganz einfach nicht
kompiliert wird und Du keine .hex-Datei bekommst.

Bascom ist nicht so dumm, wie du denkst... ;-)

Du hast einen Denkfehler drin: Nur wenn B= 126 oder 255 ist, wird
der Stream 1 geschlossen.

MfG Paul

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weiß ich, aber der andere Stream wird doch auch nur in einem dieser 
Fälle geöffnet.

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mußt Du wirklich über den gleichen Pin senden und empfangen?
Es wäre einfacher, Pinb.0 und Pinb.1 für Senden und Empfangen zu nehmen.

Dann könntest Du Close#1 und close #2 ganz unten hinschreiben, wie es
Bascom gerne hätte.

$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 8
$swstack = 2
$framesize = 5

Dim B As Byte
Dim I As Integer

 Do

   Open "comb.0:19200, 8,n,1,Inverted" For Input As #1
   Open "comb.1:19200, 8,n,1,Inverted" For Output As #2
   Do
     B = Inkey(#1)
   Loop Until B > 0
       If B = 126 Then
          For I = 0 To 63
            Do
               B = Inkey(#1)
            Loop Until B > 0
             Writeeeprom B , I
          Next

        Else
           If B = 255 Then
              For I = 0 To 63
                Readeeprom B , I
                Print #2 , B
              Next
           End If
       End If
   End
   Close #1
   Close #2

 Loop

MfG Paul

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Mußt Du wirklich über den gleichen Pin senden und empfangen?

Das geht sowieso nur wenn die Gegenstelle das erlaubt;)

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gut, wenns keine andere Möglichkeit gibt, probier ich mal, das so zu 
machen.

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.