Include i MPLAB?
Include i MPLAB?
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?
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?
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...
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...
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.
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.
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?
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?
> 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.
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

Edit -> Advanced -> Comment Block.
Edit -> Advanced -> Uncomment Block.
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.
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.