Article View: pl.comp.lang.asm
Article #2270Błąd: syntax Unexpected REGDEF
From: ici
Date: Fri, 11 Jun 2010 22:01
Date: Fri, 11 Jun 2010 22:01
60 lines
3281 bytes
3281 bytes
Cześć,
Nie mam już pomysłu o co tutaj chodzi?
Pewnie kwestia jakiegoś ustawienia?
Kręcę się w kółko.
Może ktoś mi coś podpowie? Z góry dziękuję.
Kompilator C CodeVisionAVR v2.04.4a dla mikrokontrolerków AVR.
Kompiluje program bez błędów, natomiast podczas linkowania tworzy się
plik assemblerowy z głupim błędem. Ponieważ wszystko dzieje się z
automatu, nie mam wpływu na to co linker tworzy.
Opis błędu jak w tytule. Poprawienie błędu ręcznie nie daje rezultatu,
bo dzieje się to podczas procesu linkowania w automacie.
A potem linker wywala błąd i po zawodach.
Kawałek tego automatycznego kodu w asm:
RJMP 0x00
RJMP 0x00
RJMP 0x00
RJMP 0x00
_0x24:
.DB LOW(_0x23),HIGH(_0x23)
_0x2A: //**poniżej dłuuuga linijka generująca błąd
.DB LOW(_LCD_Init),HIGH(_LCD_Init),LOW(_LCD_Cls),HIGH(_LCD_Cls),
__ LOW(_LCD_XY),HIGH(_LCD_XY),LOW(_LCD_Char),HIGH(_LCD_Char)
.DB LOW(_LCD_Text),HIGH(_LCD_Text)
_0x0:
.DB 0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
.DB 0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
.DB 0x2A,0x0,0x20,0x53,0x74,0x61,0x72,0x74
.DB 0x20,0x5A,0x61,0x73,0x69,0x6C,0x61,0x63
.DB 0x7A,0x61,0x0
_0x200005F:
//*************
Chodzi o nienaturalnie długą linię .DB pod adresem 0x2A (trochę się
połamała przy wklejaniu do tego postu, ale ciąg znaków jest w jednym
wierszu.
Ten kawałek w assemblerze odpowiada kodowi w C:
(deklaracje procedur poniżej kody źródłowe w LCD1.H)
//****************************************************************
void LCD_Init(void); //Inicjowanie wyświetlacza LCD
void LCD_Cls(void); //Czyść ekran
void LCD_XY(char k, char w); //Ustaw współrzędne kursora ko
void LCD_Char(char znak); //Umieszcza znak na wyświetlaczu
void LCD_Text(char *ptext); //Pisz tekst na LCD wskazywany
void LCD_Int(int i); //Pisz Integer
//****************************************************************
Biblioteka LCD1.H własnej roboty ale sprawdzona w starszej wersji
Kompilatora/rów.
Próbowałem wyłączyć generację .ASM bo plik nie jest mi do niczego
potrzebny ale nie znalazłem sposobu na odhaczenie takiej opcji.
Ze względu na ograniczoną liczbę portów I/O kontrolera musiałem użyć
swojej biblioteki, oryginalna operuje na 7 bitach, moja na 6, co w
ATmega8 pozwala wykorzystać 6-cio bitowy PORTB do wyświetlacza,
pozostałe 2 bity PB6 i PB7 zajmują wejścia dla kwarca zegarowego.
Pzdr.
ici
Technical Details
Message-ID:
<huubnn$ri4$1@news.onet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mail From: ici <ici@poczta.onet.pl> Newsgroups: pl.comp.lang.asm Subject: Błąd: syntax Unexpected REGDEF Date: Sat, 12 Jun 2010 00:01:27 +0200 Organization: http://onet.pl Lines: 60 Message-ID: <huubnn$ri4$1@news.onet.pl> NNTP-Posting-Host: aarm220.neoplus.adsl.tpnet.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1276293687 28228 83.5.198.220 (11 Jun 2010 22:01:27 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Fri, 11 Jun 2010 22:01:27 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit