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
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.
ldi r16,0xFC Die Leds werden mit 0-Pegel angesteuert. ldi r16,0x00 und schon alle an.
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
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
>wie kommt es, dass nur 6 an sind
Das liegt daran, dass der Mega8 einen 6bit breiten PortB hat.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.