:AVR: Fragen und ÜbungenWas unterscheidet nen Microcontroller von einer CPU? Der Controller ist ne CPU + X: I/O Peripherie (Ports, A/D Wandler, D/A Wandler, Serielle Schnittstellen usw..), RAM, ROM, Timer. Man denke an die Anwendungen: Auto, Handy, Waschmaschiene, Tintenpisser, Modem, Fahrrad (Computergesteuerte Gangschaltung).
Erklären Sie den Begriff Befehlszyklus anhand eines Beispiels.
Welche Aufgabe hat ein Assembler? de.wikipedia.org/wiki/Assemblersprache
Worin besteht der Unterschied zwischen CISC und RISC? de.wikipedia.org/wiki/Reduced_Instruction_Set_Computing
Was sind MIPS? Milionen Instruktionen pro Sekunde
Was bewirkt ein Reset? Register und PC werden auf Null gesetzt: Folge Programm beginnt wieder bei Adresse 0
Was bedeuten MSB und LSB? Most Significant Bit -> Das Bit ganz links hat die grösste Wertigkeit...
Wofür wird der Flash-Speicher verwendet? Er ist der Programm- und Konstantdatenspeicher.
Wie oft kann der Flash-Speicher wiederbeschrieben werden? Mindestens 10000 mal.
Warum ist der Speicher 16 Bit organisiert? Weil die Befehle 16 bzw. 32 Bit lang sind.
Wie viele Adressen hat der 2kiB Flash-Speicher? Da er 16 Bit organisiert ist: 2048 Byte / 2 Byte = 1024 Adressen.
Dem Assembler seien schon die 1Byte Register-Variablen a,b,c bekannt.
Erstellen Sie Assembler-Programme für folgende Rechnungen und ermitteln Sie die Anzahl der Takte zur Bearbeitung:
| a = b + c; | b = b -c; | a = a +1; | b = b - 3; | if (b == 0) a = c; |
Gegeben ist folgender Quelltext:
.include "tn2313def.inc"
.def a = R16 ;R16 als Variable a
.def b = R17 ;R17 als Variable b
.def c = R18 ;R18 als Variable c
;Zuweisen von Werten a,b
cp a,b
brmi eva
mov c,a
sub c,b
rjmp gogo
eva:
mov c,b
sub c,a
gogo:
...
|
|
Erstellen Sie ein Programm (Assembler mit PAP) das berechnet:
Wenn a gerade dann b = 1 sonst b = 0.
Lösung anzeigen..Analysieren Sie folgendes Assembler-Programm.
.include "tn2313def.inc" .def tmp = R16 .def merker = R17 init: out DDRD,tmp out PORTD,tmp ldi tmp,0xFF out DDRB,tmp out PORTB,tmp atest: in tmp,PIND andi tmp,0x40 brne btest in merker,PIND andi merker,0x0F btest: in tmp,PIND andi tmp,0x20 brne atest in tmp,PIND andi tmp,0x0F cp tmp,merker brne nein out PORTB,tmp rjmp atest nein: ldi tmp,0xFF out PORTB,tmp rjmp atest |
An Port B (Ausgang) sind die 8 Leuchtdioden (LED) angeschlossen. Eine LED leucht, wenn das jeweilige Bit = 0 ist. BRNE Branch if not equal (to Zero): Sprung, wenn das Ergebnis der letzten Rechenoperation ungleich null ist. Welche Einstellungen werden zwischen Marke "init:" und "atest:" vorgenommen, leuchten die LEDs kurz oder permanent oder gar nicht? PORTB ist Ausgang, alle Pins sind 1; PORTD ist Eingang, PullUps sind aus. LED leuchten 1 Takt lang auf. Erstellen Sie einen PAP für das Programm ab Marke "atest:" Kommentieren Sie den PAP aus b) sinnvoll und beschreiben Sie die Funktion des Programms. Wenn Taste A gedrückt ist, wird X = X3..X0 in merker gespeichert. Optimieren Sie das Programm -es können Befehle geschicktere Befehle verwendet werden. Lösung anzeigen.. |
||||||||||||||||||||||||||||||||||||||||