Sida 1 av 1

macroproblem med PIC

Postat: 14 juli 2005, 22:28:26
av EagleSpirit
Har stött på ett problem med programmeringen av en PIC i assembler. Hade tänkt använda ett macro för att kunna utföra samma kod till olika utgångar. Det jag vill göra är typ:

Kod: Markera allt

#DEFINE output_1    PORTC,1
#DEFINE output_2    PORTC,2

send_out macro output
     call wait 5ms
     bsf output
     goto main
   ENDM

main:
    send_out output_1
    send_out output_2
goto main
Är detta möjligt? Jag får bara fel när jag försöker kompilera den här kodsnutten. Finns det någon alternativ väg att gå som är ungefär lika smidigt?

Tack på förhand.

//Simon

Postat: 14 juli 2005, 22:54:41
av cyr
Om jag inte är helt borta nu, så tror jag problemet är att "PORTC,2" tolkas som två argument till makrot.

Om du skriver om det så här kanske det funkar:

Kod: Markera allt

send_out macro port,bit
     call wait 5ms
     bsf port,bit
     goto main
   ENDM 
Med reservation för att jag kanske helt glömt hur makrona i PIC-asm funkar, många andra språk i huvudet just nu :D

Postat: 15 juli 2005, 00:31:49
av sodjan
Suck... :-)

> "Jag får bara fel..."

Jaha ? Vadå för fel ?? Jag kan sätta en slant på att du faktiskt får något felmeddelande med en kod och en förklarande text, eller hur ?

För tillfället, utan att ha testat i MPLAB, tror jag på Cyr's lösning...

Förresten, varför har du en "goto main" i ditt macro ?

Din kod (efter macro expansion) kommer att se ut så här :

main:

call wait 5ms
bsf PORTC, 1
goto main

call wait 5ms
bsf PORTC, 2
goto main

goto main


Är det det du vill ha ? Du kommer aldrig att sätta bit 2...

Postat: 15 juli 2005, 01:32:03
av EagleSpirit
Ojdå, tänkte inte på det. Skrev koden lite snabbt och såklart det inte är sådär i det riktiga programmet. Där finns det lite fler rutiner än main :P

Cyr har faktiskt rätt. Den tror att det är 2 argument. Förlåt att jag glömde skriva det. Aja, blir väl till att dela upp dom då.

Tack för hjälpen.

Postat: 15 juli 2005, 03:59:11
av Maalobs
Skriv aldrig av kod som du vill ha hjälp med, kopiera in texten istället.
Annars slösar du bara bort tid för folk som du söker hjälp hos.

Postat: 15 juli 2005, 07:22:34
av EagleSpirit
Jag sparar väl andras tid om jag plockar bort säg 3 sidor kod som inte har nånting med problemet att göra? Dessutom ville jag ju egentligen inte ha hjälp med koden utan jag ville veta hur man kan använda macron.

Aja, nu slutar vi prata om det tycker jag. Jag ska tänka på det nästa gång jag skapar en tråd.

Postat: 15 juli 2005, 11:12:00
av sodjan
Kod som inte direkt har med problemet att göra skall naturligtsvis bort. Som t.ex interrupt koden i ett kodexempel i en annan tråd tidigare i veckan.

Den kod som blir *kvar* måste dock testas ordentligt så att den verkligen uppvisar det "problem" som man söker hjälp för.

För oss andra finns det inget som heter "det riktiga programmet", det enda som vi känner till är det som är postat i tråden !

Kanske att det skulle skrivas en "lathund" för för hur man gör i ordning kodexempel innan man postar dom... :-)