51. Was bedeutet „Single-Step“? Wozu kann ich Single-Steps verwenden?
52. Beschreiben Sie, wie ein übersetztes Programm auf den Mikrocontroller über- tragen wird.
53. Wozu ist eine Projektverwaltung innerhalb der IDE dienlich?
54. Wie viele allgemeine Register (general purpose) besitzt der C8051F020/21 und wozu werden sie benötigt?
55. Sie können Mikrocontroller in Assembler oder in einer Hochsprache, z.B. in C entwickeln. Nennen Sie Vor- und Nachteile einer Assembler- bzw. C-Entwicklung.
56. Hat die Programmierung in Assembler heute überhaupt noch eine Bedeutung? Nennen Sie zwei Beispiele, in denen heute und auch in Zukunft noch Assembler-Wissen nötig ist.
57. Was sind Assembler-Direktiven? Wozu werden sie verwendet?
58. Assembler-Direktiven können in vier Gruppen unterteilt werden. Nennen Sie die vier Gruppen mit einer Beispiel-Direktiven und erörtern Sie die Funktion der Di- rektive.
59. Vervollständigen Sie das nachfolgende Diagramm:
60. Sie möchten eine ganz bestimmte Befehlssequenz in Ihrem Programm erzeugen. Verwenden Sie hierzu einen Assembler oder einen Compiler? Begründen Sie Ihre Antwort ausführlich!
61. Welche Aufgabe hat der Linker? Erklären Sie seine Funktion!
62. Was versteht man unter einem optimierenden C-Compiler?
63. Kann man Assembler- und C-Code bei der Programmentwicklung kombinieren? An welcher Stelle entsteht das ausführbare Programm für den Mikrocontroller?
64. Erklären Sie die Aufgaben von Assembler, Compiler und Linker?
65. Im Praktikum wurden bei der Programmentwicklung die beiden Include-Dateien compiler_defs.h und C8051F020_defs.h eingebunden. Weshalb wurde dies gemacht? Wofür sind die beiden Dateien wichtig?
66. Warum enthält ein typisches Mikrocontroller-Programm eine Endlosschleife?
67. Sie möchten Ihr Mikrocontroller-Programm für die Fehlersuche an einer bestimmten Stelle im Programm anhalten. – Welche Möglichkeit(en) bieten sich dazu an?
68. Sie möchten in Ihrem Programm einen Fehler lokalisieren, haben aber keinen Debugger zur Verfügung. Wie könnten Sie dennoch dem Fehler auf die Spur kommen?
69. Wie können Sie bei dem C8051F020/21-Mikrocontroller Peripherie-Komponenten (z.B. die I/O-Ports) ansprechen?
70. Wofür steht der Datentyp „sfr“? Wozu wird er verwendet?
71. Wie wird in einem C-Programm der Port 0 (P0, Adresse 80hex) deklariert?
72. Warum und in welchen Fällen ist es praktisch, Zahlenwerte in hexadezimaler Schreibweise zu verwenden?
73. Was bewirkt der C-Befehl P0 = 0xB3?
74. An dieser Stelle machen Sie mal eine Lernpause und trinken einen Kaffee oder Tee. – Dann geht’s aber weiter!
75. Schreiben Sie den hexadezimalen Wert AAhex in dezimaler und binärer Darstellung auf!
76. Welchen Wert hat die Variable E nach Ausführung der C-Programmzeile unsigned short E = 0x1234 + 0x4321?
77. An Port P5 des C8051F020 seien 8 LEDs verschaltet, die nach dem Einschreiben einer logischen 1 im entsprechenden Port-Bin leuchten. – Ergänzen Sie die nötige Befehls-Sequenz, wenn sie ein „Lauflicht“ programmieren möchten:
78. Der C8051F020/21 unterstützt in einigen Fällen auch 16-Bit Special-Function-Register (sfr16). Welche Bedingung muss dafür erfüllt sein?
80. Wozu benötigt man die Zweierkomplementdarstellung?
81. In einem C-Programm finden Sie die beiden Code-Zeilen:
82. Die Special-Function-Register (SFR) des C8051F020/21 liegen im Adressbereich 80hex bis FFhex. Im gleichen Adressbereich liegt aber auch der normale Datenspeicher. Wie kann zwischen SFR- und Daten-Bereich unterschieden werden?
83. Bei einigen SFRs kann jedes Bit auch einzeln angesprochen werden, z.B. bei Port P0. Welchen Vorteil bietet diese Bit-Adressierung?
84. Bei welchen Adressen kann ein SFR auch bit-adressiert werden?
85. Port P0 ist bit-adressierbar; Port P5 aber nicht. Bei beiden Ports soll der obere Port-Pin (Bit 7) auf log. 1 gesetzt werden. Die restlichen sieben Port-Pins dürfen dabei aber nicht verändert werden! Programmieren Sie beide Fälle in C.
86. Neben den aus C bekannten Datentypen erlaubt der C-Compiler von der Firma Keil auch noch die Verwendung weitere Datentypen. Welche sind das und wofür werden sie benötigt? Geben Sie Beispiele an!
87. Vervollständigen Sie die nachfolgende Tabelle der C-Datentypen:
88. Die obere Tabelle der C-Datentypen enthält einen Fehler! – Haben Sie den Fehler schon gefunden?
89. Der C8051F020/21 hat verschiedene Speicherbereiche. Erklären Sie, was mit direkter und indirekter Speicheradressierung gemeint ist. Geben Sie für beide Adressierungsarten jeweils ein Beispiel an!
90. Der C8051F020/21 stellt insgesamt 256 Bytes internen Speicher zur Verfügung. (Der XRAM-Bereich sei hier nicht weiter betrachtet!) Die unteren 128 Bytes (Adressen 00hex bis 7Fhex) sind direkt und indirekt adressierbar. Warum können die oberen 128Bytes (Adressen 80hex bis FFhex) nur indirekt adressiert werden?
91. Wann wird ein optimierender C-Compiler die unteren 128 Bytes des internen Datenspeichers vermutlich indirekt adressieren, obwohl diese auch direkt adressiert werden können? Spekulieren Sie und begründen Sie Ihre Vermutung!
92. Der externe Datenspeicher beim C8051F020/21 kann bis zu 64 kBytes groß sein. Wann ist es dennoch sinnvoll, den viel kleineren internen Speicher zu verwenden?
93. Sie möchten eine Schleife mit einer Index-Variable programmieren, die möglichst schnell durchlaufen wird. Welchen Datenspeicher (intern oder extern) und welche Adressierungsart sollten Sie dafür verwenden, wenn Sie einen Mikro- controller der 8051-Familie einsetzen? Begründen Sie Ihre Antwort!
94. Damit auf die unterschiedlichen Speicherbereiche des C8051F020/21 auch aus der Hochsprache C zugegriffen werden kann, wurden Schlüsselwörter für die jeweilige Speicherklasse eingeführt. Geben Sie an, welcher Bereich des Speichers mit welchem Schlüsselwort angesprochen werden kann:
95. Mit der Speicherklasse pdata kann nur eine Seite (256 Bytes) im externen Datenspeicher angesprochen werden, während mit xdata die kompletten 64 kBytes adressiert werden können. Warum bzw. in welchen Fällen kann ein Zugriff mit pdata dennoch sinnvoll sein?
96. Der Keil C-Compiler für den C8051F020/21 erlaubt es auch, Variablen in den Programmspeicher (Flash-Speicher) zu legen. In welchen Fällen kann das sinnvoll sein? Geben Sie ein Beispiel dazu an!
97. In C besteht die Möglichkeit, eine Variable mit dem Schlüsselwort const als Konstante zu deklarieren. In welchen Fällen kann das sinnvoll sein? Geben Sie ein Beispiel dazu an!
98. In einem C-Programm für den C8051F020/21 finden Sie nachfolgende
Programmzeile:
const unsigned char code LUT[10] = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };
Wozu mag diese Programmzeile verwendet werden?
99. Der Keil C-Compiler unterstützt die drei Speichermodelle SMALL, COMPACT und LARGE. Wozu werden Speichermodelle verwendet?
100. Geben Sie die nachfolgenden Zahlen in binärer Schreibweise (8-Bit) an:
+8,-8,+12,-12