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 ; fAnalysieren 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 aufWie 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)