Verständnisfrage Portregister

Gast #2602517
Lesenswert?
• ▲
▼
Hallo,

als Neueinsteiger würde ich gern wissen, ob es möglich ist
ein Portregister gleichzeitig für eine Ausgabe und eine Eingabe
zu nutzen?
Also ich würde gern das untere Nibble als Ausgang und das obere Nibble
des selben Port als Eingang (Tasterabfrage) nutzen.
Kann mir jemand ein kleines Beispiel in Assembler darstellen?

Dank im Voraus
Gruß Willy
Gast #2602553
Lesenswert?
• ▲
▼
Mewa (Gast) schrieb:
>Wenn Du es nichtmal für nötig hälst, die
>verwendete Hardware zu nennen, hast Du wohl auch nicht die notwendige
>Ahnung von Technik.

Sorry, die verwendete Hardware ist ein Atmega8



Fummler schrieb:
>Dann Stell das im entsprechenden Data Direction Register ein.

Würde das denn so funktionieren?

    ldi r16,0b00001111
    out DDRC, r16
    ldi r16,0b11110000
    out DDRC
    sbi PortC, 5
    .
    .
    .
    .
    .
    .
    sbic PINC,PINC5

Gruß Willy
#2602565
Lesenswert?
• ▲
▼
Willy schrieb:

> Würde das denn so funktionieren?
>
>     ldi r16,0b00001111
>     out DDRC, r16
>     ldi r16,0b11110000
>     out DDRC
>     sbi PortC, 5
>     .
>     .
>     .
>     .
>     .
>     .
>     sbic PINC,PINC5
>
> Gruß Willy

Warum denn zweimal etwas in den Register schreiben? Schreib einfach das 
Byte rein welches du möchtest. 0 für Eingang, 1 für Ausgang.

Mach erstmal das AVR-Tutorial und dann komm wieder.
Gast #2602612
Lesenswert?
• ▲
▼
spess53 schrieb:
> Hi>    ldi r16,0b00001111>    out DDRC, r16>    ldi r16,0b11110000>    out 
DDRCMit dem zweiten out überschreibst du aber die erste Einstellung. Oderhast du 
ein anderes Register gemeint?MfG Spess

Hallo Spess53,

in der Tat habe ich hier zuviel geschrieben.

   ldi r16, 0b00001111 ; unteres Nibble Ausgang, oberes Eingang
   out DDRC, r16       ; Werte ins Datenrichtungsregister

Unteres Nibble Bit 0 - 3 ist Ausgang

Jetzt möchte ich auf Bit 4 den Taster Abfragen:

   sbic PINC, PINC4  - wird hier der Taster abgefragt ?

Habe aber auch einen Hinweis auf ein Tutorial erhalten, welches ich
vorher nicht gesehen habe. War wohl eine vorschnell gestellte Frage.
Ich wusste nicht, dass man das Tutorial erst intus haben muss um hier
eine Antwort zu erhalten. Also auf zum Tutorial :-)

Gruß Willy
Gast #2602638
Lesenswert?
• ▲
▼
Hi

>Habe aber auch einen Hinweis auf ein Tutorial erhalten, welches ich
>vorher nicht gesehen habe.

Bedingt richtig. Dein wichtigstes Arbeitsmittel ist aber erst mal das 
Datenblatt deines Controllers und das Instruction Set:

http://www.atmel.com/dyn/resources/prod_documents/doc0856.pdf

>Jetzt möchte ich auf Bit 4 den Taster Abfragen:
>   sbic PINC, PINC4  - wird hier der Taster abgefragt ?

Hängt von der Beschaltung deines Tasters und dem Befehl, der nach 'sbic' 
kommt ab. 'sbic PINC, PINC4' überspringt den nächsten Befehl wenn PINC4 
L ist.

MfG Spess
#2602736
Lesenswert?
• ▲
▼
Willy schrieb:

> Ich wusste nicht, dass man das Tutorial erst intus haben muss um hier
> eine Antwort zu erhalten.

Intus haben müssen ist übertrieben.
Aber wozu sollen wir hier seitenlange Abhandlungen schreiben, die 
bereits im Tutorial (wie wir denken) ausführlich erläutert sind. Und 
dann kommt dazu: Das wird ja nicht die letzte Frage sein.
Gast #2602885
Lesenswert?
• ▲
▼
Hi
Ich habe auch damals, als ich mit µC's gestartet bin mit dem Tuorial 
angefangen und fand es gut. Ok, hab ein wenig Vorkenntnisse, aber 
trotzdem waren die Controller Neuland.
Dann gleich noch einen Hinweis:
Fragst du externe Kontakte ab, bedenke, das diese "prellen". Dein 
Controller ist ziemlich fix und es könnt sein, das er den Wechsel 
Gedrückt/ nicht gedrückt mehrfach auswertet.
Ein weiteres Thema: Schalter nach GND schalten. Das erspart externe 
Pull-Down Widerstände, denn im Controller kannst du interne Pull-Up 
Widerstände zuschalten. Ein "offener" Kontakt hat demnach eine "1" durch 
den Widerstand und betätigt eine "0" durch Kontakt nach GND. Damit du 
später trotzdem mit einem "1" Signal bei gedrücktem Taster arbeiten 
kannst, mußt du die Signallage im µC drehen.
Gruß oldmax

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