www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LED auf STK500


Autor: RalfG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
ich bin absoluter Anfänger und habe gleich ein grosses Problem. Wenn
ich mit BASCOM alle LED's auf meinem STK500 ausschalten will müsste
ich doch so Erfolg haben:
Config Portd = Input
Config Portb = Output
Portb.0 = 0
Portb.1 = 0
Portb.2 = 0
Portb.3 = 0
Portb.4 = 0
Portb.5 = 0
Portb.6 = 0
Portb.7 = 0

Loop:
If Pind.0 = 0 Then Portb.0 = 0 Else Portb.0 = 1
goto loop
Es klappt aber nicht, nur Portb.0 ist aus, alle Anderen leuchten. Was
ist hier falsch ?

Gruß Ralf

Autor: leo9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Handbuch aufschlagen - bis Kapitel 3.1 blättern und lesen.
Wenn der Port-Pin 0 ist leuchtet die LED, du schaltest also alle LEDs
ein. Die LED auf B0 müsste allerdings auf die Taste reagieren.

grüsse leo9

Autor: ThomasB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ralf:

$regfile = "2313def.dat"
Ddrd = 0 : Portd = 0
Ddrb = 255 : Portb = 255
Do
If Pind.0 = 0 Then
Portb = 0
Else
Portb = 255
End If
Loop

das Prg.schaltet Portb ein und aus

ThomasB.

Autor: RalfG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Leo9

Ok, so in etwa habe ich mir das schon gedacht. Was ich aber absolut
nicht verstehe, das die LED an Portb.0 auf den Taster reagiert, d.h.
Tastergedrückt - LED an. Sollte die LED nicht genau umgekehrt arbeiten
?

@ThomasB
danke - das kann ich schon mal gebrauchen.

Autor: Frank Linde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Portb.0 schaltest Du nur den einen Pin 0 des PortB um. Schau Dir
nochmal das Programm von Thomas an, dort ist es richtig.

Gruß, Frank

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Tasten des STK500 reagieren auch invertiert:
Wenn sie gedrückt werden, liegt am Eingang eine 0.
Somit ist also deine Abfrage erfüllt.
Einfacher könntest du es wohl so machen:

loop:
    PortB.0 = PinD.0
goto loop
(so in der Art geht es zumindest in C...)
Hierbei reagiert nur Pin 0 von Port B auf Pin 0 von Port D.
Thomas Programm schaltet alle LEDs bei dem Tastendruck ein.

Willst du die zu den Tastern korrespondierenden LEDs schalten, müsste
es in etwa so aussehen:
loop:
    PortB = PinD
goto loop

Der Byte-Wert des Port D wird einfach in den Port B geschrieben. So
leuchten die LEDs, deren Taster gedrückt werden.

Disclaimer:
Ich gehe jezt davon aus, dass das so funktionieren müsste. Es ist eine
Vermutung, da ich selbst noch nie mit Bascom programmiert habe (und
wohl auch nicht mehr werde). Basic-Erfahrungen hab ich vor Jahren mal
gesammelt (APPLE ][) und schliesse jetzt aus diesem gefährlichen
Halbwissen auf die Lösung. Deswegen kein Gewähr auf richtige Funktion.
Sollte jemand etwas zu korrigieren haben, tue er dies bitte auch.
Gruß Rahul

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.