LED auf STK500

Gast #73030
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
Gast #73031
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
Gast #73032
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.
Gast #73033
@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.
Gast #73034
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
Gast #73035
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

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.