Forum: Mikrocontroller und Digitale Elektronik I/O PORT Maskierung


von 123456 (Gast)


Lesenswert?

Hallo,
ich möchte bei meinem ATtiny26 am PORT A die PINs 5,6,7 als Ausgang 
nutzen und die PINs 1,2 und 4 als Eingang.

Wie kann ich nun die PORT PINs 5,6 und 7 beschreiben, ohne das die 
anderen PINs beeinflusst werden?

Normal geht sowas ja mit der ODER verknüpfung, aber ich kann den PORTA 
leider nicht ODER mit z.B. R16 verküpfen.

or PORTA, r16

was muss ich tun?

von spess53 (Gast)


Lesenswert?

Hi

>Wie kann ich nun die PORT PINs 5,6 und 7 beschreiben, ohne das die
>anderen PINs beeinflusst werden?

Port einlesen
Bits verändern
Port augeben

oder cbi/sbi benutzen.

MfG Spess

von 123456 (Gast)


Lesenswert?

> oder cbi/sbi benutzen.

Daran hab ich auch gedacht, aber es scheint mir sehr aufwändig jede LED 
einzeln Ein- bzw. Aus zu schalten...

> Port einlesen
> Bits verändern
> Port augeben

So möchte ich vorgehen, ja. Aber ein PORT teilt sich ja Ein und 
Ausgabe...
Oder könntest du mir das genauer erklären, was du damit sagen möchtest.

von spess53 (Gast)


Lesenswert?

Hi

>Oder könntest du mir das genauer erklären, was du damit sagen möchtest.

in r16, PortA         ; Port einlesen
andi r16, 0b00011111  ; Bit 5,6,7 löschen
ori r16,0bxyz00000    ; Bits setzen
out PortA,r16

MfG Spess

von Karl H. (kbuchegg)


Lesenswert?

123456 schrieb:
>> oder cbi/sbi benutzen.
>
> Daran hab ich auch gedacht, aber es scheint mir sehr aufwändig jede LED
> einzeln Ein- bzw. Aus zu schalten...

na ja. übertreib mal nicht.
Aufwändig geht anders. Äufwändig sind 4500 Zeilen Source Code zur 
Bestimmung, wie genau der Verputz geometrisch in eine Fensterlaibung 
hineingezogen werden muss und welches Volumen sich daraus ergibt.
3 LED einschalten sind 3 Anweisungen.

>
>> Port einlesen
>> Bits verändern
>> Port augeben
>
> So möchte ich vorgehen, ja. Aber ein PORT teilt sich ja Ein und
> Ausgabe...

ja und?

> Oder könntest du mir das genauer erklären, was du damit sagen möchtest.

Port in Register einlesen
gewünschte Bits setzen bzw. löschen (mittels OR oder AND, je nachdem)
Register wieder zurückschreiben

solltest du eigentlich hinkriegen.

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
Noch kein Account? Hier anmelden.