| Einsendeaufgaben zur Kurseinheit 3 |  | Einsendeaufgaben zur Kurseinheit 5 |

# Einsendeaufgaben zur Kurseinheit 4

- Aufgabe 4-1
- Aufgabe 4-2
- Aufgabe 4-3
- Aufgabe 4-4

## Aufgabe 4-1 (30 Punkte)

### a) (10 Punkte, Lösungsdatei: 1A_EA.ASM)

Schreiben Sie ein Programm, welches zyklisch die vier Portleitungen PB3..PB0 liest, ihren Zustand als hexadezimales Zeichen in der Anzeigestelle S0 ausgibt und über die Portleitungen PB7..PB4 ausgibt.

Im einzelnen soll das Programm:

1. die Anzeige löschen,
2. den Port PB passend initialisieren,
3. die Eingänge PB3..PB0 abfragen, die eingelesene Tetrade in der Anzeigestelle S0 als Hex.-Ziffer und über die Portleitungen PB7..PB4 ausgeben, danach mit 3) weitermachen.

### b) (10 Punkte, Lösungsdatei: 1B_EA.ASM)

Erweitern Sie Ihr Programm aus a) so, daß bei jeder negativen Flanke am Interrupt-Eingang CB1 die Ausgangsleitung CB2 ihren Zustand ändert. In der Anzeigestelle S2 soll der Zustand von CB2 durch "0" oder "1" angezeigt werden. Das Eintreffen einer negativen Flanke soll durch zyklisches Abfragen des Bit 7 in CRB erkannt werden, also ohne Aktivierung des Interrupts zum Prozessor.

Im einzelnen soll das Programm:

1. die Anzeige löschen,
2. den Port PB passend initialisieren,
3. die Eingänge PB3..PB0 abfragen, die eingelesenen Tetrade in der Anzeigestelle S0 als Hex.-Zahl und über die Portleitungen PB7..PB4 ausgeben,
4. das CB1-Interrupt-Bit abfragen; falls es nicht gesetzt ist, fortfahren mit 3),
5. den Zustand der Ausgangsleitung CB2 invertieren und in der Anzeigestelle S2 "1" oder "0" ausgeben; danach mit 3) fortfahren.

### c) (10 Punkte, Lösungsdatei: 1C_EA.ASM)

Erweitern Sie Ihr Programm aus b) so, daß bei jeder negativen Flanke an CB1 tatsächlich ein Interrupt ausgelöst wird. Führen Sie die Auswertung der Tetraden und die Umschaltung von CB2 nun nur noch in einer geeigneten Interruptroutine durch.

Im einzelnen soll das Programm:

1. die Anzeige löschen,
2. den Interruptvektor setzen und den Port PB passend initialisieren,
3. in einer Endlosschleife verweilen.

In der Interruptroutine soll:

1. der Zustand der Portleitungen PB3..PB0 eingelesen, in den Anzeigestellen S0 und über die Portleitungen PB7..PB4 ausgegeben werden,
2. der Zustand der Leitung CB2 invertiert und in der Anzeigestelle S2 ausgegeben werden.

## Aufgabe 4-2 (25 Punkte)

### a) (15 Punkte; Lösungsdatei: 2A_EA.ASM)

Schreiben Sie ein Programm, welches über den Parallelport PB 8-bit-Werte einliest, aufaddiert und die Summe auf Anforderung darstellt. In den Anzeigestellen S7..S6 soll die Anzahl der bisher gelesenen Werte angezeigt werden. Die 8-bit-Werte sollen bei einer negativer Flanke an CB1 gelesen und in den Anzeigestellen S1..S0 dargestellt werden. Die Summe soll bei einer negativen Flanke an CB2 in den Anzeigestellen S5..S2 ausgegeben werden. (Hinweis: Der Schalter an CB2 ist nicht entprellt, so daß jede Betätigung i.d.R. mehrere Flanken erzeugen wird.)

Im einzelnen soll das Programm:

1. die Anzeige löschen,
2. den Port PB geeignet initialisieren,
3. die Anzahl der gelesene Werte in den Anzeigestellen S7..S6 anzeigen,
4. falls eine negative Flanke an CB1 auftritt: den Port PB lesen, den ermittelten Wert zur Summe addieren und den Zähler der gelesenen Werte erhöhen, außerdem die Anzahl der Werte in den Anzeigestellen S7..S6, sowie den gelesenen Wert in den Anzeigestellen S1..S0 ausgeben,
5. falls eine negative Flanke von CB2 auftritt: die Anzahl der Werte in den Anzeigestellen S7..S6, die Summe der Werte in den Anzeigestellen S5..S2 anzeigen,
6. mit 3) fortfahren.

### b) (10 Punkte; Lösungsdatei: 2B_EA.ASM)

Erweitern Sie das Programm aus a) so, daß bei einer negativer Flanke an CB2 zusätzlich zu den ausgegebenen Werten in den Anzeigestellen S1..S0 der Durchschnitt der bisherigen Werte angezeigt wird. Falls noch kein Wert eingegeben wurde, soll die Ausgabe "00 0000 00" lauten.

## Aufgabe 4-3 (20 Punkte)

In dieser Aufgabe sollen der Praktikumsrechner und der PC über die V24-Schnittstelle kommunizieren.

### a) (10 Punkte, Lösungsdatei: 3A_EA.ASM)

Schreiben Sie ein Programm, welches zyklisch die Tastatur abfragt. Alle gedrückten Tasten sollen in der Anzeige, beginnend mit der Anzeigestelle S0, nach links rollend dargestellt werden. Gleichzeitig sollen die Tastencodes über die V24-Schnittstelle zum PC gesendet werden.

Im einzelnen soll das Programm:

1. die Anzeige löschen,
2. die V24-Schnittstelle initialisieren,
3. zyklisch die Tastatur abfragen und dabei den Code jeder gedrückten Taste in der Anzeigestelle S0 anzeigen sowie die bisher angezeigten Codes nach links "rollen".Weiterhin soll der Code über die V24-Schnittstelle gesendet werden, wobei darauf zu achten ist, daß das Zeichen komplett gesendet wurde, bevor mit Punkt 3) weitergemacht werden darf.

### b) (10 Punkte, Lösungsdatei: 3B_EA.ASM)

Schreiben Sie ein Programm, welches zyklisch die V24-Schnittstelle abfragt. Alle empfangenden Zeichen sollen in der Anzeige, beginnend mit Anzeigestelle S0, nach links rollend dargestellt werden.

Im einzelnen soll das Programm:

1. die Anzeige löschen,
2. die V24-Schnittstelle initialisieren,
3. zyklisch die V24-Schnittstelle abfragen und dabei den Code jedes empfangenen Zeichens in der Anzeigestelle S0 anzeigen sowie die bisher angezeigten Codes nach links "rollen".

Hinweise:

- Nutzen Sie als Baudrate 1200 baud. Übertragungsfehler müssen nicht berücksichtig werden.
- Das Rollen der Anzeige können Sie mit den *DBUF-Hilfsroutinen erledigen. Achten Sie jedoch darauf, daß der Puffer an einer Adresse liegt, deren drei niederwertigen Bits 0 sind, die also durch acht teilbar ist.

## Aufgabe 4-4: (25 Punkte, Lösungsdatei: 4_EA.ASM)

Schreiben Sie ein Programm, welches Hex.-Dateien im Motorola-S19-Format empfangen kann. Sie finden dazu als Vorlage die Datei 4_VORL.ASM. In dieser Datei befindet sich das Assemblerprogramm einer Laderoutine, die mit den Hilfsroutinen realisiert wurde. (Im Gegensatz dazu ist die Laderoutine im Monitorprogramm mit internen Routinen realisiert.)

Im einzelnen sollen Sie:

1. das Loadmodul analysieren,
2. überlegen, wo genau die Unterschiede zwischen dem Intel-Hex-Format und dem Motorola-S19-Format liegen,
3. das Programm ändern und die geänderte Version als 4_EA.ASM abspeichern.

Hinweise:

- Sie können beim Assemblieren mit dem Programm AS9 die Option "mot" angeben. Der Assembler erzeugt dann Hex.-Dateien im benötigten Motorola-S19-Format mit der Endung ".S19". Diese Dateien können mit dem mitgelieferten Terminalprogramm TERM.EXE in den Praktikumsrechner übertragen werden, allerdings müssen Sie den Dateinamen der zu sendenden Datei von Hand eingeben bzw. die Suchmaske von "*.HEX" in "*.S19" ändern.

| Einsendeaufgaben zur Kurseinheit 3 |  | Einsendeaufgaben zur Kurseinheit 5 |