-
Assembler Probleme
Hallo miteinander
Ich bin gerade an der Überarbeitung eines Programms für einen dsPIC30F6012A, und hierbei geht es um die optimierung der Geschwindigkeit.
Aus diesem Grund möchte ich ein paar Funktionen die in C geschrieben sind umschreiben in Assembler.
Leider ist diese Zeit schon etwas länger zurück, als ich mich ein wenig mit dieser Sprache beschäftigt hatte.
Der Compiler (HI-Tech dsPIC/PC24 V9.60) mekert bei mir bei folgenden kleinen Teilen:
Code:
BCF PORTC,14
BCF PORTC,13
BCF PORTC,2
BCF PORTC,1
Hier sei ein Syntaxfehler. Nur welcher?
Besten Dank für die Hilfe
MFG
P51D
-
Wenn der Compiler meckert, dann soll das wohl Inline ASM werden. Dann braucht man da noch einiges um den eigentlichen ASM Code umd dem Compiler zu sagen was ASM ist, und was normaler C Code.
Dazu kommt ggf. noch ein extra Zeilenumbruch, z.B. mit \n\t .
-
mhm, laut manual ist nichts spezielles zu beachten:
Diese 2 Möglichkeiten werden geboten:
Code:
unsigned int var;
void main(void)
{
var = 1;
#asm // like this...
mov.w _var,w0
sl.w w0,w0
mov.w w0,_var
#endasm
// or like this
asm("mov.w _var,w0");
asm("sl.w w0,w0");
asm("mov.w w0,_var");
}
aber dennoch, besten Dank für den Ratschlag.
MFG
P51D
-
Hallo P51D,
hast Du mal nachgeschaut ob Dein PIC den Assemblerbefehl "BCF..." überhaupt kennt.
Hatte mir die 24er nur mal kurz für ein Projekt angeschaut, aber da war was mit BCLR um Bit's zu löchen...
Gruß André
-
Wenn PORTC ein Byte ist, sind die Bitnummern 13 u. 14 etwas hoch.
-
Hallo,
habe noch mal bei mir nachgeschaut,...BCLR ist richtig.
@PicNick
"dsPIC30F6012A" ist ein 16 Bit MC.
Gruß André