Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November 2007 1 Mikrocomputertechnik Herzlich Willkommen Jürgen.

Ähnliche Präsentationen


Präsentation zum Thema: "Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November 2007 1 Mikrocomputertechnik Herzlich Willkommen Jürgen."—  Präsentation transkript:

1 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Mikrocomputertechnik Herzlich Willkommen Jürgen Walter

2 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb. 4.1 Zahlendarstellung

3 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb. 4.2 Befehl für 8051

4 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.1 Übersetzung des Codes in eine Hexadezimal BitkombinationAls HexadezimalzahlMnemotechnischer Code B74Hmov A, B59H #89

5 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb. 4.3 Beschaltung der Ports

6 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4. 2 Dokumentation der Beschaltung PortAnschlussBemerkung P1.1T1Taster 1 P1.2T2Taster 2 P1.3T3Taster 3 P3.2L1Leuchtdiode 1 P3.3L2Leuchtdiode 2 P3.4L3Leuchtdiode 3

7 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb. 4.4 Struktogramm für das erste, einfache Programm EIN_AUS.ASM

8 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Programm: EIN_AUS $ title (EIN_AUS) $debug ;Einfaches Programm zum Ein- Ausschalten einer Leuchte ;Taster 1 Einschalten, Taster 2 Ausschalten ;Taster 3 Programm beenden CSEG AT 0H ;Legt absolute Codesegmentadresse auf 0h ljmp ANFANG ;Sprung auf Programmanfang ORG 100H ;Programmstart bei 100H ANFANG: jnb P1.1,LICHT_EIN ;Schalter 1 betaetigt ? jnb P1.2,LICHT_AUS ;Schalter 2 betaetigt ? jnb P1.3,PROGRAMM_ENDE ;Programmende ajmp ANFANG ;Springe zur Adresse Anfang LICHT_EIN: clr P3.2 ;Licht einschalten ajmp Anfang ;Springe zur Adresse Anfang LICHT_AUS: setb P3.2 ;Licht ausschalten ajmp ANFANG ;Springe zur Adresse Anfang PROGRAMM_ENDE: ljmp 8000H ;Monitoreinsprung end

9 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb. 4.5 Symbole für Programm- Ablaufpläne

10 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb. 4.6 Erstellen eines neuen Projektes

11 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb. 4.7 Speichern der Projektdatei: Ein_aus.uv2

12 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb. 4.8 Auswahl des Controllers

13 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb. 4.9 Auswahl des Derivates SAB 80C535 für die EURO-535-Karte

14 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Einstellungen für die gewählte Hardwareumgebung

15 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Hinzufügen der Datei

16 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Das editierte Programm EIN_AUS.asm

17 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Das editierte Programm Ein_aus.asm mit Start/Stop Debug Session

18 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Das editierte Programm Ein_aus.asm im Debug-Modus

19 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Das editierte Programm Ein_aus.asm mit abgearbeiteten Befehlen

20 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Einstellungen in der Registerkarte Debug

21 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Das editierte Programm Ein_aus.asm nach Auslösen des Ladevorganges zur EURO_535

22 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Debug-Fenster nach Verbindungsaufnahme mit der EURO_535-Karte mit MON51 und das Setzen von Breakpoints

23 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Breakpoint LICHT_AUS

24 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Entwicklungsablauf

25 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Ablauf Programm- entwicklung

26 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Speicherbereiche 8051 / 80535

27 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.3 und Tabelle 4.4 Assembler Anweisungen Symboli sche Adresse Anwei sung OperantFunktionFunktionsbeschreibung Speicher Initialisierung und Reservierung [ :]DB Define byte in program memory Definiere Byte (8 Bit) im Programmspeicher [ :]DW Define word in program memory Definiere Wort (16 Bit) im Programmspeicher

28 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.3 und Tabelle 4.4 Assembler Anweisungen Symbolisch e Adresse Anweis- ung OperantFunktionFunktionsbeschreibung [ :]DBIT Advance bit location counter Reserviere Byte im bitadressierbaren Bereich Symbol Definitionen EQU Create new symbolDefinition eines neuen Symbols (nicht redefinierbar) SET Set symbol value temporarily Definition eines neuen Symbols (redefinierbar) USING - 0,1,2,3 - Select register bankWahl der aktuellen Registerbank mit R0, R1, R2, R3, R4, R5, R6, R7 CODE Define code address symbol Definition eines Symbols im Programmspeicher DATA Define data adress symbolDefinition eines neuen Symbols im internen Datenspeicher IDATA Define indirect data adress symbol Definition eines neuen Symbols im indirekt adressierbaren internen Datenspeicher XDATA Define an off chip data adress symbol Definition eines neuen Symbols im externen Datenspeicher BIT Define a bit adress symbolDefinition eines Symbols im bitadressierbaren Bereich

29 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.3 und Tabelle 4.4 Assembler Anweisungen Relative Segmente SEGME NT {CODE|XDAT A|DATA|IDAT A|BIT} [ _{PAGE|INPA GE|INBLOCK | BITADRESS ABLE|UNIT}] Declare relocatable segment. [Assign attributes] Definition eines Segmentnamens mit einer Typangabe sowie ggf. Speichergrenzen RSEG Select relocatable segment Aktivieren des vorher definierten relativen Segments

30 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.3 und Tabelle 4.4 Assembler Anweisungen Absolute Segmente CSEG[AT ] select code segmentDie folgenden Befehle und Definitionen werden auf absolute Adressen im CODE-Segment bezogen DSEG[AT ] select internal data segment Die folgenden Definitionen werden auf absolute Adressen im internen Datenspeicher-Segment bezogen ISEG[AT ] Select indirect internal segment Die folgenden Definitionen werden auf absolute Adressen im indirekt adressierbaren Datenspeicher- Segment bezogen XSEG[AT ] select external data segment Die folgenden Definitionen werden auf absolute Adressen im externen Datenspeicher-Segment bezogen BSEG[AT ] select bit adress segment Die folgenden Definitionen werden auf absolute Adressen im bitadressierbaren Segment bezogen Assembler Kontrolle für Zustände ORG Set location counter value Setzt den Adresszähler auf ENDEnd of programEnde des Programms

31 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Registerbänke

32 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.5 Interrupt Vektoren im Programmspeicherbereich des 8051 PCInterrupt NameErklärung 0000HRESETStart Address after Reset 0003HEXTIOExternal Interrupt 0 000BHTIMER 0Timer 0 Overflow Interrupt 0013HEXTI1External Interrupt 1 001BHTIMER1Timer 1 Overflow Interrupt 0023HSINTSerial Channel 0 Interrupt

33 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Programmspeicher

34 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Interner Datenspeicher

35 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Externer Datenspeicher

36 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Bitadressierbarer Bereich

37 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Abb Speicherbereiche - Segmente

38 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.6 Assembler Controls. ControlDefaultAbkürzu ng Funktion [ { _ MOD51 } ] * [ { _ NOMOD51 } ] * MOD51-Mit MOD51 benutzt der Assembler die SFR- und Bitsymbole des SAB8051. NOMOD51 unterdrückt die Standardsymbole des [ { _ DATE ( ) } ] * DATE ()DAText aus max. 9 Zeichen wird im Seitenkopf als Überschrift ausgegeben [ { _ DEBUG } ] * [ { _ NODEBUG } ] * NODEBUGDB / NODB Aufnahme bzw. Unterdrückung der Symboltabelle in die Objektcodedatei für das symbolische Testen mit dem ETA [ { _ EJECT } ]no EJECTEJPapiervorschub auf Formularanfang [ { _ GEN } ]GEGenerieren der Makro-Definition, der Makroaufrufe und der Makroexpansionen in der List-Datei [ { _ GENONLY } ]GENONLYGOGenerieren von ausschließlich Makroexpansionen in der List-Datei, als ob die Expansion Teil des Quellenprogramms wäre. [ { _ NOGEN } ]NOGEGenerieren der Makro-Definitionen, der Makroaufrufe.

39 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.6 Assembler Controls. ControlDefaultAbkürzungFunktion [ { _ LIST } ] [ { _ NOLIST } ] LISTLI / NOLIErstellen bzw. Unterdrücken einer Übersetzungsliste [ { _ MACRO [ ( ) } ] * [ { _ NOMACRO } ] * MACRO (50) MR / NOMRAuswerten und Expandieren von Makro-Aufrufen (bzw. keine Auswertung und Expansion bei NOMACRO). Prozentuale Zuweisung des verfügbaren Speichers [ { _ OBJECT ( ) } ] * [ { _ NOOBJECT } ] * OBJECT ( ) OJ / NOOJErstellung bzw. Unterdrückung einer Objekt- codedatei [ { _ PAGELENGTH ( ) } ] * PAGELEN GTH (60) PLEinstellung der Anzahl der Zeilen pro Seite (minimal 10, maximal 65535) [ { _ PAGEWIDTH ( ) } ] * PAGEWID TH (120) PWEinstellung der Anzahl der Zeichen pro Zeile (72 <= n <= 132) [ { _ PAGING } ] * [ { _ NOPAGING } ] * PAGINGPI / NOPIAufteilung bzw. Nichtaufteilung der Über- setzungsliste in Seiten mit Überschrift [ { _ PRINT ( ) } ] * [ { _ NOPRINT } ] * PRINT ( ) PR / NOPRErstellung bzw. Unterdrückung einer Übersetzungs-Listendatei

40 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.6 Assembler Controls. [ { _ REGISTERBANK ( [...]) } ] * [ { _ NOREGISTERBANK } ] * REGISTER BANK (0) RB / NORB Reservierung der benutzten Registerbänke im Programm Modul. Mit NORB wird keine Registerbank reserviert [ { _ RESTORE } ]no RESTORE RSWiederaktivierung der zuletzt sichergestellten Steuerparameter LIST, GEN [ { _ SAVE } ]no SAVESASicherstellen der augenblicklichen Zustände der Steuerparameter LIST, GEN [ { _ SYMBOLS } ] * [ { _ NOSYMBOLS } ] * SYMBOLSSB / NOSB Aufnahme bzw. Unterdrückung der Symboltabelle in die Übersetzungsdatei [ { _ TITLE (' ') } ] no TITLETTAusgabe der Zeichenfolge in der Über- setzungszeile (max. 60 Zeichen) einer jeden Seite der List-Datei [ { _ WORKFILES (ddd[, ddd]) } ] * same drive as source file WFZuweisung Laufwerke für temporäre Arbeitsdateien des Assemblers [ { _ XREF } ] * [ { _ NOXREF } ] * NOXREFXR / NOXR Aufnahme bzw. Unterdrückung der Symbol- Querverweisliste in die Übersetzungsdatei

41 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.7 Program Status Word - Programm-Status- Wort Abkürz- ung AdresseBedeutung CYBIT0D7HCarry flag ACBIT0D6HAuxiliary carry flag for BCD operations F0BIT0D5HGeneral purpose user flag RS1BIT0D4HRegister bank select bits (00 - Bank 0; 01 Bank 1) RS0BIT0D3HRegister bank select bits (10 - Bank 2; 11 Bank 3) OVBIT0D2HOverflow flag F1BIT0D1HGeneral purpose user flag PBIT0D0HParity flag. wird bei jeder Instruktion gesetzt, rückgesetzt, ODD-EVEN von Akkumulator

42 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.8 Special Function Register nach funktionellen Gruppen BlockSymbolRegisterAdresseWert nach Reset CPUACCAkkumulator0E0H1)00H BHilfsregister B0F0H1)00H DPTRDatenzeiger, High Byte Low Byte 83H 82H 0000H PSWProgramm-Status-Wort0D0H1)00H SPStapel-Zeiger81H07H PCProgramm-Zähler0000H InterruptIEInterrupt-Freigabe0A8H1)00H SystemIPInterrupt-Priorität0B8H1)00H PortsP0Port 080H1)0FFH P1Port 190H1)0FFH P2Port 20A0H1)0FFH P3Port 30B0H1)0FFH SerielleSCONSerielle Port Kontrolle098H1)00H SchnittstelleSBUFSerielle Ein-/ Ausgangspuffer99Hundefined Timer 0/TCONZeitgeberkontrolle88H1)00H Timer 1TMODZeitgebermodus89H00H TH0, TL0 Zählerinhalt Zeitgeber 08CH 8AH 0000H TH1, TL1 Zählerinhalt Zeitgeber 18DH 8BH 0000H Erweiterung InterruptIEN0Interrupt-Freigabe-Register 00A8H1)00H SystemIEN1Interrupt-Freigabe-Register 10B8H1)00H

43 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.8 Special Function Register nach funktionellen Gruppen Block SymbolRegisterAdresseWert nach Reset IP0Interrupt Priorität Register 00A9H00H IP1Interrupt Priorität Register 10B9HXX B 3) IRCONInterrupt Anforderung Kontrolle0C0H 1) 00H TCON 2) Zeitgeber 1 Kontrolle88H 1) 00H T2CON 2) Zeitgeber 2 Kontrolle0C8H 1) 00H PortsP4Port 40E8H 1) 0FFH P5Port 50F8H 1) 0FFH P6Port 6, Analog/Digital Input0DBH Power Saving Mode PCONEnergiespar-Modus Power Control Register 87H00H Serielle Schnittstelle ADCONA/D Wandlung, aber hier 7. Bit BD Baudrate 4800/9600 0D8H 1) 00H PCON 2) Power Control, aber hier 7. Bit SMOD Baudrate verdoppelt 87Hundefined Compare/CCENVergleich Übernahme Freigabe0C1H00H Capture -Unit CCH1 CCL1 Vergleich Übernahme Register 10C3H 0C2H 00H (CCU)CCH2 CCL2 Vergleich Übernahme Register 20C5H 0C4H 00H CCH3 CCL3 Vergleich Übernahme Register 30C7H 0C6H 00H CCH4 CCL4 Vergleich Übernahme Register 40CFH 0CEH 00H CRCH CRCL Vergleich /Lade/Übernahme Register 0CBH 0CAH 00H TH2 TL2 Zählerinhalt Zeitgeber 20CDH 0CCH 0000H T2CONZeitgeberkontrolle 20C8H 1) 00H A/DADCONA/D-Wandler Kontrolle0D8H 1) 00H WandlerADDATA/D-Wandler Datenregister0D9H00H DAPRD/A-Wandler Kontrolle0DAH00H

44 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.9 Wichtige Schreibweisen und Bedeutungen für die Befehle AbkürzungBedeutung #dataDaten sind in der Instruktion codiert - # = Zahl data addrSpeicheradresse innerhalb des Chips Rr0 r 7 Allgemein verwendbares Register der r 1 indirekt adressierbares Register der Registerbänke code addr16-Bit-Adresse decodiert als: volle 16-Bit-Adresse 11-Bit-Seitenadresse 8-Bit relativer Offset AAkkumulator CCarry Flag bit addrBit-Adresse auf dem Chip / bit addrKomplementierter Inhalt der Bit-Adresse DPTRDatenzeiger ( Data Pointer ) PCProgrammzähler ( Program Counter ) ABRegister Paar

45 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.10 Registerinhalte nach RESET mit Übersetzung Register SymbolWert AccumulatorAkkumulatorACC00H MultiplicationsregisterHilfsregister BB00H Data PointerDatenzeigerDPTR0000H Interrupt EnableInterrupt FreigabeIEN0,IEN100H Interrupt PriorityInterrupt PrioritätIP0, IP100H Port 0 P00FFH Port 1 P10FFH Port 2 P20FFH Port 3 P30FFH Program CounterProgramm ZählerPC0000H Program Status WordProgramm Status WortPSW00H Serial Port ControlSerielle Port KontrolleSCON00H Serial I/O-BufferSerielle Ein-/ Ausgangspuffer SBUFUndef. Stack PointerStapel-ZeigerSP07H Timer ControlZeitgeberkontrolleTCON00H Timer ModeZeitgebermodusTMOD00H Timer 0 CounterZählerinhalt Zeitgeber 0TH0,TL00000H Timer 1 CounterZählerinhalt Zeitgeber 1TH1,TL10000H

46 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.10 Registerinhalte nach RESET mit Übersetzung Erweiterung Timer 2 ControlZeitgeber 2 KontrolleT2CON00H Register SymbolWert Timer 2 CounterZählerinhalt Zeitgeber 0TH2,TL20000H Interr. Request Reg.Interrupt AnforderungIRCON00H Interrupt Control Reg.Interrupt KontrollregisterIRCON00H Comp. Capture Reg. 1Vergl. Übern. Reg. 1CCH1,CCL100H Comp. Capture Reg. 2Vergl. Übern. Reg. 2CCH2,CCL200H Comp. Capture Reg. 3Vergl. Übern. Reg. 3CCH3.CCL300H Comp./Rel./CaptureVergl. /Lade/Übern. Reg.CRCH,CRCL00H Timer 2 Control Reg.Zeitgeberkontrolle 2T2CON00H A/D Conv. Contr. Reg.A/D-Wandler KontrolleADCON00H D/A Conv. Progr. Reg.D/A-Wandler KontrolleDAPR00H Power Control Reg.Versorgungs-KontrollePCON00H Comp./capture enableVergl.-Übern. FreigabeCCEN00H A/D Conv. data RegisterA/D-Wandler Datenreg. 8ADDAT00H

47 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.11 PCON BITS Power Control Bits 87HSMODPDSIDLS-GF1GF0PDEIDLEPCON Diese Bits werden nicht für den Stromsparmodus verwendet BitFunktion PDSPower Down Start Bit. Wird dieses Bit gesetzt, ist dies der letzte Befehl, bevor in den Stromsparmodus umgeschaltet wird. IDLSIDLS Start Bit Wird dieses Bit gesetzt, ist dies der letzte Befehl, bevor in den IDLE- Mode (nur CPU ohne Takt) umgeschaltet wird. GF1Bit zur allgemeinen Verwendung GF0Bit zur allgemeinen Verwendung PDEPower Down Enable. Ermöglicht bei "1" den Stromsparmodus IDLEIdle mode Enable bit. Ermöglicht bei "1" den IDLE-Mode

48 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.12 IEN0 Interrupt 0 Control Bits A8HEALWDTET2ESET1EX1ET0EX0IEN0 Wird nicht für Watchdog verwendet BitFunktion WDT"0" Externer Interrupt 0 gesperrt "1" Erzeugt ein Zurücksetzen des Watchdog Timers. Muss unmittelbar vor SWDT gesetzt werden, um ein unbeabsichtigtes Rücksetzten zu vermeiden. SWDT Watchdog Timer start/refresh flag ist in IEN1 (0B8H)

49 Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November Tabelle 4.13 IP0 Control Bits BitFunktion WDTSWatchdog timer status flag "1" wird durch Hardware bei Start des Watchdog Timers erzeugt. Kann durch Software ausgelesen werden. 0A9H-WDTSIP0.5IP0.4IP0.3IP0.2IP0.1IP0.0IP0 Wird nicht für Watchdog verwendet


Herunterladen ppt "Mikrocomputertechnik 4 Assembler für die 8051-Controller-Familie Prof. J. Walter Stand November 2007 1 Mikrocomputertechnik Herzlich Willkommen Jürgen."

Ähnliche Präsentationen


Google-Anzeigen