These are notes taken during the MOP practical course 2005. Sources are prepared in such a way that tutors can easily check if they were just copied from here. So do yourself a favor and don't copy it.
Kontrollfragen¶
Wieviele Leitungen wären nötig, um die beiden Siebensegmentanzeigen direkt an den Mikrocontroller anzuschließen, wieviele sind es bei Benutzung der Multiplexer-Methode?
Ohne Multiplexer: 2 * 8 = 16
Mit MS: 8 + 2 = 10
Machen Sie sich die Bedeutung der einzelnen Codeabschnitte in Beispiel 1 klar! Schreiben Sie dazu für jeden Codeabschnitt auf, was dort bewirkt wird und erläutern Sie die Bedeutung der Bitmuster für #OEB, #OEC, #OUTB und #OUTC!
Fertigen Sie eine Tabelle an, in der Sie für die 10 Dezimalzahlen 0-9 die entsprechenden Bitmuster für die Segmente a-g notieren! Sie werden diese Tabelle zur Bearbeitung der Übungsaufgaben weiter unten benötigen.
segtable: .db 00111111b ; 0 .db 00000110b ; 1 .db 01011011b ; 2 .db 01001111b ; 3 .db 01100110b ; 4 .db 01101101b ; 5 .db 01111101b ; 6 .db 00000111b ; 7 .db 01111111b ; 8 .db 01101111b ; 9 .db 01110111b ; a .db 01111100b ; b .db 00111001b ; c .db 01011110b ; d .db 01111001b ; e .db 01110001b ; f
Analysieren Sie das Beispielprogramm 2 und notieren Sie hinter relevante Code-Abschnitte die jeweilige Bedeutung! Informieren Sie sich mithilfe der technischen Dokumentation des AN2131SC über die für Interrupts wichtigen Register!
Was würde in dem Programm aus Beispiel 2 passieren, wenn man den linken Taster gedrückt hält? Leuchtet die rote LED dann noch oder nicht? Begründen Sie Ihre Antwort!
gelbe Taste ➞ level triggered ➞ Interrupt wird immer wieder aktiviert ➞ glimmt kurz auf
Wie lokalisiert der 8051 den Code der ISR? Warum wird beim Eintritt in eine ISR der Programm-Zähler auf den Stack gebracht?
feste Einsprungadresse ➞ im Code kann man selber zur richtigen Adresse springen
IP auf Stack, damit er nach reti wieder zurückspringen kann
Was versteht man prinzipiell unter der Lost-Update-Problematik? Was ist die Entstehungsursache auf dem 8051 und wie kann man sie beheben?
IP auf Stack, damit er nach reti wieder zurückspringen kann
weiteres Arbeiten mit IO vielleicht gestört, da mehrere Instruktionen immer notwendig (mitten in Instruktionen Interupt)
Lösung: Interrupts einfach während ausführung verbieten (
clr IE.7
- danachsetb IE.7
)