mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programmkorrektur


Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi ich habe hier ein Programm geschrieben dass verschiedene Leds auf
Tastendruck einschalten soll.
Könnt ihr mir den Fehler sagen?
Wenn man sich das auf dem STK500 anguckt, dann leuchten immer schwach
die LED4,LED5,LED6.

Gruß MAX

Autor: Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@max
Sorry hab meine Kristallkugel wohl gerade verlegt...

Autor: Rufus, das dicke Ei (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Sorry hab meine Kristallkugel wohl gerade verlegt..."

Dann such sie.

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi sorry (;

Hier ist der Code:

$regfile = "2313def.dat"
$crystal = 3686400
Dim X As Byte
Config Portb = Output
Config Portd = Input

Portd = &B1111111
Portb = &B1111111

Do

If Pind.0 = 0 Then Portb = 250 Else Portb = 255             '1
If Pind.1 = 0 Then Portb = 193 Else Portb = 255             '2
If Pind.2 = 0 Then Portb = 208 Else Portb = 255             '3
If Pind.4 = 0 Then Portb = 184 Else Portb = 255             '4
If Pind.5 = 0 Then Portb = 148 Else Portb = 255             '5
If Pind.6 = 0 Then Portb = 132 Else Portb = 255             'R
If Pind.7 = 0 Then Portb = 143 Else Portb = 255             'L
Loop

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habt ihr eine Erklärung dafür,warum bei Nichtdrücken eines Tasters
trotzdem 3Leds schwach leuchten?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Habt ihr eine Erklärung dafür,warum bei Nichtdrücken eines Tasters
trotzdem 3Leds schwach leuchten?"

Zieh mal das ISP-Kabel ab.


Trotzdem ist Dein Code bestimmt nicht das, was Du vorhast.


Peter

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, wie es aussieht, möchtest Du 7-Segment-LED´s steuern.
Das haut so nicht hin.
Wenn einer der 8 IF-Bedingungen erfüllt ist, müßtest Du den ganzen
IF-Block sofort verlassen, ansonsten wird das, was vorher auf low
gesetzt wurde von der nächsten IF-Bedingung, welche nicht zutrift,
wieder auf hi-Pegel gesetzt (255).
Mach es doch lieber mit Variablen wie z. B.:

Dim LEDVar as Byte

Do

LEDVar=255    'Wenn keine Taste gedrückt leuchtet keine LED
If Pind.0 = 0 Then LEDVar = 250             '1
If Pind.1 = 0 Then LEDVar = 193             '2
If Pind.2 = 0 Then LEDVar = 208             '3
If Pind.4 = 0 Then LEDVar = 184             '4
If Pind.5 = 0 Then LEDVar = 148             '5
If Pind.6 = 0 Then LEDVar = 132             'R
If Pind.7 = 0 Then LEDVar = 143             'L
Portb = LEDVar

Loop

MfG
Andi

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI Andi ,

danke für deine Antwort. Deine Erklärung verstehe ich, aber mit den
Variablen funktioniert nun überhaupt nichts mehr(:
Was könnte man da noch machen?

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann check mal die LED´s ob die auch wirklich auf GND leuchten:
VCC -> Vorwiderstand -> Anode -> Katode -> PortB.

MfG
Andi

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andi ,
ich habe die Leds vom STK500 zum Test angeschlossen.
Ich habe durch den Befehl INPUT mir den Wert an die Variablen liefern
lassen. habe ich da im Terminalprogramm zB 208 geschrieben, dann
leuchtete die korrekte ledzusammensetzung. (also zB die2. und 5.Led)

MfG Max

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habt ihr eine Idee wie man das machen kann? DAs muss doch machbar sein
oder?

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann probier erst mal einen Code ohne Schnickschnack wie z. B.:

PortB=255-1
End

Wenn die LED´s auf GND geschaltet sind müßte jetzt genau die LED an
PortB.0 leuchten. Wenn alle anderen leuchten, an PortB.1 bis PortB.7,
dann sind die hi-active.
Wenn das dann richtig geht dann probierst Du einfach 255-2,
255-4...255-128.
Zumindest hilft Dir das bei der Fehlersuche.

MfG
Andi

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, am Programmstart (Init) kannst Du noch "DDRB=255" schreiben,
damit ist der PortB sicher als Ausgang.

MfG
Andi

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.