AVRStudio i dwie zmienne pod jednym adresem

Oct 07, 2005 5 Replies

Witam !



Nowsze wersje AVRStudio wykrywaj± b³±d gdy zadeklaruje siê dwie zmienne pod tym samym adresem. Co jednak zrobiæ w przypadku gdy chcê aby ró¿ne procedury u¿ywa³y tego samego kawa³ka pamiêci. Wymy¶li³em sobie taki przyk³ad:



.dseg .org 100



ifdef A Nazwa1: .byte 100 .else Nazwa1: .byte 50 .endif .... .... .dseg .org 100



Nazwa2: .byte 50 . ifdef B Nazwa3: .byte 2 .endif



ifdef C Nazwa 4: .byte 5 .endif



Nazwa5: .byte 20



Jak to trzeba napisaæ aby przy kompilacji nie pojawia³ siê b³±d ?



Pawe³



Paweł snipped-for-privacy@neostrada.pl napisał(a):

1)Assembler nie operuje na zmiennych , tylko na etykietach. 2)Do tego samego adresu , możesz przypisać więcej niż jedną etykietę ;) 3)Chyba żaden porządny kompilator , nie pozwala "cofnąć" licznika segmentu. 4)Rozwiń bardziej temat , jak byś widział etykiety dla różnych "ifów" i "defów". ..

Z rozwagą ;-)

Pozdrawiam Piotrek

OK Dokona³em pewnego uproszczenia. W segmencie .dseg znajduj± siê dane, zmienne itp.

Starsze wersje AVRStudio pozwala³y to robiæ.

Nie bardzo wiem co mam rozwin±æ. Za³ó¿my, ¿e kompilator pozwala "cofn±æ" licznik segmentu. W takiej sytuacji podany przyk³ad skompiluje siê bez problemu. Je¶li kompilator na to nie pozwala to ten przyk³ad trzeba jako¶ zmodyfikowaæ aby móc go skompilowaæ. Chodzi mi w³a¶nie o t± modyfikacjê.

Pawe³

OK. Nie wnikając w dalsze szczegóły , proponuję Ci lekarstwo.

-Oie

Piotrek

Piotrek Sz. snipped-for-privacy@gazeta.pl napisał(a):

Zapomniałem jeszcze o ... #pragma overlap ignore ;lub warning jeśli ma tylko ostrzegać ;-) .dseg .org 100

ifdef A Nazwa1: .byte 100 .else Nazwa1: .byte 50 .endif .... .... .dseg .org 100

Nazwa2: .byte 50 . ifdef B Nazwa3: .byte 2 .endif

ifdef C Nazwa 4: .byte 5 .endif

Nazwa5: .byte 20

Piotrek

PS Help "całą prawdę Ci powie" ;-)

Dziêkuje ! To rozwi±za³o problem.

Pawe³

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required