1 Eigenes zu Interrupts und... Abfragebetrieb = polling Unterbrechungsbetrieb 1. Interrupt = Unterbrechung 2. IRQ = Interrupt-Request = Interrupt-Anforderung = Unterbrechungsanforderung 3. ISR = Interrupt-Service-Routine = Interrupt-Handler = Unterbrechungsroutine = Unterbrechungsbehandlung = Interrupt-Behandlungsprogramm = Prozedur zur Unterbrechungsbehandlung 4. Interrupt-Nummer 5. Interrupt-Vektor 6. Interrupt-Vektor-Tabelle 7. Interrupt-Quelle 8. Interrupt-Controller = Unterbrechungs-Controller 9. Eingang für Unterbrechungen an der CPU 10. Unterbrechungssignal 11. Unterbrechungswunsch 12. Rückkehr von der Unterbrechung = return from interrupt - RETI 13. mehrere Unterbrechungen 14. Unterbrechungen sperren = interrupt disabled 15. Prioritäten für jeden Unterbrechungswunsch 16. Software-Unterbrechungen (traps) 17. Fehler: Ausnahme = exception 18. Systemaufrufe = system calls ISR Interrupt-Service-Routine, Interrupt-Handler: Routine Programm Prozedur Behandlung Handler Unterbrechung Interrupt Interrupt ist hängend (pending): Pending-Bit Interruptleitung INT Quittungssignal (INTA, Interrupt-Acknowledge) 1
Controller = Gerätesteuerung Geräte Gerätetreiber, Treiber Gerätetreiber, Controller und Gerät = virtuelles Gerät Datenausgangsregister (data-out) Dateneingangsregister (data-in) Statusregister (status) Kontrollregister (control) Interrupts = Unterbrechungen/Polling Interrupt-Controller Interrupt-Controller 8259 oder PIC 8259A Eingänge: 8 Eingänge IR0 bis IR7 An jedem Eingang hängt ein Gerät IR0 höchste Priorität, IR7, niedrigste Ausgängen: INT angeschlossen an INTR der CPU INTA von CPU und Controller, verbunden D0 bis D7 mit den acht niederwertigsten Leiterbahnen des Datenbusses PIO (Programmed IO = Programmierter I/O = Prozessorgesteuerte I/O) Memory Mapped I/O = MMIO = Speicherbezogene Adressierung Port Mapped I/O = I/O-Mapping = Port-Maped I/O = Isolated I/O IN OUT Intel Speicherraum mit max. 64 KByte I/O-Bereich = E/A-Bereich (im Gerätemanager) I/O-Ports in Hexadezimaler Schreibweise Parallel: 0x378-0x37F VGA: 0x3B0 Tastatur; 0x60 und 0x64 DMA (Direct Memory Access) DMA Single-Word DMA = Einzelwort-DMA(-Modus) Multi-Word DMA = Multiwort-DMA(-Modus) Ultra DMA DMA-Controller 2
2 Assembler-Befehle des 8086 1. Transportbefehle 2. Mathematische Befehle 3. Schiebebefehle 4. Stringbefehle 5. Sprünge und Schleifen 6. Verschiedene Befehle 1. Transportbefehle MOV LEA XCHG 2. Mathematische Befehle ADD ADC SUB SBB DIV MUL DEC INC NEG IDIV IMUL Logische Befehle AND OR XOR NOT 3. Schiebebefehle SHL = SAL SHR 4. Stringbefehle LODS, LODSB, LODSW, LODS STOS, STOSB, STOSW, STOSD MOVS, MOVSB, MOVSW, MOVSD 3
REP 5. Sprünge und Schleifen JMP Jxx: (a) JE (Jump if Equal) (b) JNE (Jump if Not Equal) (c) JZ (Jump if Zero) (d) JNZ (Jump if Not Zero) (e) JG (Jump if Greater) (f) JNG (Jump if Not Greater) (g) JGE (Jump if Greater or Equal) (h) JNGE (Jump if Not Greater or Equal) (i) JL (Jump if Less) (j) JNL (Jump if Not Less) (k) JLE (Jump if Less or Equal) (l) JNLE (Jump if Not Less or Equal) (m) JC (Jump if Carry) (n) JNC (Jump if Not Carry) (o) JB (Jump if Below) (p) JNB (Jump if Not Below) (q) JBE (Jump if Below or Equal) (r) JNBE (Jump if Not Below or Equal) (s) JA (Jump if Above) (t) JNA (Jump if Not Above) (u) JAE (Jump if Above or Equal) (v) JNAE (Jump if Not Above or Equal) (w) JCXZ (Jump if CX is Zero) (x) JO (Jump if Overflow) (y) JNO (Jump if Not Overflow) CMP CALL RET LOOP 6. Verschiedene Befehle BSWAP CLC und STC CLI und STI IN OUT INT 4
TEST PUSH POP PUSHA und POPA PUSHF und POPF 3 Register des 8086 1. Allzweckregister (a) AX, AH, AL, Akkumulator (b) BX, BH, BL, Basisregister (c) CX, CH, CL, Zählregister (Count Register) (d) DX, DH, DL, Datenregister 2. SP, Stapelzeiger (Stack Pointer) 3. BP, Basiszeiger (Base Pointer) 4. SI, Quellindex (Source Index) 5. DI, Zielindex (Destination Index) 6. Segmentregister (a) CS, Code-Segment (b) DS, Daten-Segment (c) SS, Stack-Segment (d) ES, Extra-Segment 7. Flagregister (Kennzeichen) Flagregister, Bits: 1. CF, Übertrags-Flag, Carry-Flag 2. PF, Paritäts-Flag, Parity-Flag 3. AF, Hilfsübertrag-Flag, Auxiliary Carry-Flag 4. ZF, Null-Flag, Zero-Flag 5. SF, Vorzeichen-Flag, Sign-Flag 6. TF, Einzelschritt-Flag, Trap-Flag 7. IF, Unterbrechungs-Flag, Interrupt-Enable-Flag 8. DF, Richtungsf-Flag, Direction-Flag 9. OF, Überlauf-Flag, Owerflow-Flag 5
4 Adressierungsarten beim 8086 1. Direktwertadressierung: MOV AX, 0xff 2. Registeradressierung: MOV AX, BX 3. Direkte Adressierung:.DATA Var1 DB? Var2 DW? mov bl, Var1 mov ax, var2 4. Indirekte Adressierung: mov [bx], r 5. Indizierte Adressierung: cmp dl, [bx+si] 6
5 Assembler-Befehle des AVR-Mikrocontrollers Transportbefehle: ld: Load Indirect from Data Space to Register using Index X ldi: Load Immediate ldi r31, 0x0f lds: Load from Data Space mov: Copy Register st: Store Indirect From Register to Data Space using Index X sts: Store Direct to Data Space Mathematische Befehle: adc: Add with Carry add sbc: Subtract with Carry sub: Subtract without Carry mul dec: Decrement inc: Increment neg: Two s Complement and or: Logical Or eor: Exclusive OR Sprungbefehle breq: Branch if Equal brne: Branch if Not Equal brge: Branch if Greater or Equal brlo: Branch if Lower brlt: Branch if Less Than brsh: Branch if Same or Higher brmi: Branch if Minus brpl: Branch if Plus brvc: Branch if Overflow is cleard brcc: Branch if Carry Cleared brcs: Branch if Carry Set brhc: Branch if Half Carry is Set call: cp: Compare 7
jmp: Jump rcall: Relative Call to Subroutine ret: Return from Subroutine reti: Return from Interrupt rjmp: Relative Jump Schiebebefehle: Verschiedene Befehle clr r31 clc: Clear Carry Flag clh: Clear Half Carry Flag in: Load an I/O Location to Register in r31, PIND out: Store Register to I/O Location out PORTD, r31 pop: Pop Register from Stack push: Push Register on Stack swap: Swapp Nibbles nop: No Operation 6 Register SREG: Statusregister C: Carry Flag Z: Zero Flag N: Negative Flag... H: Half Carry Flag 8
7 Speicher-Typen Liste: 1. Halbleiter-Speicher (a) Festwertspeicher ROM i. einmal programmierbar: A. ROM, PROM ii. mehrfach programmierbar, PROM A. mit UV-Licht löschbar (EPROM) B. elektrisch löschbar (EEPROM) (b) Schreib-Lesespeicher RAM RAM SRAM DRAM ROM PROM EPROM EEPROM EAPROM i. statisches RAM ii. dynamisches RAM Flash-EPROM 8 Programmierbare Logik-Bausteine PAL (Programmable Array Logic, programmierbare Logik-Matrix) GAL (Gate Array Logic) 9 TTL-Schaltkreise 1. 74ALS: Advanced-Low-Power-Schottky 2. 74F: Fast-TTL 3. 74LS: Low-Power-Schottky-TTL 4. 74AS: Advanced-Schottky-TTL 5. 74L: Low-Power-TTL 6. 74S: Schottky-TTL 7. 74: TTL (Standard-TTL) 9
10 Liste der TTL-Schaltkreise NAND-Gatter: 7400, 4 NAND-Gatter mit 2 Eingängen 7410, 3 NAND-Gatter mit 3 Eingängen 7420, 2 NAND-Gatter mit 4 Eingängen 7430, 1 NAND-Gatter mit 8 Eingängen 74133, 1 NAND-Gatter mit 13 Eingängen NOR-Gatter: 7402, 4 NOR-Gatter mit 2 Eingängen 7427, 3 NOR-Gatter mit 3 Eingängen 7428, 4 NOR-Gatter mit 2 Eingängen UND-Gatter 7408, 4 UND-Gatter mit 2 Eingängen 7411, 3 UND-Gatter mit 3 Eingängen 7421, 2 UND-Gatter mit 4 Eingängen ODER-Gatter: 7432, 4 ODER-Gatter mit 2 Eingängen Antivalenz-Gatter (XOR) 7486, 4 XOR-Gatter mit 2 Eingängen Inverter (Negation) 7404, 6 Inverter Arithmetik-Funktion: 7483, 4-bit-Volladdierer 7485, 4-bit-Komperator 74181, 4-bit-Arithmetik-Logikeinheit (ALU) 74182, 4-bit-Parallel-Übertragungseinheit 74183, Zwei 1-bit-Volladdierer Multiplexer: 74151, 1-zu-8-Multiplexer 74153, Zwei 1-zu-4-Multiplexer 74157, Vier 2-zu-1-Multiplexer 74158, Vier 2-zu-1-Multiplexer mit invertierenden Ausgängen Decoder/Demultiplexer: 7442, BCD-zu-Dezimal-Decoder 10
11 Anschluss Anschluss der Taster (Input) Anschluss der LED s (Output) 11