Anfänger Frage

OP #1720837
Lesenswert?

Hallo,
ich arbeite mich gerade in MyAVR ein und hänge gerade beim auswählen von 
den Ausgangspins. Ich hoffe das ich die Fachausdrücke alle richtig 
schreibe :-)

Ich will Pin 0 und Pin 1 von Port B einschalten. Woher weiß ich und 
MyAVR was Pin 0 und 1 ist? Im Moment schalte ich Pin 0 von Port B und C 
ein. Aber wie sehe ich das es jeweils Pin 0 ist? Das "sbi DDRB , 0" 
bedeutet das es ein Ausgang ist

main:  ldi  r16,lo8(RAMEND)
    out  SPL , r16
    ldi  r16 , hi8(RAMEND)
    out  SPH , r16
    sbi DDRB , 0
    sbi DDRC , 0
      ;Hier Init-Code eintragen.

mainloop:  ldi  r16 , 0b00000001 ;LED ON
    out PORTB , r16
    out PORTC , r16
    rjmp  mainloop

Kann mir da jemand helfen?
Gast #1721369
Lesenswert?

Achim F. schrieb:

> Ich will Pin 0 und Pin 1 von Port B einschalten. Woher weiß ich und
> MyAVR was Pin 0 und 1 ist?

Aus dem Datenblatt?

> Im Moment schalte ich Pin 0 von Port B und C ein. Aber wie sehe ich das
> es jeweils Pin 0 ist?

Was meinst du damit?

> Das "sbi DDRB , 0"
> bedeutet das es ein Ausgang ist

Ja.

> main:  ldi  r16,lo8(RAMEND)
>     out  SPL , r16
>     ldi  r16 , hi8(RAMEND)
>     out  SPH , r16
>     sbi DDRB , 0
>     sbi DDRC , 0
>       ;Hier Init-Code eintragen.
>
> mainloop:  ldi  r16 , 0b00000001 ;LED ON
>     out PORTB , r16
>     out PORTC , r16
>     rjmp  mainloop
>
> Kann mir da jemand helfen?

Ich verstehe dein Problem nicht.
OP #1721446
Lesenswert?

Wenn ich jetzt z.B. den Port B.1 einschalten will, was muss ich für 
einen Code eingeben?
Ich verstehe nicht warum Port B.0 eingeschaltet wird wenn ich DDRB / 
PORTB" eingebe. Beim PORTB gibt es ja 6 Pins...
In einem anderen Beispiel wird "0b00011100" in ein Register geladen und 
Pin 2-4 werden eingeschaltet - aber warum?
#1721447
Lesenswert?

Deine Fragen sind alle im AVR-Tutorial beantwortet.

Kurz
Hier stehts doch
     sbi DDRB , 0

sbi:          set Bit
DDRB          wo? im DDR Register für den Port B
welches Bit:  Bit 0

Alles zusammen: Das Bit 0 im DDRB Register wird auf 1 gesetzt.
Und die Hardware interpretiert das jetzt so, dass dadurch Bit 0 vom Port 
B auf Ausgang programmiert werden soll

> In einem anderen Beispiel wird "0b00011100" in ein Register geladen
> und Pin 2-4 werden eingeschaltet - aber warum?

     0b00011100
       ^^^^^^^^
       ||||||||
       |||||||+--- Bit 0
       ||||||+---- Bit 1
       |||||+----- Bit 2
       ||||+------ Bit 3
       |||+------- Bit 4
       ||+-------- Bit 5
       |+--------- Bit 6
       +---------- Bit 7

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