logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega32 - Błąd w kodzie, wyświetlacz od nokii 3310

bloniak91 04 Gru 2013 21:41 1713 13
  • #1 13025743
    bloniak91
    Poziom 9  
    Witam,
    wraz z przewodnikiem Elektroniki dla Wszystkich próbuję zaprogramować wyświetlacz od nokii 3310. Kod myślę, że poprawnie przepisałem, jednak wyskakują następujące błędy przy kompilowaniu:
    In file included from main.c:6:
    lcd3310.h: In function 'Lcd_GoTo':
    lcd3310.h:29: warning: implicit declaration of function 'Lcd_Command'
    main.c: In function 'main':
    main.c:13: warning: implicit declaration of function 'XPOTR'
    main.c:13: error: 'C' undeclared (first use in this function)
    main.c:13: error: (Each undeclared identifier is reported only once
    main.c:13: error: for each function it appears in.)
    main.c:13: error: lvalue required as left operand of assignment
    main.c:16: warning: implicit declaration of function 'lcd_init'
    make.exe: *** [main.o] Error 1
    

    Dołączam cały program i bardzo proszę o pomoc, wskazanie jakiś wskazówek....
    harddef.h
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    lcd3310.h
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    makra.h
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    lcd3310.c
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    main.c
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #2 13025872
    BlueDraco
    Specjalista - Mikrokontrolery
    A konkretnie co jest niejasne w komunikatach kompilatora?
  • #3 13025924
    bloniak91
    Poziom 9  
    implicit declaration of function...które powtarza się kilka razy. Kompilator ma problem z niektórymi funkcjami, nie widzi ich (to nie jest fachowe określenie)? Są źle zadeklarowane?...

    Uczę się i próbuję programować, dlatego też korzystam z takich pomocy jakich dostarcza Elektronika dla Wszystkich. Nie rozumiem w czym wystąpił tutaj błąd jeśli kod został przepisany.
  • #5 13026013
    bloniak91
    Poziom 9  
    Tak, pliki mam w drzewie projektu.
    Dodanie pętli nic nie zmieniło.
    Ok, na przyszłość będę pamiętał o znaczniku Syntax
  • #6 13026083
    astdar
    Poziom 10  
    Witaj,

    Wybacz, nie mam czasu na czytanie całego kodu ale:
    implicit declaration oznacza po prostu że kompilator spotkał się po raz pierwszy z daną nazwą i to w miejscu gdzie nie powinno mieć to miejsca, czyli zazwyczaj przy wywoływaniu funkcji. Deklaracja funkcji, czyli nazwa i argumenty powinna być zadeklarowana w pliku cośtam.h - tym który dołączasz instrukcją #include.
    Jeśli jest implicit declaration to powody mogą być następujące:

    1. nie dałeś instrukcji #include ....
    2. dałeś include ale pomyliłeś się w nazwie pliku albo kompilator nie znalazł tego pliku
    3. pomyliłeś się w nazwie funkcji: zadeklarowałeś void moj_main(void) a potem wywołujesz mjo_main()

    W Twoim kodzie jest jeden taki przypadek ma być XPORT a jest XPOTR
    Uwaga bo małe i wielkie litery mogą być powodem różnicy.

    Miłego wieczorku
    md
  • Pomocny post
    #7 13026098
    el2010tmp
    Poziom 25  
    W pliku "makra.h" zamiast:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    powinno być:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    ( tak mi się wydaje :D )
  • #8 13026161
    bloniak91
    Poziom 9  
    Szukałem sam, przeglądałem, ale jak raz błędu się nie zauważy, to potem jest co raz gorzej :D Poprawiłem tą cześć w makra.h, ale nadal występują błędy:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Dodano po 2 [minuty]:

    Ok, poradziłem sobie z większością błędów, został mi tylko jeden:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #10 13026229
    el2010tmp
    Poziom 25  
    W pliku "lcd3310.h" przed:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    powinna być przynajmniej deklaracja:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #11 13026792
    BlueDraco
    Specjalista - Mikrokontrolery
    Kompilator tłumaczy cierpliwie:
    lcd3310.h:31: warning: implicit declaration of function 'Lcd_Command'

    Nie masz funkcji o nazwie Lcd_Command - sprawdź i popraw literówkę.

    lcd3310.c:38: warning: implicit declaration of function 'Lcd_send'

    Jak wyżej.

    Co do trzeciego błędu - nie widząc kodu trudno pokazać, co zepsułeś.
  • #12 13026984
    bloniak91
    Poziom 9  
    harddef.h
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    makra.h
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    lcd3310.c
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    lcd3310.h
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    main.c
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    kombinowałem różnie,przejrzałem kod kilkadziesiąt razy. Nadal są błędy:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #14 13027472
    Samuraj
    Poziom 35  
    Funkcje lcd_Goto sam dopisałeś do pliku lcd3310.h ?
    Przenieś ją do lcd3310.c na sam koniec pliku.
    Zawsze mnie uczono iż deklaracja funkcji jest w plikach nagłówkowych .h a ciało funkcji już w pliku .c
REKLAMA