www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik assembler befehl


Autor: Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kann ich denn attiy2313 in Assembler den Befehl geben PD5 auf 5V zu 
legen? Versehe leider das Tuturial nicht...
.include "m8def.inc"
 
         ldi r16, 0xFF
         out DDRB, r16     ; Alle Pins am Port B durch Ausgabe von 0xFF ins
                           ; Richtungsregister DDRB als Ausgang konfigurieren
         ldi r16, 0x00
         out DDRD, r16     ; Alle Pins am Port D durch Ausgabe von 0x00 ins
                           ; Richtungsregister DDRD als Eingang konfigurieren
loop:
         in r16, PIND      ; an Port D anliegende Werte (Taster) nach r16 einlesen
         out PORTB, r16    ; Inhalt von r16 an Port B ausgeben
         rjmp loop         ; Sprung zu "loop:" -> Endlosschleife 

das versteh ich ja noch aber wie geht das jetzt für PD5?
Simon

Autor: Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldigung
.include "m8def.inc"         ; Definitionsdatei für den Prozessortyp einbinden
 
         ldi r16, 0xFF       ; lade Arbeitsregister r16 mit der Konstanten 0xFF
         out DDRB, r16       ; Inhalt von r16 ins IO-Register DDRB ausgeben
 
         ldi r16, 0b11111100 ; 0b11111100 in r16 laden
         out PORTB, r16      ; r16 ins IO-Register PORTB ausgeben
 
ende:    rjmp ende           ; Sprung zur Marke "ende" -> Endlosschleife 

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann kein bisschen Assembler aber das weiß ich dann doch^^

Also:

ldi r16, 0xFF
out PORTB, r16


heißt das er in das Register den Dezimalwert 255 lädt und danach das auf 
das Portregister PORTB gibt. Heißt alle Pins von PORTB werden auf 5V 
gesetzt.
Jetzt musst du nur FF durch deinen wert ersetzen. Du kannst es auch 
Binär eingeben also 0b11111111 z.B.

P.S.: Du musst natürlich PORTB voher auf Ausgang setztn mit DDRB

Gruß

Robin T.

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups das was ich geschrieben habe steht da ja eigentlich schon. Mmmh na 
gut. PD5 setzt du folgendermaßemn:

ldi r16, 0xFF
out DDRD, r16

ldi r16, 0b00100000
out PORTD, r16


Gruß

Robin T.

Autor: Tim T. (tim_taylor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch wenn ich sowas sonst nicht beantworte, hab einen guten Tag:
.include "????def.inc" ; Definitionsdatei für den Prozessortyp einbinden, die kannst du selber suchen.

ldi r16, 0x10  ; lade Arbeitsregister r16 mit der Konstanten 0x10 = 0b00010000
out DDRD, r16  ; Inhalt von r16 ins IO-Register DDRD ausgeben
 
ldi r16, 0b00010000 ; 0b00010000 in r16 laden
out PORTD, r16      ; r16 ins IO-Register PORTD ausgeben
 
ende:    rjmp ende ; Sprung zur Marke "ende" -> Endlosschleife 

DDRD ist das Data Direction Register für Port D.
Dort wird mittgeteilt das Pin 5 des Ports als Ausgang verwendet werden 
soll (0b00010000=0x10).

Mit out PORTD, r16 wird noch der Pin selber auf Vcc gesetzt da sich der 
Wert 0b00010000 in r16 befindet.

Btw: Die 2. Anweisung (ldi r16, 0b00010000 ; 0b00010000 in r16 laden) 
kann man weglassen da dieser Wert eh noch im r16 durch die 1. Anweisung 
steht.

Autor: Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Danke!
Hab das jetzt verstanden.
Simon

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im letzten Beitrag habe ich PORTD verwendet, habe am Anfang nur den Code 
mit DDRB, PORTB, und sowas gelesen, dass er PD5 setzen wollte hab ich 
erst überlesen *schäm*^^

Allerdings hast du glaube ich PD4 auf 1 gesetzt^^

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.