2.5  Aufgaben

1.
Schreibe einige Codezeilen, die Port 3.2 und Port 3.4 als Eingang sowie Port 3.3 als Ausgang definieren, ohne die anderen Bits des Registers zu beeinflussen.
2.
Wozu benötige ich die Interrupt-Funktionalität der Portpins? Was ist eine Interrupt-Service-Routine?
3.
Schreibe eine Interrupt-Service-Routine für Interrupts, die an Port 3.2 ausgelöst werden, die bei jedem zehnten Aufrufen eine im Hauptprogramm zugängliche Statusvariable invertiert. Was ist die potentielle Gefahr dabei?
4.
Entwickle eine kleine Ampelsteuerung. Verbinde dazu drei Leuchtdioden (rot, grün, gelb) über Vorwiderstände mit drei Portpins. Realisiere nun eine periodische Abfolge der bekannten Ampelphasen. Verwende für die Pausen eine Warteschleife.
5.
Erweitere die Schaltung um einen Taster, der an einen anderen Portpin angeschlossen ist. Wenn der Taster gedrückt wird, soll das Ampelprogramm zwischen Tagbetrieb (normale Signalfolge) und Nachtbetrieb (gelbes Blinklicht) wechseln.
6.
Warum ist die zeitliche Steuerung mit Warteschleifen nicht unbedingt zu empfehlen?
7.
Wie kann ich sicherstellen, dass eine Befehlsfolge nicht durch einen Interrupt unterbrochen wird? Was sollte ich dabei beachten?
8.
Bei der Abfrage von vielen Tastern werden diese zu so genannten ”Matrix”-Tastaturen verschaltet. Den Aufbau eines solchen Matrix-Tastenfeldes zeigt Bild 2.10. Wie kann ich herausfinden, welche Tasten gedrückt sind? Schreibe dazu ein Programm. Welche zusätzlichen Bauteile sind noch erforderlich?


PIC

Bild 2.10.: Prinzipieller Aufbau einer Matrix-Tastatur