Gute und ausführliche Erklärung folgender Themenbereiche:
1. Eingang und Ausgang festlegen,
2. Einlesen und Ausgabe,
3. Maskieren,
4. Flags,
5. Tabellen,
6. Unterprogramme,
7. Flankenmerker,
8. A/D-Wandler.
Klausur Übersicht
Eingang und Ausgang festlegen
Eingang
Eingang als Eingang festlegen: „0“ an eines der Datenrichtungsregister (DDRB, DDRC oder DDRD) schicken.
ldi r16,0x00 ; PB0…PB7 als Eingang => 8x „0“.
out ddrb,r16 ; An Datenrichtungsregister senden.
Ausgang
Eingang als Ausgang festlegen: „1“ an einer der Datenrichtungsregister(DDRB, DDRC oder DDRD) schicken.
ldi r16,0xff ; PB0…PB7 als Ausgang => 8x „1“
out ddrb,r16 ; An Datenrichtungsregister senden.
Anschließend muss noch der interne Pullup-Widerstand angelegt werden, um eine definierte „1“ bei geöffnetem Taster anzulegen. Wird der Taster gedrückt liegt eine logische „0“ vor. Der Pullup-Widerstand sorgt also dafür, dass der „verbotene“ Zustand nicht vorkommen kann, sondern es immer einen definierten Zustand gibt. Taster ist also immer ein Öffner.
ldi r16,0xff ; Pullup-Widerstand für PB0…PB7 => 8x „1“
out portb,r16 ; Pullup-Widerstand setzen.
Invertieren der gelesenen Werte
Um die eingelesenen Werte zu invertieren, also bei gedrücktem Taster eine „1“ und bei offenen Taster eine „0“ benutzt man nach dem Einlesen den com-Befehl.
in r16,pinb ; PB0…PB7 nach r16
com r16 ; invertieren der Ausgabe. Jetzt kann der Taster als Schließer behandelt werden.
Einlesen und Ausgabe
Einlesen
Um einen Pin einzulesen benutzt man den in-Befehl. Beim Einlesen spricht man von Pin´s, z.B. pinb.
in r16,pinb ; lesen der Eingangswerte.
Ausgabe
Um etwas an einen Port rauszuschicken benutzt man den out-Befehl. Beim Ausgeben spricht man von PORT´s, z.B. portc.
out portc,r16 ; Ausgangswerte senden. Z.B. zum Einschalten von LEDs Maskieren
Um nur bestimmte Pin´s eines Port herauszufiltern benutzt man „maskieren“. Beim Maskieren macht man eine logische UND-Verknüpfung zwischen den Eingangswerten und der Maske. Die Maske hat an den Stellen, die man herausfiltern möchte eine 1 und an den Stellen, die man weg haben möchte eine 0.
z.B. Maske für PINB0 und PINB2 : 00000101.
ldi r17,0x03 ; die Maske
in r16,pinb ; die Eingangswerte
and r16,r17 ; logische UND-Verknüpfung (Ergebnis in r16)
[...]
- Quote paper
- Sebastian Küsters (Author), 2014, Einfühung in Mikrocontroller-Programmierung mit Assembler, Munich, GRIN Verlag, https://www.grin.com/document/282945
-
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X.