Led einschalten

OP #1110562
Lesenswert?

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 #1110579
Lesenswert?

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 #1110585
Lesenswert?

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 #1110598
Lesenswert?

>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 #1110601
Lesenswert?

> 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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren