Elektroda.pl
Elektroda.pl
X
Computer Controls
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Problem z prostym programem do 89C2051 w Keil

30 Wrz 2005 19:16 1956 2
  • Poziom 18  
    Niedawno kupilem książke (Programowanie mikroprocesorów 8051 w języku C) programator do 2051 i 4051, 89C2051 i resztę elektroniki. W książce są przykladowe programy do 89C51ED2 i program powodujący mruganiem diody led ma taką postać :

    /*****************************************************************
    led.c (mruganie diody LED)

    Program powoduje mruganie diody LED dołączonej do P3_2.
    *****************************************************************/

    #include <51xD2.h> // zbiór definiujący rejestry procesora

    //----------------------------------------------------------------
    void main(void) {
    WORD i;
    while (1) { // pętla bez końca

    P3_2 = !P3_2; // negacja stanu bitu P3_2

    for(i=0;i<0xffff;i++){}; // opóźnienie czasowe
    }
    }

    Więc chcąc napisać program do 2051, uruchamiam Keil, tworzę nowy projekt w nowym folderze, pyta mnie o procesor więc wybieram AT89C2051, wpisuje program:

    /*****************************************************************
    led.c (mruganie diody LED)


    *****************************************************************/

    #include <2051.h> // zbiór definiujący rejestry procesora

    //----------------------------------------------------------------
    void main(void) {
    WORD i;
    while (1) { // pętla bez końca

    P1_2 = !P1_2; // negacja stanu bitu P3_2

    for(i=0;i<0xffff;i++){}; // opóźnienie czasowe
    }
    }
    naciskam F7 (Build target) i plik typu HEX nie zostaje utworzony, oto tekst z okienka Build po próbie kompilacji:

    Build target 'Target 1'
    assembling STARTUP.A51...
    linking...
    *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL: ?C_START
    MODULE: STARTUP.obj (?C_STARTUP)
    *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL: ?C_START
    MODULE: STARTUP.obj (?C_STARTUP)
    ADDRESS: 080AH
    Program Size: data=9.0 xdata=0 code=15
    "newproject" - 0 Error(s), 2 Warning(s).

    od kilku dni próbuję i niewiem gdzie są blędy, ciągle ten sam komunikat, domyślam się że zmienna "i" jest źle zdefiniowana, ale nie wiem jak to poprawnie zrobić, w książce są jedynie przyklady do 89C51ED2. Zalanczam zrzut z ekranu, po naciśnięciu F7. Liczę na waszą pomoc
  • Computer Controls
  • Pomocny post
    Poziom 39  
    Bez zbędnych ceregieli zapytam:
    a)WORD i; // co to jest WORD ? zmień na np. unsigned int i;
    b)#include <2051.h> // a msz taki plik w kalalogu C51\INC\Atmel ?? nie masz - zmień #include <at892051.h>
    c)w Target1->Source Group 1 masz tylko plik "STARTUP.A51"(nie widać ale można sie domyślić po raporcie kompliacji) , więc dodaj tam jeszcze swój plik.c i dopiero skompiluj.
    Code:

    Build target 'Target 1'
    compiling Test2.c...
    assembling STARTUP.A51...
    linking...
    Program Size: data=9.0 xdata=0 code=33
    "zettest" - 0 Error(s), 0 Warning(s).

    Jak otrzymasz takie coś , to możesz sobie uruchomić debugger,menu-Pheripherals->I/O Ports->port 3 i obserwować jak "mruga"

    Piotrek

    PS
    Jak nie dasz rady , wypróbuj załącznik ;)
  • Computer Controls
  • Poziom 18  
    Udalo mi się nareszczie utworzyć plik typu HEX. Poblem polegal na tym że źle definiowalem zmienną "i" oraz w Target1-> Source Grup nie mialem żadnego pliku typu c. plik ten musialem skopiować, ponieważ nie wiem jak utworzyć taki plik typu c.

    zumek masz może jakieś materialy dotyczące programowania 89c2051 w języku c ?