Thread View: pl.comp.lang.asm
2 messages
2 total messages
Started by ici
Sat, 12 Jun 2010 00:01
Błąd: syntax Unexpected REGDEF
Author: ici
Date: Sat, 12 Jun 2010 00:01
Date: Sat, 12 Jun 2010 00:01
61 lines
2462 bytes
2462 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
Re: Błąd: syntax Unexpected REGDEF
Author: "Bogdan (bogdro)
Date: Tue, 15 Jun 2010 18:03
Date: Tue, 15 Jun 2010 18:03
80 lines
3281 bytes
3281 bytes
W dniu 12.06.2010 00:01, ici pisze: > 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. [...] Zauważyłeś, że _LCD_Text wylądowało już w kolejnej linijce? Widocznie, na przykład, tylko 4 funkcje zostaną umieszczone w tej samej linii w pliku asemblerowym. Nie mam najbledszego pojęcia o programowaniu AVRów ani o tym kompilatorze C, ale może spróbuj przerobić plik C/H tak, aby następowały po sobie co najwyżej 3 (czy tyle, ile będzie trzeba) deklaracje funkcji. Tak, aby było np. .DB LOW(_LCD_Init),HIGH(_LCD_Init),LOW(_LCD_Cls),HIGH(_LCD_Cls), __ LOW(_LCD_XY),HIGH(_LCD_XY) [tutaj np. jakieś zmienne czy cokolwiek] .DB LOW(_LCD_Char),HIGH(_LCD_Char) [tutaj reszta] Swoją drogą, te "__" z przodu wyglądają dziwnie. Masz to w kodzie, czy do wiadomości się wkleiło samo? Może to to jest problem? -- Pozdrawiam/Regards - Bogdan (GNU/Linux & FreeDOS) Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro Grupy dyskusyjne o asm: pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32 www.JabberPL.org www.TorProject.org Soft (EN): miniurl.pl/bogdro-soft
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads