PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Assembler Probleme



P51D
29.09.2010, 16:07
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:


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

Besserwessi
29.09.2010, 18:42
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 .

P51D
29.09.2010, 19:24
mhm, laut manual ist nichts spezielles zu beachten:
Diese 2 Möglichkeiten werden geboten:


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

Andre_S
30.09.2010, 13:49
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é

PicNick
30.09.2010, 14:53
Wenn PORTC ein Byte ist, sind die Bitnummern 13 u. 14 etwas hoch.

Andre_S
01.10.2010, 18:26
Hallo,

habe noch mal bei mir nachgeschaut,...BCLR ist richtig.

@PicNick
"dsPIC30F6012A" ist ein 16 Bit MC.


Gruß André