Title: Standard für MikroSturm
Course: A. Technische Informatik II

Standardkategorie für Fragen, die im Kontext 'MikroSturm' freigegeben sind.

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: Welche Funktion hat die ALU
- Ablauf steuern
- Berechnungen ausführen
- Daten speichern
- Adresse weiterzählen
A: Berechnungen ausführen

Q: Ein Mikrokontrollerprogramm besteht aus einer Folge von Zahlen.
- Wahr (Aus einer Folge von Zahlen, dem sogennannten Maschinenprogramm)
- Falsch (Mikrocontroller kennen nur Binärzahlen....)
A: Wahr

Q: In welche drei Phasen lässt sich die Abarbeitung eines Maschinenbefehls unterteilen?
- Eingabe Verarbeitung Ausgabe
- Holen Dekodieren Ausführen
- Lesen Rechnen Schreiben
- read write do
A: Holen Dekodieren Ausführen

Q: Welches Register wird bei Berechnungen als Operant und als Ergebnis verwendet?
- R0
- R7
- PC (Programmcounter)
- B
- Accu
A: Accu

Ordnen Sie die Blöcke richtig

Q: Welche Befehlsarten können unterschieden werden?
- Datentransportbefehle
- Arithmetische und logische Befehle
- Befehle zur Steuerung des Programmablaufs
- Grafikbefehle
- Befehle zur Windowsteuerung
A: Datentransportbefehle; Arithmetische und logische Befehle; Befehle zur Steuerung des Programmablaufs

Q: Ordnen Sie zu
- add A,R0 | Arithmetikbefehl
- mov A,R1 | Datentransportbefehl
- ljmp start | Programmsteuerbefehl

Q: Bringen Sie die Befehlsphasen in die ricchtige Reihenfolge
- 1 | Befehl holen
- 2 | Befehl dekodieren
- 3 | Befehl ausführen

Q: Bei welcher Speicheradresse beginnt das Maschinenprogramm
A: 0

Q: Wie viele Datenleitungen hat der 8051
A: 8

Q: Wie viele Adressleitungen hat der 8051?
A: 16

Q: Ordnen Sie die Instruktionen in der richtigen Reihenfolge, so dass das Grundgerüst eines Assembleprogramms entsteht.
- 1 | org 0
- 2 | init: ;Sprungmarke (Label)
- 3 | mov P1,#11111111b ; Voreinstellung: Alle LEDs aus
- 4 | Schleife:
- 5 | mov P1,P2 ;Port 2 nach Port 1 kopieren
- 6 | ljmp Schleife
- 7 | end

Q: Mit welchem Befehl wird der Zahlenwert 10101010b auf Port 1 geschrieben?
- mov P1,#10101010b
- mov #10101010,P1
- mov P1,10101010
- mov P1,#10101010
A: mov P1,#10101010b

Q: Mit welchem Befehl kann man  Bit 1 von Port 1 auf 0 zurücksetzen?
- mov P1.1,#0
- mov P1.1,0
- clr P1.1 (setb P1.1)
- clr P1
A: clr P1.1

Q: Welche Bedeutung hat das #-Zeichen in dem Befehl: mov A,#17
- Der Accu erhält seinen Wert aus der Speicherzelle mit der Adresse 17, direkte Adressierung
- Der Accu wird mit dem Zahlenwert 17 geladen, unmittelbare Adressierung (immediate)
- Der Inhalt des Accus wird in die Speicherstelle mit der Adresse 17 kopiert, direkte Adressierung
A: Der Accu wird mit dem Zahlenwert 17 geladen, unmittelbare Adressierung (immediate)

Q: Geben Sie die Zahl 137 als Dualzahl an
A: 10001001b

Q: Jedes Mikrocontrollerprogramm benötigt eine Endlosschleife.
- Wahr (Richtig, sonst würde das Programm abstürzen)
- Falsch (Das Programm stürzt ab)
A: Wahr

Q: Geben Sie den Assemblerbefehl an, mit dem Port 1 Bit 5 auf 1 gesetzt werden kann.
A: setb P1.5

Q: Geben Sie den den Assemblerbefehl an, mit dem zu der Sprungmarke "Schleife" gesprungen wird
A: ljmp Schleife

Q: Welche Bedeutung hat der Zusatz:  .2  bei der Angabe P1.2 ?
- Von Port 1 wird das Bit 2 ausgewählt
- Von Port 2 wird das Bit 1 ausgewählt
- P1 wird quadriert
- Von allen Ports mit dem Namen P1 wird der 8-Bit-Port Nr. 2 ausgewählt
A: Von Port 1 wird das Bit 2 ausgewählt

Q: Ist folgende Befehlsfolge richtig:

mov A,#4

setb P1.A
- Wahr (Die Bitauswahl kann nur mit den Zahlen 0 .. 7 erfolgen also P1.0 .. P1.7)
- Falsch (Die Bitauswahl kann nur mit den Zahlen 0 .. 7 erfolgen also P1.0 .. P1.7)
A: Falsch

Q: Welche Laufzeit hat folgendes Assemblerprogramm:

mov R0,#250

Marke:

djnz R0,Marke

Hinweis: Der Befehl djnz benötigt 2 MZ, 1MZ = 0,5µs, Einheit angeben
A: 250
Feedback ("250"): 250 * 2MZ * 0,5µs/MZ = 250µs = 0,25ms = 0,00025s

Q: Welche Wirkung hat der Befehl djnz R0,Marke1?
- Zuerst wird R0 um 1 erniedrigt, falls danach R0 nicht 0 ist wird zur Marke1 gesprungen, sonst wird das Programm ganz normal fortgesetzt.
- Zuerst wird R0 auf 0 geprüft. Falls R0 nicht 0 ist, wird R0 um 1 reduziert und dann zur Marke 1 gesprungen
- Zuerst wird zur Marke 1 gesprungen, dann R0 um 1 reduziert
- Es wird zur Marke1+R0-1 gesprungen
A: Zuerst wird R0 um 1 erniedrigt, falls danach R0 nicht 0 ist wird zur Marke1 gesprungen, sonst wird das Programm ganz normal fortgesetzt.

Q: Übersetzen Sie folgendes Programm in C:

mov R0,#100

Marke1:

mov P1,R0

djnz R0,Marke1
- do { P1=R0; R0=R0-1; while (R0>0);
- for (R0=100; R0>0; R0--) { P1=R0; }
- while (R0>0) { P1=R0; R0=R0-1; }
A: do { P1=R0; R0=R0-1; while (R0>0);; for (R0=100; R0>0; R0--) { P1=R0; }; while (R0>0) { P1=R0; R0=R0-1; }

Q: Welche Programmlaufzeit ergibtb sich nahezu?

mov R0,#250

w1:

mov R1,#200

w2:

djnz R1,w2

djnz R0,w1

falls MZ=0,5µs und djnz 2MZ benötigt
A: 50000

Q: Geben Sie mögliche Werte für Wert1 und Wert2 an, damit eine Wartezeit von 30ms erzeugt wird.

(MZ=0,5µs und djnz hat 2 MZ)

mov R0,#Wert1

w1:

mov R1,#Wert2

w2;

djnz R1,w2

djnz R0,w1
- Wert1 = 150, Wert2=200
- Wert1= 250, Wert2=120
- Wert1 = 300, Wert2=100 (die Zahl 300 kann nicht in einem Byte mit 8Bit gespeichert werden)
- Wert1= 210, Wert2= 180
A: Wert1 = 150, Wert2=200; Wert1= 250, Wert2=120

Q: Wie wird ein Kommentar gekennzeichnet?
- ;
- //
- /*
- /* */
A: ;

Q: Ist folgender Befehl richtig?

mov P1.0,R0
- Wahr
- Falsch (Ein Byte kann nicht einem Bit zugewiesen werden)
A: Falsch

Q: Der Pullup-Widerstand bewirkt, dass ein Portanschluss immer einen definierten Signalpegel aufweist.
- Wahr
- Falsch (Der Pullup-Widerstand verbindet den Porta Schluss schwach mit 5V ("1"))
A: Wahr

Q: Welchen Signalpegel hat ein unbeschalteter Portanschluss?
- "1"
- "0" (Der Pullup-Widerstand sorgt für Signalpegel "1")
- Unbestimmt (Der Pullup-Widerstand sorgt für Signalpegel "1")
- Zufall (Der Pullup-Widerstand sorgt für Signalpegel "1")
- 0,5 (Der Pullup-Widerstand sorgt für Signalpegel "1")
A: "1"

Q: Welcher Signalpegel liegt bei gedrücktem Taster an Port P2. 4 vor?
- "0"
- "1" (Der Taster verbindet den Porta Schluss mit GND (Ground, 0V) deshalb "0")
- 0,5 (Der Taster verbindet den Porta Schluss mit GND (Ground, 0V) deshalb "0")
- High (Der Taster verbindet den Porta Schluss mit GND (Ground, 0V) deshalb "0")
- True (Der Taster verbindet den Porta Schluss mit GND (Ground, 0V) deshalb "0")
A: "0"

Q: Welche Befehle können Sie bei einem Eingangsport P2. 4 anwenden?
- jnb P2. 4, Marke
- jb P2. 4,Marke
- mov A, P2
- clr P2. 4
- mov P2, A
A: jnb P2. 4, Marke; jb P2. 4,Marke; mov A, P2
Feedback: An einem Eingang P2. 4 könnte z. B. ein Taster oder ein Sensor angeschlossen sein.

Q: Übersetzen Sie in Maschinensprache:

while (P2. 4==1){ }
- Marke: jb P2. 4,Marke
- Marke: jnb P2. 4,Marke
- jb P2. 4,Marke Marke:
- Marke: jnb Marke, P2. 4
- Marke: jb Marke, P2. 4
A: Marke: jb P2. 4,Marke

Q: Wofür steht die Abkürzung jb beim Befehl jb?
- jump if Bit set
- jump byte 0
- jack build
A: jump if Bit set

Q: Schreiben Sie ein Programm zum Zählen, wie oft eine Taste gedrückt wurde.
- 1. | org 0
- 2. | mov R0, #0 ;Zähler in R0 mit 0 vorbelegen (initialisieren)
- 3. | Schleife:
- 4. | jb P2. 4,Schleife
- 5. | inc R0 ;Inc steht für inkrement: R0=R0+1
- 6. | Warte: jnb P2. 4,Warte. ;warten auf losgelassen
- 7. | ljmp Schleife
- 8. | end

Q: Was versteht man unter Prellen in Zusammenhang mit Tasten und Schaltern?
- Durch die mechanische Bewegung des Kontaktes kann sich der Signalpegel des Ports noch mehrfach kurzzeitig ändern.
- Ein Kontakt öffnet und schließt mehrfach beim Betätigen
- Der Kontakt vibriert beim Betätigen wie ein Ball der mehrfach auf dem Boden hüpft
A: Durch die mechanische Bewegung des Kontaktes kann sich der Signalpegel des Ports noch mehrfach kurzzeitig ändern.; Ein Kontakt öffnet und schließt mehrfach beim Betätigen; Der Kontakt vibriert beim Betätigen wie ein Ball der mehrfach auf dem Boden hüpft

Q: Wie kann softwaretechnisch entprellt werden?
- Nach jeder Tastenbetätigung 20ms warten
- Anzahl der Prellen zählen
- Port erst abfragen wenn das Prellen vorbei ist
- Port mehrfach abfragen
A: Nach jeder Tastenbetätigung 20ms warten
Partly right: Port mehrfach abfragen (20%)

Q: Übersetzen Sie folgendes C-Programm in Assembler:

if (P2_4==1)

{

P1_0=0;

P1_1=1;

}

else

{

P1_0=1;

P1_1=0;

}
- 1. | jnb P2. 4,else
- 2. | clr P1.0
- 3. | setb P1. 1
- 4. | ljmp weiter
- 5. | else:
- 6. | setb P1. 0
- 7. | clr P1.1
- 8. | weiter:

Q: Welche Werte geben Sie für x und y an, um eine Wartezeit von 20ms zu erzielen? (1MZ =0,5us, djnz benötigt 2 MZ)

mov R0, #x

w1:

mov R1, #y

w2:

djnz R1, w2

djnz R0, w1
- x=200, y=100
- x=100, y=200
- x=2000, y=10 (Zahlenwerte 2000 passt nicht in ein 8-Bitregister)
- x=150, y=150 (150*150*2*0,5us=22500us=22,5ms etwas zu lang)
A: x=200, y=100; x=100, y=200

Vervollständigen Sie den PAP entsprechend dem folgenden Code:

Start:

mov R0,#0

Schleife:

jb P2.4,Schleife

jb P2.5,Schleife

inc R0

warte:

mov A,P2

anl A,#00000011b

cjne A,warte

ljmp Schleife

Q: Bringen Sie die Programmzeilen für das Abfragen einer Taste in die richtige Reihenfolge. Falls die Taste nicht gedrückt ist, darf nicht gewartet werden.
- 1 | jb P2.4,nichtP24 ;nicht gedrückt dann weiter
- 2 | inc R0
- 3 | warteP24losgelassen:
- 4 | jnb P2.4,warteP24losgelassen
- 5 | nichtP24:

Q: Was bewirkt der Befehl: inc R0
- Zum Inhalt des Registers R0 wird 1 hinzugezählt
- Vom Inhalt des Registers R0 wird 1 abgezogen (inc bedeutet increment, was soviel bedeutet wie erhöhe)
- R0 wird auf 0 gesetzt, (increment = 0) (inc bedeutet increment, was soviel bedeutet wie erhöhe)
- R0 wird negiert (increment = Negation) (inc bedeutet increment, was soviel bedeutet wie erhöhe)
A: Zum Inhalt des Registers R0 wird 1 hinzugezählt

Q: Welche Wirdkung hat der Befehl: dec R5
- Vom Inhalt des Registerrs R5 wird 1 abgezogen
- Zum Inhalt des Registers R5 wird 1 hinzugezählt (dec bedeutet decrement, was soviel bedeutet, wie: 1 abziehen)
- R5 wird auf 0 gesetzt, (decrement= 0) (dec bedeutet decrement, was soviel bedeutet, wie: 1 abziehen)
- R5 wird negiert (increment = Negation) (dec bedeutet decrement, was soviel bedeutet, wie: 1 abziehen)
A: Vom Inhalt des Registerrs R5 wird 1 abgezogen

Q: Zum Accu soll der Inhalt von Register R2 hinzugezählt werden. Geben Sie die passende Assembleranweisung an.
- add A,R2
- add R2,A
- add A,A,R2
- add R2,A,A
A: add A,R2

Q: Der Inhalt des Registers R3 soll verdoppelt werden. Geben Sie die richtige Befehlsfolge an.
- 1 | mov A,R3
- 2 | add A,R3
- 3 | mov R3,A

Q: Welche Anweisungen sind richtig für inc und dec?
- inc R0 ;Register wird erhöht
- inc R7 ;Register wird erhöht
- inc A ;Accu wird erhöht
- inc 025h ;Speicherstelle im RAM wird erhöht
- inc #17 ;Zahl wird erhöht
A: inc R0 ;Register wird erhöht; inc R7 ;Register wird erhöht; inc A ;Accu wird erhöht; inc 025h ;Speicherstelle im RAM wird erhöht

Q: Welche Dezimalzahl verbirgt sich hinter 10011101b?
A: 157

Q: Ordnen Sie zu.
- 0ABh | 10101011b
- 00111100b | 3Ch
- 48h | 01001000b
- 11110000b | 0F0h
- 5Dh | 01011101b
- 11001010b | 0CAh

Q: Ordnen Sie zu.
- 27 | 00100111 BCD
- 10010110 BCD | 96
- 78 | 01111000
- 69 | 01101001 BCD
- 01000011 BCD | 43
- 91 | 10010001 BCD

Q: Finden Sie die passende negative Zahl.
- -1 | 11111111b
- -2 | 11111110b
- -127 | 10000001b
- -69 | 10111011b
- -128 | 10000000b

Q: Welches Ergebnis liefert der Befehl addc A,#125 wenn zuvor im Accu der Wert 50 stand und das Carrybit 0 war?
A: 175

Q: Welches Ergebnis liefert die folgende Instruktion: addc A,R0 wenn A=0C5h, R0=85h und C=1 waren?
- A=4Bh, C=1
- A=01001011b, C=1
- A=130, C=1
- A=19h, C=1
A: A=4Bh, C=1; A=01001011b, C=1

Q: Ordnen Sie jeweils das richtige Ergebnis zu
- subb A,R0 ;A=50, R0=30, C=0 | A=20, C=0
- subb A,#067h ;A=110, C=1 | A=6, C=0
- subb A,#10 ;A=5, C=1 | A=11111010, C=1
- subb A,R7 ;A=3, R7=7, C=0 | A=-4 (11111100b), C=1

Q: Welches Ergebnis liefert jeweils die Operation div AB wenn mit folgenden Werten gerechnet wird:
- A=250, B=5 | A=50, B=0
- A=30, B=7 | A=4, B=2
- A=10, B=17 | A=0, B=10
- A=233, B=2 | A=116, B=1
Feedback: A ist das ganzzahlige Ergebnis der Division, B ist der Rest (Modulo) der Division.

Q: Welcher Programmablauf erfolgt:

1.  mov R0,#17

2.  cjne R0,#10,weiter

3.  subb A,R0

     weiter:

4.  add A,R0
- 1. 2. 3. 4.
- 1. 2. 4.
- 1.4.
- 1.
A: 1. 2. 4.

Q: Welcher Programmablauf erfolgt:

1.  mov R0,#17

2.  cjne R0,#17,weiter

3.  subb A,R0

     weiter:

4.  add A,R0
- 1, 2, 3, 4,
- 1. 2. 4.
- 1. 3. 4.
- 1. 4.
A: 1, 2, 3, 4,

Q: Wenn im Accu der Wert 24 steht und Port P2.4 den Pegel 1 aufweist, welchen Wert hagt der Accu nach Ausführung des folgenden Programms:

jb P2.4,weiter

add A,A

weiter:
- 24
- 12
- 48
- 96
A: 24

Q: Wenn im Accu der Wert 24 steht und Port P2.4 den Pegel 1 aufweist, welchen Wert hagt der Accu nach Ausführung des folgenden Programms:

jnb P2.4,weiter

add A,A

weiter:
- 24
- 48
- 12
- 96
A: 48

Q: Übersetzen Sie das folgende C-Programm in Assembler:

if (A<25)

{

A=A*2;

}

else

{

A=a/3;

}
- 1 | clr c
- 2 | subb A,#25
- 3 | jc if_Anweisungen
- 4 | mov B,#3
- 5 | div AB
- 6 | ljmp ifelsefertig
- 7 | if_Anweisungen:
- 8 | mov B,#2
- 9 | mul ab
- 10 | ifelsefertig:

Q: Übersetzen Sie in ein C-Programm

cjne A,#23,weiter

mov R0,#17

weiter:
- if (A==23) {R0=17;}
- while (A==23) {R0=17;}
- do {R0=17;} while (A==23);
- for (A=0; a<=23;A++) {R0=17;}
A: if (A==23) {R0=17;}

Q: Welche Anweisungen sind richtig?
- jb P2.4,#weiter (Falsche Raute #)
- jb A,Marke1 (jump bit bezieht sich auf ein Bit, nicht auf ein Byte (Accu))
- jnb P3.2,weiter
- cjne P2.5,#27,weiter (cjne vergleicht Bytes und nicht Bits)
- cjne R0,weiter (2. Operant, Vergleichswert vergessen)
- jc P2.4,weiter (jump if carry set bezieht sich auf cy nicht auf ein anderes Bit)
- jz weiter
- jnz R0,weiter (jnz geht nur mit Accu: jz weiter)
- cjne R7,#56h,weiter
- cjne A,R5,weiter (2. Operant kann kein Register sein)
- cjne A,5,weiter
A: jnb P3.2,weiter; jz weiter; cjne R7,#56h,weiter; cjne A,5,weiter

Q: Welche Instruktionen verarbeiten Bits, welche Bytes?
- cjne | Byte
- jb | Bit
- jnb | Bit
- jz | Byte
- jnz | Byte
- djnz | Byte
- jc | Bit
- jnc | Bit

Q: Wie kann festgestellt werden welche von zwei Zahlen größer ist?
- Beide Zahlen voneinander abzeihen, Carry überprüfen
- Beide Zahlen mit dem Compare-Befehl vergleichen
- Beide Zahlen in einer Schleife herunterzählen, die, die zuerst Null wird war kleiner
- mul AB, anschließend div AB und inc R0
A: Beide Zahlen voneinander abzeihen, Carry überprüfen; Beide Zahlen in einer Schleife herunterzählen, die, die zuerst Null wird war kleiner

Q: Welche Ports weisen eine Speicherfunktion für Ereignisse auf?
- P3.2
- P3.3
- P2.4
- P2.5
- P3.4
- P1.2
- P0.5
- P3.6
A: P3.2; P3.3

Q: Welche Voreinstellung ist erforderlich, damit das Port-Flipflop von P3.2 abgefragt werden kann?
- setb IT0
- clr IE0
- setb ET0
- setb P3.2
- clr P3.2
A: setb IT0

Q: Wie reagiert das Programm auf die Instruktion:

jb IE0,Sprungmarke
- Falls in der Vergangenheit irgendwann eine fallende Flanke an P3.2 auftrat, verzweigt das Programm zur Sprungmarke
- Falls P3.2 den Wert 1 aufweist verzweigt das Programm zur Sprungmarke
- Es findet niemals eine Verzweigung statt, da das Signal IE0 dauerhaft 0 ist
- Eine Verzweigung kann nur dann stattfinden, wenn zuvor IT0 mit setb IT0 auf 1 gesetzt wurde
A: Falls in der Vergangenheit irgendwann eine fallende Flanke an P3.2 auftrat, verzweigt das Programm zur Sprungmarke; Eine Verzweigung kann nur dann stattfinden, wenn zuvor IT0 mit setb IT0 auf 1 gesetzt wurde

Q: Warum muss das Flipflop (Bit) IE0, nach seiner Auswertung, mit clr IE0 auf 0 gesetzt werden?
- Damit die nächste fallende Flanke an P3.2 gespeichert werden kann
- Um den Stromverbbrauch bei Batterieanwendungen zu senken
- Um P3.2 in der Folge auch mit einer Instruktion zu verändern
A: Damit die nächste fallende Flanke an P3.2 gespeichert werden kann

Q: Ordnen Sie das Bit dem richtigen Port zu
- IT0 | P3.2
- IT1 | P3.3
- IE0 | P3.2
- IE1 | P3.3
- IE2 | keine Zuordnung möglich
- IT3 | keine Zuordnung möglich

Q: Welche Wirkung hat folgende Programmzeile:

Tabelle: db 0,8,15
- Im Codespeicher wird eine Datentabelle mit dem Inhalt 0,8,15 angelegt
- Im RAM wird eine Datentabelle mit dem Inhalt 0,8,15 angelegt
- Im ROM wird der Bereich ab Adresse 0 bis zur Adresse 7 (8-1) mit der Zahl 15 gefüllt
- Eine Minidatenbank (db) wird angelegt. Die Abfrage erfolgt mit SQL
A: Im Codespeicher wird eine Datentabelle mit dem Inhalt 0,8,15 angelegt

Q: Wie lautet die richtige Assemblerinstruktion?
- 1. | movc
- 2. | A,
- 3. | @A
- 4. | +dptr
Also offered: mov; inc

Q: Welchen Wert weißt der Accu nach den folgenden Instruktionen auf?

mov A,#3

mov dptr,#Tabelle

movc A,@A+dptr

ljmp Schleife

Tabelle: db 9,8,7,6,5,4,3,2,1,0
- 6
- 3
- 4
- 8
- 9
A: 6

Q: Wie lautet die Adresse in hexadezimal der Speicherstelle die abgefragt wird?

mov A,#085h

mov dptr,#35DEh

movc A,@A+dptr
A: 3663 / 13923

Q: Wie können lange Wartezeiten mit dem Timer in Mode 1 und mit Interrupt
- 1. Timer initialisieren | TMOD=01h, TH0=3Ch, TL0=0B0h, ET0=1, EA=1
- 2. Wartezeit festlegen | z. B. Register R0 als Zeitzähler mit Wert 40
- 3. Wartezeit starten | TR0 = 1
- 4. In der ISR | In TH0 und TL0 wieder Reloadwerte eintragen und Zeitzähler um 1 verringern
- 5. Zeitzähler nicht 0 | ISR fertig
- 6. Zeitzähler ist 0 geworden | TR0 = 0
- 7. Im Hauptbrogramm bzw. einem Unterprogramm Warte | Warten bis TR0 wieder 0 wird

Q: Mit welchem Befehl startet die präzise Wartezeit?
- clr EA
- clr TR0
- clr ET0
- setb TR0
A: setb TR0

Q: Welche Wartezeit in Sekunden ergibt sich mit:

MZ=0,5µs, TH0=3Ch, TL0=0B0h, Zeitzähler R0=80?
A: 2

Q: In welchem zeitlichen Abstand werden bei:

MZ=1µs, TH0=3Ch, TL0=0B0h

Interrupts ausgelöst? (Angabe in ms)
A: 50

Q: Wie kann ein Unterprogramm Warte darauf warten, dass die Wartezeit um ist?
- w1: jb EA
- w1: jnb TR0
- w1: jb TR0
- w1: jnb EX0
A: w1: jb TR0

Q: Programmieren Sie die ISR für eine Wartezeit von 20s. (MZ=0,5µs)

Für die Zählregister wurden folgende Werte angenommen: R0=40, R1=20.
- 1. | mov TH0,#3Ch
- 2. | mov TL0,#0B0h
- 3. | djnz R0,ISREnde
- 4. | mov R0,#40
- 5. | djnz R1,ISREnde
- 6. | clr TR0
- 7. | ISREnde: reti

Q: Beschreiben Sie die ISR für eine Wartezeit von 20s
- 1. | TH0 und TL0 nachladen
- 2 | R0 um 1 herunterzählen, wenn nicht Null dann ISR fertig
- 3. | R0 nachladen (z.B. 40 für 1s)
- 4. | R1 um 1 verringern, wenn nicht Null dann ISR fertig
- 5. | TR0 auf 0 zurücksetzen
- 6. | ISR fertig, reti

Q: Wo liegt der Fehler in folgender ISR, die für eine Wartezeit von 80 s verwendet werden soll? (MZ=0,5µs)

T0ISR:
mov TH0,#3Ch
mov TL0,#0B0h
mov R1,#20
w1:
mov R0,#40
w2: djnz R0,w2
djnz R1,w1
clr TR0
reti
- Die ISR wird nie ausgeführt
- Die Wartezeit beträgt lediglich 25ms + 2*0,5µs*20*40=25800µs
- Es liegt kein Fehler vor
- Endlosschleife in der ISR
A: Die Wartezeit beträgt lediglich 25ms + 2*0,5µs*20*40=25800µs

Q: Ergänzen Sie die ISR für eine Blinkfrequenz von 2Hz

T0ISR:
mov TH0,#3Ch
mov TL0,#0B0h
djnz R0,weiter
clr TR0
weiter:

; hier Ihr Code

fertig: reti
- 1. | djnz R1,fertig
- 2. | cpl P1.0
- 3. | mov R1,#10

Q: Geben Sie den fehlenden Zahlenwert für eine Blinkfrequenz von 5Hz an

T0ISR:
mov TH0,#3Ch
mov TL0,#0B0h
djnz R0,weiter
clr TR0
djnz R1,fertig
cpl P1.0
mov R1,#fehlenderWert
fertig: reti
A: 4

Q: Berechnen Sie die  Blinkfrequenz. (MZ=0,5µs)

T0ISR:
mov TH0,#3Ch
mov TL0,#0B0h
djnz R0,weiter
clr TR0
weiter:
djnz R1,fertig
cpl P1.0
mov R1,#8
fertig: reti
A: 2.5

Q: Welche Periodendauer ergibt sich, wenn in der ISR mit Zykluszeit 25ms ein Register vom Startwert 7 heruntergezählt wird, und immer bei 0 P1.3 komlementiert und der Startwert wieder auf 7 gesetzt wird.

(Wert in Sekunden)
A: 0.35