Include i MPLAB?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
klasg
Inlägg: 187
Blev medlem: 29 juni 2005, 21:12:24

Include i MPLAB?

Inlägg av klasg »

Hej.
Jag har en dum fråga angående MPLAB 7.3:
Kan man inkludera en fil i MPLAB med rutiner som man ofta använder och bara låta använda rutiner hamna i PICen? För när jag inkluderar nu så hamnar hela include-filen i PICen trots att jag inte kallar alla rutiner.

En till fråga: Jag har inte hittat något sätt att kommentera bort stycken, liknandes som, /**/ i C. Kan man det?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Allt i filen som du gör #INCLUDE på kommer med, korrekt.
Det är ju, utifrån MPASM sida, ingen som helst skillnad mellan
att göra #INCLUDE och att lägga in koden direkt. Det handlar
bara om hur du väljer att administrera din kod. #INCLUDE direktivet
gör ingen analys av vad som används eller inte, den bara kopierar
in hela filen.

Det du kan göra är att dela upp INC filen i flera delar, och sedan med
"conditional assembly" (d.v.s med ifdef... endif) lyfta in rellevanta delar.
Dels kan du naturligtsvis själv definiera symboler som styr dessa
ifdef's, eller så använder man t.ex processorunika symboler, för att
t.ex includera rätt kod beroende på om man för tillfället bygger koden
för PIC16 eller PIC18.

Det går även att få MPLINK att länka in rutiner beroende på vad som
"anropas" från koden. Jag är inte helt uppdaterad på hur det går till
dock, jag misstänker att det kräver att man bygger LIB's (med MPLIB)
där man lägger sina .O filer. Dock så är det inte många som gör det
p.g.a vissa begränsningar när man länkar mot färdiga objekt filer.

> Jag har inte hittat något sätt att kommentera bort stycken, liknandes som, /**/ i C. Kan man det?

Om det gör det så borde det vara dokumenterat.

Men det går att lösa med "ifdef... endif". Det finns även en funktion
fär att rad-kommentera hela stycken. Ibland blir det tydligare
vad som är kommenterat när allt blir grönt...
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

För att kommentera bort bitar av kod fungerar det alldeles utmärkt med:
if 0 ; koden inte med, 1=koden med
endif

Dessa statements ska stå i första kolumn.

Såklart fungerar "ifdef...endif" också, dessa är ju kanon till processorspecifika saker, jag använder dom t.ex. på det vis att om PIC'en har AD-ingång och jag inte vill använda detta kollar jag med en "ifdef" om AD-disable registret finns och OM det finns blir det ställd till "disabled" helt automagisk.
Användarvisningsbild
klasg
Inlägg: 187
Blev medlem: 29 juni 2005, 21:12:24

Inlägg av klasg »

Tack ni.
Synd att assemblern inte själv fattar vilka rutiner jag kallar på från *.inc. Tanken var att skapa en hejdundrandes lång include-fil med massa saker man kan anropa, framförallt delay.

Jag var egentligen ute efter att kommentera bort som på vanligt vis, fast hela stycken. Men if kan vara smidigt det också, har inte labbat med det än dock.

"Det finns även en funktion fär att rad-kommentera hela stycken."
Du kan inte avslöja den hemligheten?
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Ett ';' gör just det: allt efter ; är kommentar....

Edit:
Du kan ju göra så att du (som jag) anger:

#define USE_UART
#define USE_AD
...
#include "thebigone.asm"

och sedan i include-filen använda 'ifdef xxx ... endif' till de enstaka delarna.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Synd att assemblern inte själv fattar vilka rutiner jag kallar på från *.inc.

Fel. Du "kallar" inte på rutiner från INC filen. Det är feltänkt...

Igen, det är ingen som helst skillnad på att gör #INCLUDE som att
lägga in samma text direkt i ASM filen.

Jag vet för övrigt inget programeringsspråk där det sker en partiell
"include" från "include filer". Oavsett PIC eller någon annan plattform.

Det du kan göra, och det är väl så man bör göra, är som
Icecap beskriver.

> > "Det finns även en funktion fär att rad-kommentera hela stycken."
> Du kan inte avslöja den hemligheten?

Det hade gått snabbare att kolla direkt i MPLAB :-) , men :

Edit -> Advanced -> Comment Block.
Edit -> Advanced -> Uncomment Block.
Användarvisningsbild
klasg
Inlägg: 187
Blev medlem: 29 juni 2005, 21:12:24

Inlägg av klasg »

Sant sodjan, jag kallar på en rutin som råkar ligga i en *.inc-fil som inkluderas på samma ställe i koden. Men som sagt så var det inte den funktionen jag var ute efter.

Det hade nog inte gått snabbare att göra det i MPLAB, för jag har inte MPLAB här. Men när jag kommer hem kan jag göra det jättesnabbt nu :)
Att kommentera på det sättet får nog duga.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

En fördel *tycker jag* med block comment, är att allt blir grönt,
så det blir väldigt tydligt... :-)
Skriv svar