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

Jak napisać program do 89C2051 w Keil na podstawie książki?

paw789 30 Wrz 2005 19:16 2250 2
REKLAMA
  • #1 1862557
    paw789
    Poziom 18  
    Posty: 298
    Pomógł: 20
    Ocena: 68
    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
    Załączniki:
    • Jak napisać program do 89C2051 w Keil na podstawie książki? Keil.JPG (114.21 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • Pomocny post
    #2 1863262
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    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.
    
    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 ;)
    Załączniki:
    • zzzzzz.zip (17.8 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #3 1864109
    paw789
    Poziom 18  
    Posty: 298
    Pomógł: 20
    Ocena: 68
    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 ?
REKLAMA