Title: KA1_1819
Course: A. Technische Informatik II

Feedback shared by this category's questions, if right: Die Antwort ist richtig
Feedback shared by this category's questions, if partly right: Die Antwort ist teilweise richtig.
Feedback shared by this category's questions, if wrong: Die Antwort ist falsch

Q: Ordnen Sie richtig zu.
- 75 | 01001011
- 10111101b | 189
- 213 | 11010101b
- 00111100b | 60
- 99 | 01100011b
- 10001000b | 136

Q: Wie lautet das Ergebnis der Operation: mul AB wenn zuvor A=133 und B=99 waren?
- 13167
- B=33h, A=6Fh
- 336fh
- 0011001101101111
A: 13167; B=33h, A=6Fh; 336fh; 0011001101101111

Q: Das RAM hat folgenden Inhalt
Adresse  Wert
20h         17h
21h         34h
22h         F3h

R0 hat den Inhalt 22h
- 22h wird in den Accu gespeichert
- 17h wird in den Accu gespeichert
- F3h wird in den Accu gespeichert
- 21h wird in den Accu gespeichert
A: F3h wird in den Accu gespeichert

Q: Welche Operanten sind an der Stelle xxx möglich: mov xxx,A
- @A
- @R3
- @R0
- @R1
- @R2
A: @R0; @R1

Q: mov R0,#7Fh
mov A,#55h
Wdh:
mov @R0,A
dec R0
cjne R0,,#10h,Wdh
- R0 bekommt zuerst den Wert 7Fh, dann den Wert 55h, und das in einer Schleife
- Die Zahl 55h wird in alle Speicherzellen des RAM von Addresse 11h bis 7Fh eingespeichert
- Das RAM von 11h bis 7Fh wird getestet
- Die Zahl 55h wird in alle Speicherzellen des Codespeichers von Addresse 11h bis 7Fh eingespeichert
A: Die Zahl 55h wird in alle Speicherzellen des RAM von Addresse 11h bis 7Fh eingespeichert

Q: Wählen Sie die Instruktionen mit korrekter Systax aus.
- mov @R0,R1 (2. Operant darf kein Register sein)
- mov @R0,P1
- mov @R1,A
- mov @R2,A (@R2 geht nicht (nur R0 und R1))
- mov @R0,#55h
- mov #55h,@R1
- mov @R0,5
A: mov @R0,P1; mov @R1,A; mov @R0,#55h; mov @R0,5

Q: Welchen Accuwert hat folgende Instruktion zur Folge, wenn der Wert im Accu zuvor 01010101b war:

anl A,#0F0h
- 5
- 50h
- 0F5h
- 05Fh
A: 50h

Q: Welchen Wert weist der Accu nach folgender Instruktion auf, wenn sein Wert zuvor 10101010b war:

orl A,#0Fh
- 0Fh
- 0AFh
- 0A0h
- 0Ah
A: 0AFh

Q: Welchen Wert weist der Accu nach folgender Instruktion auf, wenn sein Wert zuvor 01010101b betrug:

xrl A,#0F0h
- 0AAh
- 05Ah
- 0A5h
- 055h
A: 0A5h

Q: Was ist erlaubt?
- orl 5,#5
- orl R0,#5
- xrl A,6
- orl A,#78
- anl #5,A
- anl A,R4
- xrl a,@R0
- xrl R1,A
A: orl 5,#5; xrl A,6; orl A,#78; anl A,R4; xrl a,@R0

Q: Was bewirkt der Befehl rl a wenn der Accu den Wert 11110000 aufwies?
- 00000111b
- 1110000b
- 01111000b
- 11100001b
A: 11100001b

Q: Was bewirkt der Befehl rlc A wenn der Accu den Wert 11110000b aufwies und c=0 war?
- C=0 Accu=00001111b
- C=1 Accu=11100001b
- C=1 Accu=11100000b
- C=0 Accu=11100000b
A: C=1 Accu=11100000b

Q: Welches Ergebnis hat der Befehl rr a wenn im Accu zuvo der Wert 00001111b stand?
- 10000111b
- 00000111b
- 00011110b
- 01111000b
A: 10000111b

Q: Welche Wirkung hat der Befehl rrc A wenn im Accu zuvor 00001111b stand und C=1 war
- C=1 Accu = 00000111b
- C=1 Accu = 10000111b
- C=0 Accu = 10000111b
- C=1 Accu = 10001111b
A: C=1 Accu = 10000111b

Q: Setzen Sie die drei unteren Bits des Accus auf Null.
- anl A,#00000111b
- xrl A,#11111000b
- orl A,#11111000b
- anl A,#11111000b
A: anl A,#11111000b

Q: setzen Sie die 3 unteren Bits von P1 auf 1
- xrl P1,#00000111b
- anl P1,#00000111b
- orl P1,#00000111b
- orl P1,#11111000b
A: orl P1,#00000111b

Q: Mit welcher Instruktion wird ein Unterprogramm aufgerufen?
- ljmp
- sjmp
- djnz
- jb
- lcall
A: lcall

Q: Mit welcher Instruktion endet jedes Unterprogramm?
- back
- ret
- undo
- return
- ljmp
A: ret

Q: Wie beginnt jedes Unterprogramm?
- ljmp Up
- Unterprogrammname:
- acall
- ret
A: Unterprogrammname:

Q: Schreiben Sie ein Unterprogramm, das:
Den Inhalt des Accus auf dem Stack sichert,
Den Accu mit 55h lädt,
Den Accu herunterzählt
Den gesicherten Wert des Accus zurückspeichert
Aus dem Unterprogramm zurückkehrt.
- 1 | Unterprogramm:
- 2. | push acc
- 3. | mov A,#55h
- 4. | w1: djnz A,w1
- 5. | pop acc
- 6. | ret

Q: Welche Instruktion schiebt das Register R0 auf den Stack?
- push R0
- pop R0
- push 0
- pop 0
A: push 0

Q: Welche Instruktion schiebt den Accu auf den Stack?
- push A
- pop A
- push acc
- pop acc
A: push acc

Q: Port P2 soll auf den Stack geschoben werden. Welche Instruktion ist richtig?
- pusch P2
- pop P2
- push P2
- push P2.0
A: push P2

Q: Welche Instruktion holt R0 vom Stack?
- push 0
- pop 0
- push R0
- pop R0
A: pop 0

Q: Welche Instruktion holt einen Zahlenwert vom Stack und speicherrt ihn im Accu?
- pop acc
- push acc
- pop A
- push A
A: pop acc

Q: Wo wird der Stack angelegt?
- Im externen RAM
- Im Codespeicher
- Im ROM
- Im internen RAM
A: Im internen RAM

Q: Welchen Zweck hat der Stack?
- lokale Variablen von Unterprogrammen speichern
- Rücksprungadressen speichern
- Register und Speicherinhalte zwischenspeichern, damit die Register für die Unterprogramme verwendet werden können
- Programme dauerhaft speichern
A: lokale Variablen von Unterprogrammen speichern; Rücksprungadressen speichern; Register und Speicherinhalte zwischenspeichern, damit die Register für die Unterprogramme verwendet werden können

Q: Wozu dient der Stackpointer SP?
- Zeigt an, wie viele Bytes auf dem Stack gespeichert wurden.
- Register, in dem immer die höchste benutzte RAM-Adresse des Stacks gespeichert ist: Adressspointer
- Zeigt mit 1 an, dass der Stack verfügbar ist
- allgemeines Speicherregister ohne spezielle Funktion bei Assemblerprogrammen
A: Register, in dem immer die höchste benutzte RAM-Adresse des Stacks gespeichert ist: Adressspointer

Q: Welche Speicherzellen können auf den Stack geschoben werden?
- Alle Speicherzelle des internen RAMs
- nur die Register R0 .. R7
- der Accu mit push A
- nur die Ports
A: Alle Speicherzelle des internen RAMs

Q: Am Anfang ist R0 = 55h und R1 = 77h

Welche Werte haben R0 und R1 nach folgendem Programm?

push 0

push 1

pop 0

pop 1
- R0 = 55h und R1 = 77h
- R0 = 77h und R1 = 55h
- R0 = 00h und R1 = 00h
- R0 = 55h und R1 = 55h
A: R0 = 77h und R1 = 55h

Q: In welcher Reihenfolge sollten die pop-Anweisungen am Ende eines Unterprogrammes angeordnet werden?
- In gleicher Reihenfolge wie die push Anweisungen am Anfang des Unterprogramms
- In umgekehrter Reihenfolge wie die push Anweisungen am Anfang des Unterprogramms
A: In umgekehrter Reihenfolge wie die push Anweisungen am Anfang des Unterprogramms

Q: Welcher Ablauf ergibt sich bei einer lcall-Anweisung?
- 1. | Stackpointer wird um 1 erhöht,
- 2. | Das niederwertige Byte der Adresse der folgenden Instruktion wird in den Stack übertragen
- 3. | Der Stackpointer wird erneut erhöht
- 4. | Das höherwertige Byte der Adresse der folgenden Instruktion wird in den Stack übertragen
- 5. | Das Programm verzweit in das Unterprogramm

Q: Welcher Ablauf ergibt sich bei einer ret-Anweisung?
- 1. | Der Inhalt der Speicherzelle auf die der SP zeigt wird in das höherwertige Byte des PC zurückgeladen
- 2. | Der SP wird um 1 verringert
- 3. | Der Inhalt der Speicherzelle auf die der SP zeigt wird in das niederwertige Byte des PC zurückgeladen
- 4. | Der SP wird nochmal um 1 verringert
- 5. | Rückverzweigung ins Hauptprogramm

Q: Ein Unterprogramm beginnt folgendermaßen:

Up:
push acc
push 0
push 1

...

Wie viele pop-Anweisungen benötigt das Unterprogramm am Ende?
A: 3

Q: Wie endet das Unterprogramm?

up:
push 0
push 1
push acc

...
- 1. | pop acc
- 2. | pop 1
- 3. | pop 0
- 4. | ret

Q: Wodurch wird ein Interrupt ausgelöst?
- Durch ein Unterprogrammaufruf
- Durch einen branch-Befehl
- Automatisch durch ein Ereignis in der Hardware
- Durch ein jb-Befehl
A: Automatisch durch ein Ereignis in der Hardware

Q: Was versteht man unter einer Interruptserviceroutine (ISR)?
- Die Initialisierung eines Interrupts
- Ein Unterprogramm, das bei einem Interrupt automatisch aufgerufen wird.
- Ein Dienstprogramm, zur Überwachung des Prozessorstatus
- Programm in der Programmiersprache "Service"
A: Ein Unterprogramm, das bei einem Interrupt automatisch aufgerufen wird.

Q: Wie reagiert der Mikrocontroller auf einen Interrupt?
- Er setzt die Taktfrequenz hoch
- Er unterbricht das laufende Programm, führt die ISR aus und setzt danach das untrbrochene Programm fort
- Er verzweigt am Ende der Hauptschleife in ein Unterprogramm
- Er führt einen Neustart durch
- Er fährt herunter
A: Er unterbricht das laufende Programm, führt die ISR aus und setzt danach das untrbrochene Programm fort

Q: Welche Ports können Interrupts auslösen?
- PA10
- PA6
- PB0
- PC13 und viele weitere
- P0.0
A: PA10; PA6; PB0; PC13 und viele weitere

Q: Wie wird das Interruptsystem insgesamt eingeschaltet?
- setb EA
- setb EB
- setb EX0
- setb FTSR10
- clr RTSR5
A: setb EA

Q: Wo im Programm macht der Mikrocontroller weiter, wenn die Interruptserviceroutine abgearbeitet ist?
- Am Anfang
- Am Ende
- Dort wo unterbrochen wuerde
- Adresse 0003h
A: Dort wo unterbrochen wuerde

Q: Wie wird Interrupt Int0 freigegeben?
- setb RTSR0
- setb EA
- setb FTSR0
- setb EX0
A: setb EX0

Q: Welche Auswirkung hat das Eintreten eines Interruptereignisses auf das Hauptprogramm?
- keine
- wird unterbrochen
- wird abgebrochen
A: wird unterbrochen

Q: Nennen Sie 2 Vorteile von Interupts
- Schnellere und kürzere Programme, da Portbits nicht zyklisch abgefragt werden müssen (Polling)
- Schnellere Reaktion auf Ereignisse
- Weniger Programmierfehler
- Berechnungen wie add, sub, mul, div werden schneller ausgeführt
A: Schnellere und kürzere Programme, da Portbits nicht zyklisch abgefragt werden müssen (Polling); Schnellere Reaktion auf Ereignisse

Q: Mit welcher Instruktion endet jede ISR? (Assembler)
- return
- setb PBx bx lr
- ljmp
- lcall
A: setb PBx bx lr

Q: Wie wird die ISR:
isr:
...
setb PB10
bx lr

dem externen Interrupt 10 (PA10) zugeordnet?
- setIsr isr,ex10Vector
- setIsr ex10Vector,isr
- call isr
- b isr
A: setIsr isr,ex10Vector

Q: Initialisieren Sie Ext Int 10 (PA10)
- Int 1 freigeben | setb EX10
- Int 10 auf fallende Flanke konfigurieren | setb FTSR10
- Interruptsystem einschalten | setb EA
- Interrupt zuordnen | setIsr isr,ex10Vector

Q: Bei welcher Speicheradresse startet die ISR von P3.3 (Int1) ?
- 0000h
- 0003h
- 000bh
- 0013h
A: 0013h

Q: Warum starten Programme die Interrupts verwenden mit einem ljmp
- Weil der Programmspeicher auf das RAM gemappt wurde
- Weil nach nur 3 Bytes, also ab Adresse 0003h schon die Interrupt-Service-Routinen beginnen
- Um ins Hauptprogramm zu verzweigen
- Damit eine höhere Codedichte erreicht wird
A: Weil nach nur 3 Bytes, also ab Adresse 0003h schon die Interrupt-Service-Routinen beginnen; Um ins Hauptprogramm zu verzweigen

Q: Wie unterscheidet sich eine ISR von einem normalen Unterprogramm?
- gar nicht
- Es werden spezielle Instruktionen benötigt um den Speicher zu konfigurieren
- Bei einer ISR muss mit setb PRx das Anforderungsbit zurückgesetzt werden
- Eine ISR kann maximal 37 Instruktionen beinhalten, ein Unterprogramm ist nicht begrenzt
A: Bei einer ISR muss mit setb PRx das Anforderungsbit zurückgesetzt werden

Q: Was bewirkt ein Interrupt beim Stackpointer?
- Nichts
- Wird insgesammt um 2 erhöht
- Wird um 1 erhöht
- Wird um 2 erniedrigt
A: Wird insgesammt um 2 erhöht

Q: Was bewirkt ein Interrupt beim Stack?
- Nichts
- Die Adresse des Interruptvektors wird auf dem Stack gespeichert, Low-Byte der Vektoradresse zuerst.
- Die Adresse der Instruktion, die als nächstes nach dem Interrupt ausgeführt werden soll, wird auf dem Stack gespeichert. Lowbyte der Adresse zuerst.
- Die Sprungadresse im USER-Mode wird in den Datapointer transferiert.
A: Die Adresse der Instruktion, die als nächstes nach dem Interrupt ausgeführt werden soll, wird auf dem Stack gespeichert. Lowbyte der Adresse zuerst.

Q: Was bewirkt die reti-Instruktion beim Stackpointer?
- Der Stackpointer wird um 2 verringert
- Der Stackpointer wird um 2 erhöht
- Nichts
- Der Stackpointer wird um 1 verringert
A: Der Stackpointer wird um 2 verringert

Q: Beschreiben Sie das Zusammenwirken von reti und Stack.
- Accu und R1 werden vom Stack geholt
- Die Vektoradresse des Interrupts wird auf dem Stack gespeichert (Lowbyte zuerst)
- Beides hat nichts miteinander zu tun
- Bei der reti-Instruktion wird die Rücksprungadresse nach dem Interrupt vom Stack in den Programcounter geladen.
A: Bei der reti-Instruktion wird die Rücksprungadresse nach dem Interrupt vom Stack in den Programcounter geladen.

Q: Wie findet der Mikrocontroller nach einem Interrupt ins Hauptprogramm zurück?
- Beim Interrupt wird die Rücksprungadresse auf dem stack gespeichert. Bei reti wird diese Adresse in den PC zurückgeladen und an dieser Stelle das Programm fortgesetzt.
- Die Rücksprungadresse wird im Accu gespeichert, weshalb die erste Instruktion der ISR immer push acc lauten muss.
- Der Mikrocontroller findet immer wieder ins Hauptprogramm zurück, da immer automatisch ein Reset ausgelöst wird.
- Am Ende der ISR steht ein ljmp Hauptprogramm
A: Beim Interrupt wird die Rücksprungadresse auf dem stack gespeichert. Bei reti wird diese Adresse in den PC zurückgeladen und an dieser Stelle das Programm fortgesetzt.

Q: Erläutern Sie den genauen Interruptablauf.
- 1. | Laufende Instruktion wird beendet.
- 2. | Rücksprungadresse wird auf dem Stack gespeichert, Stackpointer wird um 2 erhöht
- 3. | ISR startet bei festgelegter Adresse (Vektoradresse)
- 4. | ISR wird abgearbeitet
- 5. | ISR endet mit reti-Instruktion
- 6. | Rücksprungadresse wird vom Stack in den Prgrammcounter transferiert, Stackpointer wird um 2 erniedrigt.

Wahr Falsch Fragen zu Prioritäten

Q: Erhöhen Sie die Priorität von Int0
- setb PX0L
- clr PX0L
- setb PX1L
- setb PX1H (Nicht Bitadressierbar)
A: setb PX0L

Q: Wenn Int0 und Int1 gleichzeitig auftreten, welche ISR wird zuerst ausgeführt?
- 1. Int0 2. Int1
- 1. Int1 2. Int0
- beide gleichzeitig
- Zufall
A: 1. Int0 2. Int1

Q: Wie können die Prioritäten der Interrupts festgelegt werden?
- Mit den Bits EX0, EX1
- setb EA
- Mit den Bits in den Registern IPL0 und IPH0
- Setb IE0 und setb IE1
A: Mit den Bits in den Registern IPL0 und IPH0

Q: Wie wird Timer0 eingeschaltet?
- clr TF0
- mov TMOD,#1
- setb TF0
- setb TR0
A: setb TR0

Q: Wie viele Bit hat der Zähler timer0 in Mode 1?
A: 16

Q: Bis zu welchem Zahlenwert konn Timer0 in Mode 1 zählen?
A: 65535

Q: Wie wird Timer0 in die 16Bit Betriebsart gebracht?
- setb TR0
- mov TMOD,#1
- clr TF0
- setb TF0
A: mov TMOD,#1

Q: Wann wird das Überlaufbit TF0 1?
- Wenn Timer 0 von 65535 auf 0 überläuft
- clr TF0
- setb TR0
- mov TMOD,#1
A: Wenn Timer 0 von 65535 auf 0 überläuft

Q: Mit welcher Frequenz arbeitet Timer0 bei uns, Angabe in MHZ
A: 2

Q: Welche Periodendauer weist der Taktgenerator von Timer0 bei uns auf? Angabe in Mikrosekunden
A: 0.5

Q: Welche Periodendauer weist der Taktgenerator von Timer0 bei uns auf? Angabe in Nanosekunden ns.
- 500
- 50
- 5
- 0,5
A: 500

Q: Wie lauteten die Instruktionen, um auf ein einen Überlauf von Timer0 zu warten?
- w1: jb TF0,w1
- w1: jnb TF0,w1
- w1: jnb TR0,w1
- w1: jb TR0,w1
A: w1: jnb TF0,w1

Q: Nach welcher Zeit findet bei uns in Timer0 in Mode 1 ein Überlauf statt? Angabe in s
A: 0.0327675 (± 5.0E-7)

Q: Nach welcher Zeit findet bei uns ein Überlauf von Timer0 statt (Mode1)? Angabe in ms
- 3,2768 ms
- 32,768 ms
- 327,68 ms
- 3276,8 ms
A: 32,768 ms

Q: Bei welcher Adresse (Einsprungadresse) startet die ISR von Timer 0?
- 0003h
- 000bh
- 0013h
- 001bh
A: 000bh

Q: Bei welcher Adresse (Einsprungadresse) startet die ISR von Timer 1?
- 0003h
- 000bh
- 0013h
- 001bh
A: 001bh

Q: Mit welcher Anweisung wird der Timer0 Interrupt einzeln freigegeben?
- setb EX0
- setb EX1
- setb ET0
- setb ET1
A: setb ET0

Q: Mit welcher Instruktion wird der Timer1 Interrupt einzeln freigegeben?
- setb EX0
- setb EX1
- setb ET0
- setb ET1
A: setb ET1

Q: Berechnen Sie den Reloadwert für ein Intervall von 25ms in Mode 1 und MZ=0,5µs
- 3CB0h
- 1000h
- A563h
- C350h
A: 3CB0h

Q: Berechnen Sie den Relaodwert für eine Timerintervall von 10ms bei MZ=0,5ms.

Geben Sie den Reloadwert als Dezimalzahl an.
A: 45536

Q: Beim Timer wurde ein Reloadwert 5000h eingestellt. MZ  beträgt 0,5µs.

Wie lange ist das Timerintervall
- 20480µs
- 10240µs
- 45056µs
- 22528µs
A: 22528µs

Q: Eine Periodendauer von 2ms entspricht welcher Frequenz in Hz?
A: 500

Q: Eine Periodendauer von 500µs entspricht welcher Frequenz in Hz?
A: 2000

Q: Eine Frequenz von 50kHz entspricht welcher Periodendauer in µs?
A: 20

Q: Eine Frequenz von 4MHz entspricht welcher Periodendauer in µs?
A: 0.25

Q: Wie versetzen Sie Timer 0 in den 8Bit-Autoreload-Mode
- mov TMOD,#8
- mov TMOD,2
- mov TMOD,#2
- mov TMOD,#1
A: mov TMOD,#2

Q: Welche Zyklusszeit in µs ergibt sich mit TH0 = 100 und MZ=0,5µs?
A: 78

Q: Sie benötigen eine Zykluszeit von T=60µs. wie stellen Sie TH0 bei MZ=0,5µs ein?
A: 136

Q: Sie benötigen eine Zykluszeit von T=25µs. wie stellen Sie TH0 bei MZ=0,5µs ein?
A: 206

Q: Eine Frequenz f=5kHz soll an P1.0 erzeugt werden. Verwenden Sie den 8Bit-Autoreload-Mode. MZ=0,5µs.

Welchen Wert stellen Sie bei TH0 ein?
A: 56

Q: Sie benötigen eine Wartezeit von 20ms. Sie verwenden Timer0 im 16Bit Mode mit MZ=0,5µs.

Welche Werte tragen Sie bei TH0 und TL0 ein?
- TH0=9Ch, TL0=40h
- TL0=63h, TH0=0C0h
- TH0=63h, TL0=0C0h
- TL0=9Ch, TH0=40h
A: TH0=63h, TL0=0C0h

Q: Für eine Wartezeit von 5s haben Sie die Reloadwerte TH0=3Ch und TL0= 0B0h festgelegt. MZ beträgt 0,5µs.

Wie viele Durchläufe sind erforderlich?
A: 200

Q: Programmieren Sie eine Wartezeit von 1s.
- 1 | warte1s:
- 2 | setb TR0
- 3 | mov R0,#40
- 4 | w2: mov TH0,#3Ch
- 5 | mov TL0,#0B0h
- 6 | clr TF0
- 7 | w1: jnb TF0,w1
- 8 | djnz R0,w2
- 9 | clr TR0
- 10 | ret

Q: Für eine Wartezeit von 3 Sekunden wurde der Durchlaufzähler mit dem Wert 100 programmiert. MZ beträgt 1µs.

Welche Reloadwerte werden für TH0 und TL0 benötigt?
- TH0=3Ch, TL0=0B0h
- TL0=8Ah, TH0=0D0h
- TH0=8Ah, TL0=0D0h
- TH0 =75h, TL0=30h
A: TH0=8Ah, TL0=0D0h

Q: Welche Betriebsart wählen Sie für lange Wartezeiten?
- Mode 0
- Mode 1
- Mode 2
- Mode 3
A: Mode 1

Q: Wodurch können sich bei langen Wartezeiten, trotz Timer, Ungenauigkeiten ergeben?
- Zeit für die Instruktion w1: jnb TF0,w1
- Zeit für das Nachladen der Timerregister TH0 und TL0
- Der Timer verzählt sich
- Der Timer zählt rückwärts
A: Zeit für die Instruktion w1: jnb TF0,w1; Zeit für das Nachladen der Timerregister TH0 und TL0