Hallo!

Weil ich mich ständig mit verschiedenen PICs beschäftige und mir eine Unterprogrammbibliothek erstellt habe, wo ich mir schon entwickelte Unterprogramme ablege, habe ich folgendes festgestellt:

Damit Programme auf allen PICs laufen, darf man nur 34 Befehle (ausser CLRW) von PIC12XXX und PIC16FXXX benutzen und für Variablen nur die RAM Adressen ab 20h bis 4Fh definieren.

Da die PIC18FXXX keine Bankumschaltung haben, mussen alle Bankumschaltungen, wie bsf STATUS,RP0 und bcf STATUS,RP0 entfernt werden.

Wegen nur 2 Befehlen (warum haben die Spezialisten vom Microchip das nicht einheitlich gemacht ?), muss mann entsprechend der Pfeilrichtung folgendes ersetzen:

PIC12FXXX oder PIC16FXXX <---> PIC18FXXX:

.....................................RLF <---> RLCF

.....................................RRF <---> RRCF

Bei Änderung "fremden" Programmen vom PIC12FXXX oder PIC16FXXX auf PIC18FXXX gibt es noch ein Befehl:

PIC12FXXX oder PIC16FXXX---> PIC18FXXX

................................CLRW ----> MOVLW 0

Alle andere Befehle vom PIC18FXXX sind für die PIC12FXXX und 16FXXX "nicht verständlich" und müssen in kleine Befehlsequenzen "übersetzt werden". Zum Beispiel:

"MOVFF A,B" in "MOVF A,0"
........................"MOVWF B".

Bei indirekter Adressierung kommen noch ein paar Kleinigkeiten dazu.

Wenn man ein Programm auf einem anderen PIC laufen lassen will, müssen alle benutzte I/O Pins entsprechend umdefiniert und genauso wie im unsprünglichen Programm initialisiert werden.

MfG