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

uC 8051 i C, programator ISP. Trudne początki. Nie dam rady.

MlodyAmator 28 Sty 2008 17:37 4860 19
REKLAMA
  • #1 4745343
    MlodyAmator
    Poziom 13  
    Posty: 112
    Pomógł: 7
    Ocena: 8
    Witam.

    Widziałem dużo ciekawych projektów na µC na elektrodzie i nie tylko, nie ukrywam, że mi się to bardzo spodobało, ale sam nie wiedziałem z której strony to ugryźć. A w związku z tym, że chodzę do technikum elektronicznego, i już jestem w III klasie, dostałem projekt do wykonania.
    Chciałem oprócz tego projektu [suchej teorii] zrobić kilka praktycznych rzeczy i tu zaczęły się schody [to było 3 tygodnie temu]. Otóż kupiłem sobie książkę "Programowanie mikro procesorów 8051 w C na przykładach" wydawnictwa BTC w której "zadania" wykonywane były w oprogramowaniu Raisonance. Po długiej męce udało mi się zdobyć ów program i co się okazało? Że nawet najprostsze programy, ba nawet przykłady zawierały błędy niemożliwe więc było zrobienie cokolwiek z nimi. Poszukałem więc innych programów i tak zaczynając od WinAVR przez AVRStudio i kilka innych skończyłem na CodeVisonAVR C Compiler i nadal nic mi nie wychodzi.
    Wiem, że nie jestem "tępy", ale chyba zmienię to zdanie po ostatnich 3 tygodniach.
    Opisałem więc całą moją pierwszą styczność z µC i jak tak dale pójdzie zostanę "łopatologiem" a nie elektronikiem.
    A teraz sedno: Posiadam program ISPProg Adama Dybkowskiego oraz progrmator ze strony http://www.amwaw.edu.pl/~adybkows/elka/ispprog.html.
    Nadal próbuje swych sił w Raisonance, ale nie wiem co mam napisać, żeby nie było błędów. Poniżej zamieszczam mój kod, który to ma za zadanie mrugać diodą LED w stanie niskim na porcie P1.0 z opuźnieniem przez pętle FOR.
    #include <reg51.h>             /*inicjacja pliku "reg51.h"*/
    int a;
    void czekaj(unsigned char x)  /*utorzenie "czekaj" dla programu glownego*/
    {
    for(a=0;a<250000;++a)         /*pętla !!!OKOŁO!!! 1s. przy kwarcu 3MHz*/
    }                             /*[tak przynajmniej teorytycznie mi wyszło ;)]*/
    void main(void)               /*program glowny*/
    {
    while(1)                      /*petla nieskonczona*/
    {
    P1^0=1;                       /*dioda nie swieci*/
    czekaj(1);                    /*czeka 1s*/
    P1^0=0;                       /*dioda swieci*/
    czekaj(1);                    /*czeka 1s*/
    }
    }                             /*Koniec*/
    
    Teraz tak:
    1.Czy to jest dobrze?
    2.Co mam z tym zrobić, żeby wykonać symulacje na PC?
    3.Trzeba jakoś skonfigurować kompilator do kwarca, timera czy peryferii uC?
    4.Jak z tego uzyskać plik .HEX do wgrania na proca?

    Pozdrawiam,
    Piotrek.
  • REKLAMA
  • Pomocny post
    #2 4750860
    rrenio
    Poziom 11  
    Posty: 46
    Pomógł: 1
    Ocena: 1
    Witam jak chcesz moge ci pomoc. Pisze w asemblerze jesli ci to nie przeszkadza. Moge dostarczyc ci programiki do obslugi
    klawiatury
    lcd
    pamieci
    eeprom isp
    ram isp
    przetwornika AC na isp
    uart rs232
    irdy

    Pozdrawiam daj znac jesli jestes zainteresowany
  • #3 4750899
    Spiochu
    Poziom 12  
    Posty: 88
    Pomógł: 1
    Ocena: 1
    Może napiszesz jakie to błędy? Jest w ich treści więcej informacji niż sądzisz;)
  • Pomocny post
    #4 4751142
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    MlodyAmator napisał:

    1.Czy to jest dobrze?
    2.Co mam z tym zrobić, żeby wykonać symulacje na PC?
    3.Trzeba jakoś skonfigurować kompilator do kwarca, timera czy peryferii uC?
    4.Jak z tego uzyskać plik .HEX do wgrania na proca?


    Ad 1. Składnia nie ma błędów.
    Ad 2. Najlepiej ściągnij pakiet Keila dla '51 (idealny dla początkująych).
    Ad 3. Nie (chyaba że korzystasz z wbudowanych bibliotek typu delay.h), trzeba tylko podać taką informację dla symulatora.
    Ad 4. Klikając "Build" oraz ustawiając w programie że ma "zrobić" .hex'a ;
  • #5 4751209
    PiotrPitucha
    Poziom 34  
    Posty: 2658
    Pomógł: 201
    Ocena: 423
    Cześć
    Zmień procesor na inny :)
    8051 nie programuje się ISP ( no może z drobnymi wyjątkami ), jak chcesz poeksperymentować to postaw np. na procesory AVR, masz do wyboru asembler, Bascom i C a wszystkie kompilatory bezpłatne do drobnych prac.
    Piotr
  • REKLAMA
  • #6 4751627
    MlodyAmator
    Poziom 13  
    Posty: 112
    Pomógł: 7
    Ocena: 8
    Witam.

    rrenio jestem zainteresowany wszystkim co może mi pomóc w nauce i przydać się w przyszłości. Z tym, że chce pisać w C, ponieważ asemblera znam tyko podstawy, a i kilka prostych programów w nim napisałem, ale strasznie długo mi to schodziło i przy przesiadce na AVR [którą planuje, w późniejszym czasie] nie wiem na ile może mi się przydać asm dla 8051. Z tego co widziałem, to inaczej się pisze dla AVR, a w C tylko inne niektóre komendy, np. odwołania do portów [w końcu język wyższego poziomu].

    Spiochu jeśli chodzi o błędy, to takie, że niby w złym miejscu dałem "{", lub że w ogóle go nie dałem, kiedy jak sam widzisz jest i to w tym miejscu w którym powinien. Jeśli zmienię, lub dodam ten znak tam gdzie sugeruje kompilator, to wtedy wywala mi tyle błędów ile jest komend między "{ ... }" i sam nie wiem o co chodzi...

    markosik20 wielkie dzięki, już myślałem, że to ja coś robie źle i moi znajomi nie widzą błędów [oni też się uczą]. Co do punktu 2. to miałem z tym mały problem, ale dzisiaj mi się udało w końcu ściągnąć z keil.com.

    PiotrPitucha planuje przesiadkę na AVR, ale na potrzeby projektu do szkoły powinienem wykorzystać 8051, poza tym chce sam zobaczyć, jak wyglądały początki programowania, a i wszyscy mówią, że zaczynając od 8051, można się wiele nauczyć, więcej niż na AVR. Ile w tym prawdy, sam zobaczę ;) Nie mówię, że nie, bo mógłbym dogadać się z profesorem, ale dlaczego mam iść łatwiejszą [?] drogą? Jeśli chodzi o 8051 programowane przez ISP to jest ich kilka, np. 89S2051[2kB], 89S4051[4kB] cena ok 3zł, choć ciężko je dostać... przynajmniej w Stalowej Woli. A co do języka, to kusi mnie ten BASCOM prostszy, ale podobno C jest lepszy, choć trudniejszy. Kusi mnie bo obsługa LCD jest łatwiejsza... Ale myślę że z pomocą forum i Waszą, dam rade i na C.

    A teraz mam jeszcze jedno pytanie.
    Zrobiłem ten programator i mam zamiar programować w ten sposób, że zrobię sobie do niego podstawkę dla 89S20-4051 podłączaną tylko do programatora i chcę tym programować. Wiem że ma być zasilanie, ale to będę miał z USB na programatorze i procku.
    I tutaj jest pytanie, czy wystarczy podłączyć piny, czy trzeba jakieś peryferia podłączyć, jak kwarc, czy coś innego?

    Wiem, że ze mnie ciężki człowiek, ale ja tylko "wolno myślę" [A. Einstein].

    Pozdrawiam,
    Piotrek.
  • #7 4751672
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    MlodyAmator napisał:
    wielkie dzięki, już myślałem, że to ja coś robie źle i moi znajomi nie widzą błędów [oni też się uczą].


    Nie napisałem że nie ma błędów :wink:, napisałem że składnia jest OK.
    Zwróć uwagę że zmienna int może mieć max 65535 a dla niektórych kompilatorów samo "int" bez "unsigned" to zakres -32765 do +32765.

    Elektroda to wielka kopalnia wiedzy i wystarczy szukać i czytać a sam do wszystkiego dojdziesz.
  • Pomocny post
    #8 4751678
    Spiochu
    Poziom 12  
    Posty: 88
    Pomógł: 1
    Ocena: 1
    PiotrPitucha napisał:
    8051 nie programuje się ISP ( no może z drobnymi wyjątkami )


    Mylisz się:D właśnie większość procesorów 8051 jest programowana przez ISP. Jak to sprawdzić? Jeżeli w nazwie znajduje się literka S, np AT89s52, to wtedy jest programowalny przez ISP.

    Może to nie rozwiąże problemu, ale ten program można udoskonalić.
    -zmodyfikować funkcję główną:

    Cytat:
    void main(void) /*program glowny*/
    {
    while(1) /*petla nieskonczona*/
    {
    P1^0=!P1^0; /*dioda świeci/nie swieci*/
    czekaj(1); /*czeka 1s*/
    }
    } /*Koniec*/
  • #9 4751937
    MlodyAmator
    Poziom 13  
    Posty: 112
    Pomógł: 7
    Ocena: 8
    Witam.

    markosik20 napisał:
    Zwróć uwagę że zmienna int może mieć max 65535 a dla niektórych kompilatorów samo "int" bez "unsigned" to zakres -32765 do +32765.

    Masz racje, zmienię na long, Albo kilka krótszych pętli. W końcu uzyskałem plik .HEX, ale nadal mam błędy.

    Spiochu masz racje z tymi 8051. Programik rzeczywiście prostszy, dzięki za pomysł, sam na to nie wpadłem... ;)

    A teraz błędy. Otóż kompilator przy takim zapisie

    pisze że "bład c141, syntax error '=' ", czyli że znak widziany przez kompilator jest zły. Zdaje mi się że widzi on że 0=0, bo liczby są kolorowe a P1^ nie, a gdy napisze

    Wtedy pisze że P1_0 jest niezdefiniowany, więc jak mam się odwołać do portu P1.0?
    I jeszcze pytanie z poprzedniego postu, dotyczącego programatora.

    Pozdrawiam,
    Piotrek.
  • REKLAMA
  • Pomocny post
    #10 4752053
    Seba319
    Poziom 24  
    Posty: 504
    Pomógł: 79
    Ocena: 53
    Witam!
    Też niedawno zaczynałem przygodę z programowaniem μC i większość informacji znalazłem tutaj, stronka bardzo przystępnie i zrozumiale napisana. Znajdziesz tu przykładowe programy bardzo dobrze opisane i wytłumaczone. Na początek polecam ATmege8 jest to tania kość i ma spore możliwości. Do pisania i kompilacji plików polecam WinAVA gdyż jest po polsku sam z niego korzystam i jestem zadowolony. Do obsługi programatora ISP polecam program ISPPROG. Zerknij na linki, który podałem a ja postaram się rozwiązać resztę twoich problemów. Jeśli chodzi o sam programator ISP to masz tu link do postu, gdzie omawiane były programatory znajdziesz tu też bardzo przydatny programik do testowania programatora.

    Dodano po 51 [minuty]:

    Jeśli chodzi o mikrokontroler, który posiadasz to nie jesteś w stanie Ci pomóc, ale jak już zaczniesz programować AVR-y, to myślę że na stronce, którą podałem znajdziesz wszystko co trzeba, ewentualnie ja pomogę. Też jestem początkujący, ale mam na swoim koncie zegar cyfrowy z multipleksowany wyświetlaczem (6 razy segment ośmio elementowy) projekt jest prosty, a program oddawałem na zalicznie z informatyki wiec jest dobrze opisany i mogę Ci go udostępnić. Aktualnie pracuje nad bardziej zaawansowanym urządzeniem z obsługą LCD i przetwornika A/C.
  • #11 4752507
    MlodyAmator
    Poziom 13  
    Posty: 112
    Pomógł: 7
    Ocena: 8
    Witam.

    koleszka strona którą podałeś już mi odpowiedziała na kilka moich przyszłych pytań, więc wielkie dzięki. Jeśli chodzi o WinAVR, to mam ale on jest do AVR, a ja jak narazie na 8051 próbuje swych sił. Sam chciałem zacząć od Atmega8, no ale szkoła... ale może to mi da coś w przyszłości ;) Programator i program do obsługi mam właśnie taki jak podałeś, pisze w pierwszym poście. A w jakim języku programujesz?

    W tej chwili nadal mam problem z tymi portami 8051.

    Pozdrawiam,
    Piotrek.
  • #12 4752564
    Seba319
    Poziom 24  
    Posty: 504
    Pomógł: 79
    Ocena: 53
    Programy piszę w C/C++ (przy programowaniu μC praktycznie nie robi to różnicy, bo używasz tylko podstawowych poleceń), dlatego że dobrze znam ten język z pisania programów na PC. Zauważyłem, że podałeś link do tego programatora, ale chciałem żeby wszystko było w jednym miejscu (na wypadek gdyby ktoś inny by czytał ten post), a dodatkowo w poście, do którego link zamieściłem jest też program do testowania programatorów. Mi się on bardzo przydał przy uruchamianiu programatora, dlatego o tym wspomniałem. Jeśli masz notę katalogową układu, który posiadasz to podaj link, lub zamieść ja tutaj to może cos podpowiem. Jeśli możesz to jeszcze raz napisz, na czym dokładnie polega problem.
  • #13 4752978
    MlodyAmator
    Poziom 13  
    Posty: 112
    Pomógł: 7
    Ocena: 8
    Witam.

    Datasheet do AT89s4051 jest TUTAJ.

    Problem polega, na tym, że chciałbym się odwołać bezpośrednio do portu P1.0, a nie do całego P1 [od P1.0 do P1.7]. Chociaż, teraz dam sobie radę z całym protem P1 i liczbami na niego wysyłanymi w kodzie szesnastkowym [H].
    Działający program wygląda tak:
    #include <reg51.h>            /*inicjacja pliku "reg51.h"*/
    long a;
    void czekaj(unsigned char x)  /*utorzenie "czekaj" dla programu glownego*/
    {
    for(a=0;a<4750;++a);           /*pętla !!!OKOŁO!!! 1s. przy kwarcu 3MHz*/
    x=0;					   	     /*[tak przynajmniej teorytycznie mi wyszło ;)]*/
    }                             
    void main(void)               /*program glowny*/
    {
    while(1)                      /*petla nieskonczona*/
    {
    P1=0xFF;                       /*dioda nie swieci*/
    czekaj(1);                    /*czeka 1s*/
    P1=0x00;                       /*dioda swieci*/
    czekaj(1);                    /*czeka 1s*/
    }
    }                             /*Koniec*/
    

    Musiałem dodać "x=0", ponieważ bez tego kompilator wyrzucał błędy, że "x" jest niezdefiniowane.
    Więc na tym projekcie kończy się moja przygoda z 8051, wykonam jeszcze tylko do szkoły projekt, "Komputerowego ogranicznika pisania sprawdzianów" i przesiadam sie na AVR. Zmotywowała mnie lektura podesłana przez koleszka, zwłaszcza temat LCD, bo na 8051 wygląda to strasznie, a na AVR już nie tak bardzo.

    Dziękuję wszystkim za pomoc.

    Tematu nie zamykam, bo projekt na 8051 nie jest gotowy, ba dopiero mam pętle opóźniającą, a jeszcze interface [zamierzam wykonać 4 przyciski odpowiednio przyciski 1-5min, 2-15min, 3-30min, 4-40min 5-45min], wyświetlacza nie będzie, może zrobię diodę informującą o odliczaniu, a za układ wykonawczy posłuży buzer. To już cały mój projekt.

    Pozdrawiam,
    Piotrek.
  • #14 4752996
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    MlodyAmator napisał:
    Witam.
    Musiałem dodać "x=0", ponieważ bez tego kompilator wyrzucał błędy, że "x" jest niezdefiniowane.

    robil tak z prostego powodu, ze x jest w tej funkcji (jak i w calym programie) calkowicie zbedne. nie wykorzystujesz go w zaden sposob, tylko marnujesz pamiec.

    0x41 0x56 0x45!!
  • #15 4753563
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    MlodyAmator napisał:
    ...Problem polega, na tym, że chciałbym się odwołać bezpośrednio do portu P1.0, a nie do całego P1 [od P1.0 do P1.7].

    To żaden problem , tylko musisz sobie zadeklarować ten bit ;)
    
    //at 0x90 sbit P1_0;
    at 0x90 sbit LED;
    


    Piotrek
  • #16 4754150
    MlodyAmator
    Poziom 13  
    Posty: 112
    Pomógł: 7
    Ocena: 8
    Witam.

    Freddie Chopin napisał:
    robil tak z prostego powodu, ze x jest w tej funkcji (jak i w calym programie) calkowicie zbedne. nie wykorzystujesz go w zaden sposob, tylko marnujesz pamiec.
    No tak, masz racje, ale nikt mi nie powiedział dlaczego [za co dziękuję, dobrze zapamiętam ten błąd ;)], ale doszedłem sam, brakowało jednej linijki kodu
    for(;x>0;--x)
    To spowodowało, że moje opóźnienie, ZAWSZE wykonywało się tylko raz. Teraz już mam 100% sprawny, co nie znaczy że zoptymalizowany kod do projektu, a wygląda on tak:
    //Komputerowy Ogranicznik Pisania Sprawdzianów ver.1 z dokładnością 1/45
    //Uklad wykowaczy AT89C4051 firmy ATMEL
    //Z pomoca forum www.elektroda.pl, oraz ksiazek wydawnictwa BTC
    //Program pisany w jezyku C w programie uVison3 firmy KEIL www.keil.com
    
    #include <reg51.h>		       //inicjacja pliku reg51.h - rejestr 8051
    long a;					       //wprowadzenie zmiennej "a"
    void czekaj(unsigned char x)   //utorzenie "czekaj" dla programu glownego
    {
    for(;x>0;--x)
    for(a=0;a<4750;++a)           //petla okolo 1s. przy kwarcu 3MHz
    }                             
    void main(void)                //program glowny
    {
    P3=0x7F;					   //ustalenie stanu wysokiego na porcie P3.7 LED nie swieci
    while(1)                       //petla nieskonczona
    {
    if(P1==0x7F)				   //przycisk na P1.7 do masy
    {
    czekaj(290);				   //czeka 5min.
    P3=0x00;					   //stalenie stanu niskiego na porcie P3.7 LED swieci
    }
    if(P1==0xBF)				   //przycisk na P1.6 do masy
    {
    czekaj(870);				   //czeka 15min.
    P3=0x00;					   //stalenie stanu niskiego na porcie P3.7 LED swieci
    }
    if(P1==0xDF)				   //przycisk na P1.5 do masy
    {
    czekaj(1740);				   //czeka 30min.
    P3=0x00;					   //stalenie stanu niskiego na porcie P3.7 LED swieci
    }
    if(P1==0xEF)				   //przycisk na P1.4 do masy
    {
    czekaj(2320);				   //czeka 40min.
    P3=0x00;					   //stalenie stanu niskiego na porcie P3.7 LED swieci
    }
    if(P1==0xF7)				   //przycisk na P1.3 do masy
    {
    czekaj(2610);				   //czeka 45min.
    P3=0x00;					   //stalenie stanu niskiego na porcie P3.7 LED swieci
    }
    }
    }

    zumek widzisz kolego, teraz to proste, ale sam na to wpadłbym dopiero dużo później o ile w ogóle. Myślę, że wykorzystam to w przyszłych projektach, bo teraz program jest gotowy, może zmienię jeszcze opóźnienie żeby wykorzystać TIMER.
    A wracając do portów, to TRZEBA CZYTAĆ DATASCHIEET'y.

    Pozdrawiam,
    Piotrek.
  • REKLAMA
  • #17 4754556
    Jdsoul
    Poziom 23  
    Posty: 501
    Pomógł: 47
    Ocena: 10
    Cześć!!!

    Miło że jeszcze któś coś działa na 8051.
    Jedną z większych kopalni kodu i danych na temat 80C51 jest stronka

    www.8052.com

    Sam tam czasem coś działam :)

    Co do C to do większych projektów na przyszłość ściągnij sobie SDCC i jakiś Notepad++, czy inny edytor z podświetleniem składni :)

    Jeśli C ci nie leży a miałeś Turbo Pascala, lub innego Pascala to jest jeszcze środowisko Pas51x. w trialu ograniczone do 2kB, ale za to pisze się w "znanej" czytelnej i prostej składni :)

    Pzdr

    Dodano po 3 [minuty]:

    O basicu Bascom na elektrodzie też sporo masz danych
  • #18 4755234
    sebastian89
    Poziom 11  
    Posty: 11
    Jdsoul napisał:
    Cytat:
    Co do C to do większych projektów na przyszłość ściągnij sobie SDCC i jakiś Notepad++, czy inny edytor z podświetleniem składni Smile

    Również jestem początkujący. Mam kompilator SDCC i edytor Mide. Mógł by mi ktoś wyjaśnić jak skompilować w tym program?
    Z góry dziękuje:D
  • #19 4755545
    MlodyAmator
    Poziom 13  
    Posty: 112
    Pomógł: 7
    Ocena: 8
    Witam.

    Jeśli chodzi o programowanie, to dopiero zaczynam cokolwiek z nim i to właśnie od C i bardzo mi się ten język podoba, nie mam narazie zamiaru uczyć się innego, tylko douczyć C. Co nie znaczy, że nie chce znać innych ;). A BASCOM, to przecież BASIC, zainteresował mnie tylko ze względu na prostotę, ale to jest stary język i troszeczkę ograniczony w porównaniu z C, więc nie widzę sensu się cofać, no może kiedyś, dla rozrywki... ;)
    Jeśli chodzi o programy, to narazie wystarcza mi Keil, chociaż kto wie, co będzie jutro... ;).

    Pozdrawiam,
    Piotrek.
  • #20 13780952
    toffik353
    Poziom 11  
    Posty: 111
    Ocena: 120
    Można prościej odwołać się tylko do jednego z portów a nie wszystkich P1. Wystarczy że napiszesz P1_0 = 1; i bedziesz miał 1 na porcie p1.0. Jak dla mnie to najlepszym programem do pisania w C jest FAR MANAGER ( jakaś nowa wersja bo koloruje składnię) plus do tego program kompilacyjny SDCC. Far manager to edytor zaawansowany edytor tekstu i przeglądania plików na komputerze (coś jak komander) tylko ze jest na dosie. Bardzo szybko można się poruszać pomiędzy plikami nie używając myszki :)
    Do symulacji na początek polecam program PROTEUS bardzo przyjemny i prosty w obsłudze.

    Dodano po 13 [minuty]:

    Jeśli chcesz mieć dokładny czas opóźnienia to wykorzystaj wewnętrzne TIMERY ogranicz jego pojemność żeby zliczał tylko np do 10 ms, a jeśli chcesz dokładniej to też możesz :)

    void delay (unsigned char a)
    {
    unsigned char i, j;
    for(i=0;i<a;i++){
    for(j=0;j<142;j++){
    }
    }
    }
    jeśli chciałeś tak robić to masz opóźnienie delay (i wpisujesz liczbe ale pamietaj ze mozesz tylko do 255 bo jest bez znaku np 50) = niedokładne 50ms dla 12MHz

Podsumowanie tematu

✨ Dyskusja dotyczy trudności w programowaniu mikrokontrolera 8051 w języku C oraz problemów z używanymi narzędziami i programatorami ISP. Autor, będący uczniem technikum elektronicznego, napotkał błędy składniowe i problemy z kompilacją w różnych środowiskach, m.in. Raisonance, WinAVR, AVRStudio i CodeVisionAVR, mimo że programy były oparte na przykładach z książki. Uczestnicy forum sugerowali użycie pakietu Keil dla 8051, który jest polecany dla początkujących, oraz wskazywali na konieczność poprawnego deklarowania bitów portów (np. sbit P1_0) zamiast używania niepoprawnej składni P1^0. Poruszono też temat programowania ISP dla 8051, wyjaśniając, że modele z literą „S” w nazwie (np. AT89S52) obsługują ISP. Wskazano alternatywne mikrokontrolery AVR (np. ATmega8) jako łatwiejsze do nauki i programowania w C, z darmowymi kompilatorami i programatorami ISP, takimi jak ISPPROG. Podkreślono znaczenie korzystania z dokumentacji (datasheet) i zasobów internetowych (np. www.8052.com) oraz narzędzi takich jak SDCC, Keil uVision3, Far Manager, Proteus do symulacji i edycji kodu. Omówiono także poprawne tworzenie funkcji opóźniających i optymalizację kodu w C dla 8051. Dyskusja zawierała praktyczne wskazówki dotyczące składni, obsługi portów, generowania plików HEX oraz testowania programatorów ISP.
Wygenerowane przez model językowy.
REKLAMA