STK500 anfängliche Probleme

OP #737420
Lesenswert?

Ich habe folgenden Quelltext aus einem Tutorial:

.include "m8def.inc"

ldi r16, 0xFF


out DDRB, r16;

ldi r16,0xFC;
out PORTB, r16;




ende: rjmp ende;


Könnt ihr mir sagen, wieso nur von 8 LEDs 2 Leuchten und warum LED 1 und 
LED 4. Ich habe das STK500, daher die Portbezeichnungen

Oder könnt ihr vllt erklären wie ich die anderen LEds ansteuern kann.

Danke
#737423
Lesenswert?

Marco Müeller wrote:
>
> Könnt ihr mir sagen, wieso nur von 8 LEDs 2 Leuchten und warum LED 1 und
> LED 4.

Weil du hier

> ldi r16,0xFC;
> out PORTB, r16;

die Hex Zahl 0xFC auf den Port ausgibst.
In binärer Schreibweise ist das

      F    C
    1111 1100

eigentlich müssten LED1 und LED2 leuchten :-)

   Hex Ziffer   binär       Hex Ziffer  binär
  --------------------------------------------
      0         0000            8       1000
      1         0001            9       1001
      2         0010            A       1010
      3         0011            B       1011
      4         0100            C       1100
      5         0101            D       1101
      6         0110            E       1110
      7         0111            F       1111

Offensichtlich leuchtet eine LED genau dann, wenn am Ausgang
an der entsprechenden Bitposition eine 0 ausgegeben wird.
Das ist eine durchaus übliche Vorgehensweise.
Gast #737778
Lesenswert?

Das ist beim STK500 normal.

Dein verwendeter Controller ist ein ATmega8. Bei diesem ist für die Pins 
PB6 und PB7 als alternative Funktionen XTAL1 und XTAL2 (Anschlüsse für 
externen Quarz) vorgesehen. Diese Pins sind auf dem STK500 nicht mit 
den PORTB-Headern verbunden.

Gruß,
Magnetus
Gast #737787
Lesenswert?

STK500-Besitzer wrote:
> Das liegt daran, dass der Mega8 einen 6bit breiten PortB hat.

Nö. PortB ist 8 Bit breit.

Nachtrag zu meinem vorherigen Posting:

Die Pins PB6 und PB7 sind auch nur als solche verwendbar, wenn der mega8 
mit dem internen RC-Oszillator getaktet wird.

Gruß,
Magnetus

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