PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
EagleSpirit
Inlägg: 1288 Blev medlem: 27 maj 2003, 23:15:48
Ort: Västerås
Kontakt:
Inlägg
av EagleSpirit » 14 juli 2005, 22:28:26
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
cyr
Inlägg: 2712 Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:
Inlägg
av cyr » 14 juli 2005, 22:54:41
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
sodjan
EF Sponsor
Inlägg: 43251 Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Inlägg
av sodjan » 15 juli 2005, 00:31:49
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...
EagleSpirit
Inlägg: 1288 Blev medlem: 27 maj 2003, 23:15:48
Ort: Västerås
Kontakt:
Inlägg
av EagleSpirit » 15 juli 2005, 01:32:03
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
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.
Maalobs
Inlägg: 1304 Blev medlem: 3 februari 2005, 14:35:15
Ort: Stockholm
Inlägg
av Maalobs » 15 juli 2005, 03:59:11
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.
EagleSpirit
Inlägg: 1288 Blev medlem: 27 maj 2003, 23:15:48
Ort: Västerås
Kontakt:
Inlägg
av EagleSpirit » 15 juli 2005, 07:22:34
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.
sodjan
EF Sponsor
Inlägg: 43251 Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Inlägg
av sodjan » 15 juli 2005, 11:12:00
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...