Led einschalten

OP #1110562
Ich hab mal wieder ein Anfängerproblem.
Und zwar will ich eine LED zum leuchten bringen. Ich verwende den 
Atmega8515.
Mein Code sieht so aus:
1
.include "m8def.inc"
2

3
   sbi DDRD,PD0
4
   sbi PORTD,PD0
5
loop: 
6
   rjmp loop
Nach dem ausführen des Codes passiert einfach nichts...
Liegt der Fehler vielleicht an den Ports?
Zumindest sind die Kabel an meinem STK500 so gesteckt, wie es im 
Online-Handbuch beschrieben wird.
Gast
gut so schlecht war mein Kommentar doch nicht

sbi DDRD,PD0 ;setzt Bitnummer und schaltet die LED somit ein

falsch, legt fest welches Bit als ausgang genutzt werden soll

sbi PORTD,PD0 ;macht das gleiche (?)
auch falsch, setzt das Bit 0 auf 1 (wenn dort die LED gegen masse dran 
ist wird sie leuchten)

loop:
   rjmp loop ;sorgt dafür, dass die LED immer an bleibt.

fast richitg, ist eine schleife damit der Prozessor definert etwas 
macht.
Gast
Du hast das Datenblatt, insbesonders die Beschreibung zu den SFR "DDRx" 
und "PORTX" schon gelesen, oder?

Kurz gesagt kann jeder Pin Eingang ODER Ausgang sein. Was er konkret 
sein soll, muss ihm der Programmierer (DU!) erst sagen. Dazu dient 
"DDRx". Welchen Zustand er als Ausgang dann annimmt, legst du mit 
"PORTx" fest.

Und die Funktion der Assembler-Befehle (sbi und co) kannst du sicher 
hier dem Tutorial entnehmen.

Auszug aus dem Datenblatt:

Each port pin consists of 3 Register bits: DDxn, PORTxn, and PINxn. As 
shown in “Register
Description for I/O Ports” on page 65, the DDxn bits are accessed at the 
DDRx I/O address, the
PORTxn bits at the PORTx I/O address, and the PINxn bits at the PINx I/O 
address.
The DDxn bit in the DDRx Register selects the direction of this pin. If 
DDxn is written logic one,
Pxn is configured as an output pin. If DDxn is written logic zero, Pxn 
is configured as an input
pin.
If PORTxn is written logic one when the pin is configured as an input 
pin, the pull-up resistor is
activated. To switch the pull-up resistor off, PORTxn has to be written 
logic zero or the pin has to
be configured as an output pin. The port pins are tri-stated when a 
reset condition becomes
active, even if no clocks are running.
If PORTxn is written logic one when the pin is configured as an output 
pin, the port pin is driven
high (one). If PORTxn is written logic zero when the pin is configured 
as an output pin, the port
pin is driven low (zero).
Gast
>Ich meine die LED werden am STK500 gegen Masse geschaltet.

Damit meinte ich sie werden an der Kathode geschaltet.
D.h. 1 ist aus, 0 ist an.


>funktioniert nicht :(

Sicher?

   sbi DDRD,PD0
   cbi PORTD,PD0
loop:
   rjmp loop
Gast
> ja, stimmt...
> Inzwischen hat sich mein problem erledigt.
> Weiß selbst nicht, wie es geklappt hat, aber es geht jetzt ^^

Fehlt nur noch der Ehrgeiz deinerseits herauszufinden, WARUM es jetzt 
klappt und was vorher der Fehler war....

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 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.