MPlab och Assembler fråga

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
SmourF
Inlägg: 268
Blev medlem: 13 april 2004, 15:33:58
Ort: Jönköping
Kontakt:

MPlab och Assembler fråga

Inlägg av SmourF »

hej,

har suttit och programmerat assembler, och min fråga är enkel för den som kan :) har sökt men inte funnit ngt svar

om jag kodar i assembler i mplab, skapar ett projekt säg 16F84A,

är det möjligt att ha subrutiner i en annan fil ? och sedan includa i main filen

exempelt, main.asm "programmet i sig", init.asm "allt som ska initieras", delay.asm "en delay subrutin"

när man börjar närma sig över 500 rader, vill man dela upp det, hade ju förenklat så mkt

sen en annan fråga, stötte på CBLOCK när jag sökte runt idag, de fanns en fråga här med om CBLOCK och en sa, mplab manualen där finns svaren, kanske ja va blind men isf var PDFs sökmotor de me :)

min fråga är enkelt, fungerar den som en sk STRUCT,

exempel, skriver jag
CBLOCK .20
namn, efternamn
ENDC

genererar den då namn, efternamn, namn, efternamn i all evighet "tills minnet tar slut" ? och hur anropar man de då, rent fysiskt eller finns det som i C(++) en förenkling

tack i förhand

säkert ngt otydligt som jag skrivit, isf klaga ;)

MVH SmourF
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> är det möjligt att ha subrutiner i en annan fil ?

Ja, två metoder.

1. Antingen (den enkla men lite stelbenta metodern) med #include.
D.v.s att din subrutin bara läses in i huvud-ASM fil och MPASM ser det
som om det hade varit en enda fil från början.

2. Eller (snyggare och modernare) genom att köra relocatable-code.
Läs på om EXTERN och GLOBAL o.s.v. Stora projekt byggs snabbare
eftersom bara den kod som behöver assembleras om.

> fungerar den [CBLOCK] som en sk STRUCT,

NEJ!

CBLOCK (står för Constant BLOCK) skapar bara ett gäng konstanter
som du kan använda i programmet.

CBLOCK h'20'
namn
efternamn
ENDC

Detta skapar en konstant med namn "namn" och värde h'20'
och en annan konstant med namn "efternamn" med värde 'h21'.

Notera att det finns en väl spritt missförstånd att CBLOCK (och EQU)
allokerar minne, det gör de INTE. Båda skapar bara namnsatta konstanter
med givna värden som kan användas till vad som helst. Men de har
inte ett smack med minnesallokering att göra !!

Och snälla, blanda inte in C++ i det här. Försök glömma det helt. Gör
inga jämförelser... :-)
Användarvisningsbild
HenkiBoy
Inlägg: 131
Blev medlem: 9 februari 2005, 13:09:13
Ort: Halland

Re: MPlab och Assembler fråga

Inlägg av HenkiBoy »

sodjan skrev:2. Eller (snyggare och modernare) genom att köra relocatable-code.
Läs på om EXTERN och GLOBAL o.s.v. Stora projekt byggs snabbare
eftersom bara den kod som behöver assembleras om.
I vilken pdf ska man leta efter detta?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: MPlab och Assembler fråga

Inlägg av sodjan »

Tja, enklast i manualen.
Förslagsvis MPASM/MPLINK manualen eftersom det hela handlar om det.
Eller hur menade du ?

För en snabb intro kan du även kolla :
http://www.jescab.se/Relocmode.html
http://www.jescab.se/abs_reloc.html
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: MPlab och Assembler fråga

Inlägg av Icecap »

Så CBLOCK fungerar som enum{} i C alltså. Se där, då har jag lärt mig lite idag med.
Skriv svar