mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STK500 anfängliche Probleme


Autor: Marco M. (marco1987)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marco,

weil die LED durch einen Transistor invertiert werden....

Gruss Otto

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ldi r16,0xFC

Die Leds werden mit 0-Pegel angesteuert.

ldi r16,0x00
und schon alle an.

Autor: Empfehlung (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Marco M. (marco1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok danke das habe ich jetzt verstanden nur 00000000 sind ja 8 Bit also 
müssten alle 8 LEDs an sein, wie kommt es, dass nur 6 an sind hiern 
ochmal der QUellcode

.include "m8def.inc"

ldi r16, 0xFF


out DDRB, r16;

ldi r16,0b00000000;
out PORTB, r16;




ende: rjmp ende;


Danke

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wie kommt es, dass nur 6 an sind

Das liegt daran, dass der Mega8 einen 6bit breiten PortB hat.

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.