Zeig mal das ganze Programm. Allein von dem Stück das dasteht funktionierts perfekt.
Liebe Gemeinde,
ich habe ein "FOR NEXT" Problem.
For X = 1 To 20
Led = Ein
Wait 1
Led = Aus
Waitms 1
Next X
End
Diese Schleife wir nur die halbe Anzahl an Durchläufen, abgearbeitet.
Ist die Endzahl Ungleich also 11,21 ect. bleibt die Led sogar an, wenn das Programm beendet wir. ich verwende einen Atmel 168.
Weis jemand warum? Habe bis jetzt nur C-Controll 2 programmiert und mit Bascom keine Erfahrung.
Gruß Hummel
Zeig mal das ganze Programm. Allein von dem Stück das dasteht funktionierts perfekt.
#ifndef MfG
#define MfG
wenn da wirklich hinter LED=aus der Befehl waitMS 1 steht, würd ich sagen, ist die LED "augenscheinlich" immer EIN oder?
Während die Schleife läuft schon. Danach sollte die LED aber aus sein, egal wieviele Schleifendurchläufe stattfinden.Zitat von Hackes
Hallo,
erst mal vielen Dank für Euer Interesse.
WaitMS 1 war natürlich falsch. Hatte ich auch schon geändert, ich da vorher 1000ms. stehen.
Der Code:
$regfile = "m168def.dat"
$crystal = 8000000
$baud = 9600
$hwstack = 64
$swstack = 20
$framesize = 60
'----------------------------------
Config Pinc.0 = Output
Config Pind.2 = Input
Led Alias Pinc.0
Eingang1 Alias Pind.2
Dim X As Byte
Const Ein = 1
Const Aus = 0
'---------------------
For X = 1 To 10
Led = Ein
Wait 1
Led = Aus
Wait 1
Next X
For X = 1 To 10
Led = Ein
Waitms 500
Led = Aus
Waitms 500
Next X
End
Ich seh da bei den Pins 2 Fehler:
Bei nem Output isses Config Portx.y, nicht Pinx.y
Und Led Alias PinC.0 müsste PortC.0 sein.
Ansonsten müsste das Programm aber gehen.
#ifndef MfG
#define MfG
Hättest du uns den ganzen Code direkt gezeigt, hättest du auch gleich den richtigen Hinweis bekommen.Zitat von Hummel
Wenn du eine 1 in das Pin Register schreibst ist das so, als würdest du den Ausgang toggeln. Schreibst du da eine 0 hinein passiert nichts.
Daher wird bei einer geraden Anzahl von Schleifendurchläufen so getoggelt, dass am Ende die LED aus ist. Bei einer ungeraden Anzahl bleibt sie an.
Wie Jaecko schon geschrieben hat, willst du ja eigentlich das Port Register setzen. Da kannst du tatsächlich eine 1 bzw. eine 0 hineinschreiben.
Danke für Eure Hilfe.
Port statt Pin wie Ihr geschrieben habt.
Fragt sich nur warum es im Simulator korrekt läuft und die Schleife bis 10 zählt und im 168'er nur bis 5? Der Compiler mecker nicht.
Gruß Karl
Bitte wieder den ganzen geänderten Code posten![]()
Lesezeichen