Sida 1 av 1
Problem med assemblerkod
Postat: 27 september 2005, 12:45:10
av MaggoT
Hejsan, tänkte jag skulle ta och lära mig lite assembler, har läst lite på avrbeginners.net men exempelkoden jag hittade där verkar inte fungera
Kod: Markera allt
.org 0x0000
rjmp main
main:
ldi r16, 0xFF
out DDRB, r16
loop:
sbi PortB, 3
cbi PortB, 3
rjmp loop
Får följande felmeddelande
Kod: Markera allt
Building project...
AVRASM: AVR macro assembler 2.0.28 (build 121 Jan 11 2005 10:28:51)
Copyright (C) 1995-2005 ATMEL Corporation
D:\Avrprojekt-asm\ledblink.asm(6): error: Undefined symbol: DDRB
D:\Avrprojekt-asm\ledblink.asm(8): error: Undefined symbol: PortB
D:\Avrprojekt-asm\ledblink.asm(9): error: Undefined symbol: PortB
Assembly failed, 3 errors, 0 warnings
Hur löser jag detta? Använder AVRStudio.
Postat: 27 september 2005, 12:49:30
av frejo
DDRB är ju något som ska peka på datariktningsregistret för port B. Det brukar vanligtvis vara deklarerat i en include-fil, så jag misstänker att du saknar include-filen för den typ av AVR du använder.
Det kan också vara så att AVRStudio behöver veta vilken AVR du använder för att känna igen symbolen DDRB
Nu ska du nog inte lita blint på det jag säger då jag bara jobbat i C mot avr:n

Postat: 27 september 2005, 13:08:08
av MaggoT
Okej, det låter rimligt

Hittade endast en fil som skulle kunna vara den rätta, kopierade den och försökte inkludera såhär:
Kod: Markera allt
.include "C:\tiny26.xml"
.org 0x0000
rjmp main
main:
ldi r16, 0xFF
out DDRA, r16
loop:
sbi PortA, 3
cbi PortA, 3
rjmp loop
Men får:
Kod: Markera allt
Building project...
AVRASM: AVR macro assembler 2.0.28 (build 121 Jan 11 2005 10:28:51)
Copyright (C) 1995-2005 ATMEL Corporation
D:\Avrprojekt-asm\ledblink.asm(1): error: Cannot find include file: C:\tiny26.xml
Assembly failed, 1 errors, 0 warnings
Sökvägen är bombsäkert rätt

kanske filen måste ligga på något speciellt ställe för att det skall gå att inkludera? (Är det helst rätt fil? Den låg i C:\Program Files\AVR Tools\Partdescriptionfiles\, gick inte att inkludera därifrån heller)
Postat: 27 september 2005, 15:27:04
av cykze
Prova:
.include "C:\\tiny26.xml"
.include "C:/tiny26.xml"
Sen kommer du inte hinna marka att pinne 4 pa PortA andras savida du inte kopplar pinnen till t ex ett oscilloskop. Men det kanske du ar medveten om.
Postat: 27 september 2005, 15:37:37
av MaggoT
Jag hittade rätt fil nu,
C:\Program Files\AVR Tools\AvrAssembler2\Appnotes\tn26def.inc
fungerade utmärkt med
.include "tn26def.inc" utan sökväg.
cykze> Jo jag vet, jag följer guiden steg-för-steg

ville inte fortsätta förräns jag fick det steget att fungera så...
Anyway, tack för er hjälp.