I2C-Implementierung bei PIC-Fehler

Ich beziehe mich auf dieses Projekt: http://www.8051projects.net/wiki/I2C_Implementation_on_PIC

Ich verwende PIC16F1847 und XC8 im Gegensatz zu PIC16F877 und HiTech C, daher musste ich einige Änderungen am Code vornehmen. Nachdem ich Änderungen vorgenommen hatte, gab mir mein Compiler einen Fehler für die I2CWait-Funktion für die While-Anweisung. Da steht "unerwarteter Token-Amp".

Hier die betreffende Zeile:

while ((SSPCON2 & 0x1F ) || ( SSPSTAT & 0x04 ) );

Ich habe die Registernamen so geändert, dass sie mit den Registern meines PIC (unten) übereinstimmen, aber das Problem wurde dadurch nicht gelöst.

while ((SSP1CON2 & 0x1F ) || ( SSP1STAT & 0x04 ) );

Welche Änderungen muss ich an dieser Funktion vornehmen, damit dieser Fehler nicht auftritt?

[ Bearbeitet Mi 29.06.2016, 15:37 ]

Compiler sprechen Sie sehr deutlich an: "unexpected token amp".
Dies ist ein gutes Beispiel dafür, warum das Kopieren/Einfügen von Code, ohne ihn zu verstehen , seine Tücken hat.

Antworten (1)

while ((SSPCON2 & 0x1F ) || ( SSPSTAT & 0x04 ) );

Das ist ein Website-Fehler (HTML-Codierung) und wird niemals funktionieren, da es ein ungültiges "C" ist. Diese Zeile sollte lauten:

while ((SSPCON2 & 0x1F ) || ( SSPSTAT & 0x04 ) );

Ich kann nicht zur Korrektheit des Codes insgesamt auf der von Ihnen zitierten Webseite sprechen, aber Sie werden viele Webseiten finden, die Code diskutieren, einschließlich der korrigierten Zeile, die ich gegeben habe.

@dyoussef - Natürlich nehmen Sie die entsprechende Änderung am zweiten von Ihnen angegebenen Beispiel vor, wenn Sie diese unterschiedlichen Registernamen benötigen. Viel Glück!