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?
"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.
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.
Adam Lawrence
xkrpz
Benutzer17592
xkrpz
Olin Lathrop