Warum pic18fxxx-Mikrocontroller besser für die Sprache C geeignet sind

Die Pic18fxxx-Familie hat viele Vorteile und Verbesserungen gegenüber der pic16fxxx-Familie von Mikrocontrollern. Was ist das besondere Merkmal, das sie für die C-Programmierung besser macht als die pic16fxxx-Geräte?

Was lässt Sie denken, dass sie ideal für C sind? Ich würde argumentieren, dass jedes PIC24-Gerät vom architektonischen Standpunkt aus weitaus "idealer" ist als jedes PIC16 / 18-Gerät (mehr Register, mehr RAM ...), und jeder PIC32 ist von Natur aus weitaus "idealer" als ein PIC24 es ist MIPS-Architektur ...
Entschuldigung, ich schreibe es falsch. Ideal im Vergleich zu pic14f Geräten nicht zu anderen.
PIC14F? Diese Familie existiert nicht, oder?
Ich meine pic16fxxx. Fehler über Fehler!
Eigentlich gab es mal einen PIC 14, aber jetzt zusammen mit dem PIC 17 hat es ihn "nie gegeben".

Antworten (3)

"ideal für" kenne ich nicht. Das ist ein Marketingbegriff, der in einer gelehrten Diskussion nichts zu suchen hat.

Ein großer Vorteil der PIC 18-Architektur gegenüber der ursprünglichen PIC 16-Architektur, insbesondere in Bezug auf Compiler, besteht jedoch darin, dass es möglich ist, einen Software-Datenstapel auf einem PIC 18 mit einzelnen Anweisungen für PUSH und POP zu implementieren. Der PIC 18 hat auch einen tieferen Aufrufstapel, 32 gegenüber 8, was hilfreich sein kann, wenn ein Compiler implizit Unterroutinen aufruft. Der indirekte Adressierungsmodus von PLUSW ist wahrscheinlich etwas, von dem ein Compiler häufiger Gebrauch machen würde als ein menschlicher Programmierer.

Der PIC 18 hat auch andere Vorteile, die sowohl für Compiler als auch für menschliche Programmierer nützlich sind, wie z ein paar andere Feinheiten.

Sie haben Recht, ich habe auf "besser" als "ideal" geändert.

Einige C-Compiler speichern lokale Variablen auf einem Hardware- oder Software-Stack. Wenn Code in ein Unterprogramm eintritt, wird die Größe seiner lokalen Variablen zu einem Register addiert oder von ihm subtrahiert, das als Stapel-/Rahmenzeiger verwendet wird. Wenn der "erweiterte Befehlssatz" aktiviert ist, können PIC18Fxx-Befehle direkt auf die ersten ~96 Bytes nach der Frame-Pointer-Adresse zugreifen. Das ist FASTeine wirklich gute Funktion. Es wäre eine wirklich gute Funktion gewesen, wenn z. B. der Prozessor 15 Bytes des Adressraums ohne Bank auf Adressen 1-15 Bytes über FSR2 und 7 Bytes auf Adressen 1-7 Bytes über jedem der anderen FSR-Register abgebildet hätte. während der größte Teil des Speicherplatzes ohne Bank als RAM ohne Bank verbleibt. Ungeachtet der Tatsache, dass die meisten Funktionen nicht einmal acht Bytes lokalen Speichers haben werden (viel weniger 16), ist es leider absurd, 96 Adressen aufzugeben, um die Offsets 0-95 über FSR2 zu handhaben.

Beachten Sie, dass einige andere C-Compilersysteme feste Adressen für lokale Variablen zuweisen; solche Systeme bestimmen zur Verbindungszeit, welche Funktionen nicht gleichzeitig "lebendig" sein können, und können die Variablen für solche Funktionen denselben Adressen zuweisen. Vorausgesetzt, der Code wird nicht wiedereintrittsfähig aufgerufen, kann dieser Ansatz genauso effizient (manchmal effizienter) sein als die Verwendung eines Stacks. es funktioniert jedoch nicht mit Wiedereintrittsroutinen.

Sie können Google gut nach den vielen Vergleichen zwischen PIC16F und PIC18F fragen.

Kommen Sie zu Ihrer Frage, warum pic18fxxx-Mikrocontroller besser für die C-Sprache geeignet sind?

PIC18F oder jeder andere Mikrocontroller, der für die C- Sprache besser angenommen werden kann, sind solche Mikrocontroller, die solche Assembleranweisungen standardmäßig unterstützen, die C-Compilern helfen können, effiziente und optimierte Hex-Dateien zu erstellen.

Ein wichtiges Beispiel für diese Art von Anweisungen können MATH-bezogene Anweisungen sein

Der XC8-Compiler unterstützt einen erweiterten Befehlssatz, der speziell C-Compilern hilft, eine optimierte Binärdatei zu generieren.

Dies ist eine Nicht-Antwort. Das OP weiß bereits, dass ein PIC 18 C besser unterstützt, fragte aber, wie genau es das tut.
Ich habe bereits erwähnt, dass pic16f durch die Unterstützung des vollen Befehlssatzes für besondere Leistung nicht verfügt
Richtig, aber das liegt auf der Hand und war bereits bekannt. Dem OP ist bereits bewusst, dass der PIC 18 "viele Vorteile und Verbesserungen gegenüber dem pic16fxxx" hat . Ohne zu erklären, was Ihrer Meinung nach, wie bestimmte Anweisungen und dergleichen, Compilern hilft, ist dies überhaupt keine Antwort.