PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einlesen funzt nicht (BasCom)



ShadowPhoenix
21.03.2004, 10:56
Hallo!
Bascom geht bei mir nun wieder (hmm).
Ich schaffe es einfach nicht, per BASCOM einen PortD einzulesen und damit zB eine LED zu steuern.
Mein Programm schaut so aus:

Config Portb = Output
Config Portd = Input
#loop
if Portd.0 = 0 then Portb.0 = 0 else Portb.0 = 1
goto loop

Nur diese #loop wird nicht erkannt!
Die led soll angehen (portb) wenn der Taster (Portd) angeht!
Aber das funzt irgendwie nicht!
(0 ist ja an, und 1 ist ja aus, weil 0 gleich 0V ist und ich´hab die Leds verkehrt angeschlossen, also das Plus an den Port)
Was kann ich da machen??

Mit freundlichen Grüßen,
ShadowPhoenix

Frank
21.03.2004, 11:24
Hi,

Du mußt für die Abfrage den Befehl PinX statt PortX nehmen. Zudem weiß ich nicht ob du Pullup Widerstand angeschlossen hast. Wenn nicht, kannst du den internen bei einem Eingabeport so einschalten:
portd.0=1 'Interner Pullup Widerstand einschalten

Wenn ich micht nicht irren, müsste Listing dann so aussehen:


Config Portb = Output
Config Portd = Input

portd.0=1 'Interner Pullup Widerstand einschalten

#loop
if Pind.0 = 0 then Portb.0 = 0 else Portb.0 = 1
goto loop

Allerdings ist das Programm nicht ideal, da Tastenprellen zu unsauberen verhalten führt. Dahe rgibt es in Bascom eine spezielle Portabfrage die Tastenpreller ausschließen. Wir fällt Bezeichnung nur gerade nicht ein - findet man aber schnell in der Hilfe

Übrigens kann ich wirklich dieses neue deutsche Buch von Roland Walter empfehlen, ich hab es fast durchgelesen. Es ist in erster Linie ein Bascom Buch bei dem solche Sache wie oben aber natürlich auch tiefergende sehr gut an Beispielen beschrieben werden. Wird zwar alles am Mega8 Beispiel beschrieben, aber das läßt sich fast alles auch auf andere AVR´s übertragen. Wer Probleme hat das Buch zu bekommen, kann es auch über robotikhardware.de beziehen. Kostet überall das gleiche.

http://www.robotikhardware.de/bilder/cover.png

ShadowPhoenix
21.03.2004, 11:34
Danke, nur bei deinem Programm kommt der fehler:

Unknown Statement [#LOOP] , in File.....

Wahrscheinlich gibt es den Befehl #[Statement] nicht mehr..
Hmm wie kann man unter BasCom am besten eine "Endlosschleife" einbauen?

Mit freundlichen Grüßen,
ShadowPhoenix, der zum ersten mal mit AVR's zu tun hat ;-)

21.03.2004, 11:59
Einfach:

do
.... befehle ...
loop


Gruß Frank

PS. Wenn du goto nimmst, dann mußt du Ziel glaube anders markieren. Glaub ohne Raute und mit Doppelpunkt.
ziel:
goto ziel
Bin mir aber jetzt nicht ganz sicher, notfalls mal unter goto nachschlagen