Forum: Mikrocontroller und Digitale Elektronik LED auf STK500


von RalfG (Gast)


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

von leo9 (Gast)


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

von ThomasB (Gast)


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.

von RalfG (Gast)


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.

von Frank Linde (Gast)


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

von Rahul (Gast)


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

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
Noch kein Account? Hier anmelden.