1 / 13

Eliminieren der zusätzlichen Schlüsselwörter Programmieren von intrinsic-Funktionen

Welche Maßnahmen muss man treffen, um sowohl unter BORLAND als auch unter KEIL kompilieren zu können?. Eliminieren der zusätzlichen Schlüsselwörter Programmieren von intrinsic-Funktionen sfr->char, sfr16->integer Rest: #ifdef __BORLANDC__ #ifdef __C51__

Download Presentation

Eliminieren der zusätzlichen Schlüsselwörter Programmieren von intrinsic-Funktionen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Welche Maßnahmen muss man treffen, um sowohl unter BORLAND als auch unter KEIL kompilieren zu können? • Eliminieren der zusätzlichen Schlüsselwörter • Programmieren von intrinsic-Funktionen • sfr->char, sfr16->integer • Rest: #ifdef __BORLANDC__#ifdef __C51__ • Geeignet für höherwertige, anwendungsnahe Programmteile

  2. Wie wirkt sich die Wahl eines Compiler-Modells aus? • Datentypen, die nicht explizit einem Speicherbereich zugewiesen sind, werden entsprechend dem Modell angelegt.SMALL data 128 (all incl.)COMPACT pdata 256 LARGE xdata 64 k

  3. Was muss man bei Interruptprogrammierung beachten? • Die Interrupt-Routine ist kurz, ohne Schleifen. • Sie kommuniziert mit dem Hauptprogramm über Globale Variable • Will man PUSH-POS-Sequenzen vermeiden, sollte man USING verwenden • Der Aufruf von Funktionen ist nur bedingt möglich. Man muss darauf achten, dass die Funktionen reentrant sind.

  4. Warum gibt es Funktionen mit einem Unterstrich? • Beim Compilieren stellt der Compiler einem Variablen- oder Funktionsnamen einen Unterstrich voran, um die C-Funktionen von sonstigen Assembler-Funktionen unterscheiden zu können • C++-Compiler benutzen auch einen Doppelunterstrich für das Name-Mangling • Bei der Benennung von Variablen und Funktionen sollte man jeweils nur einen Unterstrich verwenden und den nicht am Beginn des Namens

  5. Wie spricht man Hardware an, die im externen Speicher dekodiert ist? • Definition unsigned char xdata *hardw ; hardw=(unsigned char xdata *)0xFF02; • Lesen printf("%c",*hardw); • Schreiben *hardw=5;

  6. Gibt es Grundregeln für C am 51er-Mikrocontroller? • Das Hauptprogramm endet mit einer Endlosschleife (Ausnahme: Echtzeitkern) • Bei der Festlegung der Variablen für Zahlen ist immer char vorzuziehen. (dann int, long, float in dieser Reihenfolge)

  7. Ein SFR wird vom Compiler nicht unterstützt! Es fehlt nur der Eintrag in der Header-Datei reg81xxx.h. Man fürgt diesen Eintrag in der eigenen Datei oder in der Header-Datei ein • Byte sfr P9 = 0xF7; • Bit sbit CY=PSW^7;

  8. Die Funktionen printf(), scanf() funktionieren nicht! • Man muss definieren, was Ein- und Ausgabekanäle sind (COM-Schnittstelle, Tastatur/LCD-Display) • Man muss die 2 Funktionen putchar() und _getkey() dafür schreiben • Man muss die serielle Schnittstelle initialisieren

  9. Welche Funktionen sind reentrant? • Funktionen, die mit dem zusätzlichen Schlüsselwort reentrant versehen sind • Verschiedene niederwertige Bibliotheksfunktionen (Liste siehe Handbuch) • Sie legen die Übergabeparameter am Stack an • C51-C legt Übergabeparameter wegen der höheren Ablaufgeschwindigkeit auf absolute Adressen. Asynchron gestartete Interruptroutinen würden Variablen überschreiben, daher müssen alle diese Funktionen zur Parameterübergabe am Stack gezwungen werden

  10. Ich möchte ein Assemblerprogramm einbinden! • Brauchen Sie das wirklich? Entwickler von Compilern beschäftigen sich überwiegend mit der Optimierung von Assemblerkode. Vielleicht haben Sie nur ein paar Gesichtspunkte außer Acht gelassen?

  11. Ich vermisse die Rotate-Befehle aus dem Assembler-Befehlssatz! • Die Sprache C kennt diese Befehle tatsächlich nicht. Man verwendet die instrinsic-Funktionen aus der C-Bibliothek • _crol_(), _irol_(), _lrol_(), _cror_(), _iror_(), _lror_()

  12. Wie erfolgt die Verbindung eines Target-Systems zum PC? • Voraussetzungen • 1. Verbindung der seriellen Schnittstelle • PC z.B. COM 2 • µC-System an COM1 (COM 0 bleibt frei) • 2. Ist die Verbindung ausgekreuzt? (Voltmeter, Schnittstellentester)

  13. Der gewünschte Modus ist "Monitor Mode". Es kann auch vorkommen, dass sich der Monitor-Modus meldet aber nicht wirklich eingeschaltet ist. Wenn sich der "Terminal Mode" meldet, muss man den Fehler bei der seriellen Schnittstelle und am Target-System suchen. Testen des Monitor-Programms • Start von MON51 am PC • C:\>MON51 COM2 BAUDRATE (9600) • *** Monitor Mode *** • # • Testmöglichkeiten: • # HELP • #DC 0,FF • #EX 8000

More Related