ret springt nicht zurück

OP #2865922
Lesenswert?

Hallo zusammen!

Ich sitze seit zwei Stunden vor meinem Quellcode und wundere mich, warum 
er nicht das tut, was er soll (wie das für Code so üblich ist ;)

Aufgefallen ist mir, dass das ret scheinbar nicht zurückspringt.
Hier ein Minimalbeispiel:
1
.include "m8def.inc"         ; Definitionsdatei für den Prozessortyp einbinden
2

3
.org 0x0000
4
    ldi r16, 0xFF       ; 
5
    out DDRB, r16       ; Port B als Ausgang
6

7
    ldi r16, 0xFF       ; 
8
    out DDRD, r16       ; Port D als Ausgang
9
main:  
10
    ldi r16, 0b11111111 ; grüne LED an
11
    out PORTB, r16      ; 
12
    
13
    rcall led
14
    
15
    ldi r16, 0b11111111 ; rote led an
16
    out PORTD, r16      ;
17
      
18
ende:   rjmp ende           ; Endlosschleife 
19

20
led:
21
  ldi r16, 0b00001111 ; gelbe LED an (rote noch aus)
22
  out PORTD, r16 
23
  ret

Als HW ist eine grüne LED an PB(2), eine gelbe LED an PD(2) und eine 
rote LED an PD(4, also das höhere Nibble).
Der Code soll die grüne, dann die gelbe und schließlich die rote LED 
anschalten.
Wenn ich den Code ausführe, leuchten aber nur die grüne und die gelbe 
LED.
Die Verbindungen sind alle überprüft und mein µC ist ein ATMega8.
Die Wahl der Pins ist bei mir irrelevant.

Habe ich irgendetwas richtig dummes übersehen oder funktioniert das so 
bei euch?

Beste Grüße
Johannes S.

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