Hallo zusammen,
ich wollte "mal wieder" etwas Assembler in meinen XC8 Code bringen,
dafür wollte ich aber keinen neuen Thread öffnen, daher führe ich das mal hier weiter:
Der XC8 inline Assembler scheint irgendwie überhaupt nicht mit dem XC8-Compiler zu harmonieren.
Ich kann weder auf Variablen noch auf Konstanten zugreifen, es gibt ständig nur Fehlermeldungen.
Hier mal ein Auschnitt des Screenshoots: ich hab mal den Fehlermeldungen daneben geschrieben
![Klicke auf die Grafik für eine größere Ansicht
Name: xc8_inline_2.jpg
Hits: 8
Größe: 60,8 KB
ID: 33294](https://www.roboternetz.de/community/attachment.php?s=5f645b96839fe42ac83697a1e2a91d05&attachmentid=33294&d=1519337585&thumb=1)
Hier ein Ausschnitt des inline Codes:
Code:
#define LED_COUNT 24
unsigned char LedArray[LED_COUNT];
unsigned char byteCount;
unsigned char bitCount;
void LedShiftOut(void)
{
asm("BANKSEL LedArray");
asm("LFSR FSR0,LedArray");
asm("BANKSELECT byteCount");
asm("movlw LED_COUNT");
asm("movwf byteCount");
asm("ByteLoop:");
asm("movlw 8");
asm("movwf bitCount");
asm("movwi fsr0++");
asm("BitLoop:");
asm("RRF WREG,F");
asm("btfss STATUS,Z");
asm("goto isOne");
asm("isZero:");
asm("bcf LATA,5");
asm("NOP");
asm("NOP");
asm("goto BitLoop");
asm("isOne:");
asm("bsf LATA,5");
asm("NOP");
asm("NOP");
asm("decfsz bitCount,F");
asm("goto BitLoop");
asm("decfsz byteCount,F");
asm("goto ByteLoop");
// 50us Pause
}
was mache ich denn falsch ?, das kann doch nicht so kompliziert sein.....
Es wird mir wieder Mal nix anderes übrig bleiben als den gesamten Code in Assembler zu programmieren.![Sad](https://www.roboternetz.de/phpBB2/images/smiles/icon_sad.gif)
[edit]
auf dei Variablen kann ich evtl. zugreifen wenn ich einen Unterstrich benutze, zumindest meckert der Compiler dann nicht.
Es bleiben aber noch genug Probleme übrig...
Lesezeichen