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

Czy warto przejść z Bascom na C w projektach sterujących?

Roman Szemik 01 Lip 2005 22:31 2874 22
REKLAMA
  • #1 1622163
    Roman Szemik
    Poziom 14  
    Posty: 150
    Pomógł: 2
    Ocena: 6
    Witam.
    Czy warto jest się przesiąść z Bascoma na C?
    Wykorzystuję Bascom do projektów które sterują czymś tam - licząc impulsy, nadzorując temperaturę, odliczając czas, pokazując wartości lub komunikaty na wyświetlaczach, analizując sygnały wejściowe i dając odpowiedź na odpowiednie porty.
    Zastanawiam się czy język C wnósł by coś nowego do projektów co przekonało by mnie aby się go nauczyć.
    Priotytetem dla mnie jest prostota, czytelność , szybkość programu i to chyba wszystko. Zwracam się z pytaniem przede wszystkim do tych którzy taki krok zrobili i nie żałują straconego czasu, lub żałują.
    Pozdrawiam.
  • REKLAMA
  • #2 1622179
    kordirko
    Poziom 22  
    Posty: 307
    Pomógł: 53
    Ocena: 17
    Roman Szemik napisał:
    Witam.
    Czy warto jest się przesiąść z Bascoma na C?


    Warto.
    Projekcik nad którym w Bascomie męczyłem się 2 tygodnie (ciągle coś nie działało zgodnie z przewidywaniami), ucząc się C napisałem działający w 3 dni.
  • #3 1622279
    Dexter77
    Poziom 28  
    Posty: 889
    Pomógł: 134
    Ocena: 19
    "Znajac" Bascoma napiszesz program na procesor AVR lub C51. Znajac C napiszesz program chyba na dowolny mikroprocesor i procesor obecny na rynku, lacznie z PC-tem. Wszyscy szanujacy sie producenci procesorow dbaja o to zeby udostepnic kompilator C na swoj produkt. Odpowiedz chyba nasuwa sie prosta.
    Pozdro
    Dexter
  • REKLAMA
  • #4 1622323
    Michał_z1
    Poziom 16  
    Posty: 190
    Pomógł: 13
    Ocena: 2
    witam.
    Dobrze jest umieć oba te języki, a prawda jest taka, że czasami prościej jest napisać coś w Bascomie, a czasami w C.

    pozdrawiam.
  • #5 1622344
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    Nie rozumiem idei tego pytania... Sio do FAQ... Pytanie i odpowiedź nr 2. Nauka, wiedza zawsze procentują umiejętnościami, więc pytanie jest typu "Czy warto zmienić samochód ?" ;) Masz ochotę to rób, jak ci pasuje, to ty znasz własne możliwości, ale nie zawracaj gitary własnymi wyborami, to po prostu dziecinne... Proponuję rozszerzyć zdania w FAQ o powyższe...
  • #6 1624289
    ..::MariuszB::..
    Poziom 16  
    Posty: 273
    Pomógł: 7
    Ocena: 15
    Light'I zaskoczyła mnie Twoja odpowiedz.Cyba nie pisałeś w Bascom, a później w C ;).

    Cytat:
    projektów które sterują czymś tam - licząc impulsy, nadzorując temperaturę, odliczając czas, pokazując wartości lub komunikaty na wyświetlaczach, analizując sygnały wejściowe i dając odpowiedź na odpowiednie porty.


    Tak do tego Bascom jest super,ale pomyśl sobie np. że masz duży program do napisania i mało miejsca w eepromie i co wtedy? Albo potrzebujesz procedurek szybciej wykonywanych bardziej zoptymilizowanych niż daje nam Bascom. Co wtedy robisz...idziesz do C i asemblera :). Zdaje mi się, że w C jest bardziej czytelny kod nisz w Bascom...i ma się większą kontrolę nad procedurami i kodem. Jest czasami dużo tych plików nagłówkowych, ale wie się na czym stoi. Napisz program, który wykonywałby równolegle jakąś czynność w Bascom i w C zobaczysz jaka będzie różnica :) (chodzi mi o większy program analizujący nie tylko temperature i stan portów... ;) )

    Pozdrawiam.

    P.S. Soft w UPS'ach i np. w Centralkach tel. abonenckich i wojskowych pisany jest w C :D ciekawe dlaczego :)
  • #7 1624804
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    Tak szczerze na µC zaczynałem w asm i z nim nie skończyłem. Na poczatku było sporo materiału do wchłonięcia, pdf-a od AT90S8515 w niektórych miejscach znam na pamięc... ;) Tym niemniej to nie ja zadałem tu pytanie, na które odpowiedzi powinien udzielić sobie każdy sam. Tu nie chodzi, o to jaki język jest wart przesiadki. Porównałbym raczej pisanie programów do budowania domku z klocków. W Bascomie są one duże i domek szybko powstanie, ale będzie on taki "z metra ciosany". W asemblerze są one maciupeńkie i potrwa to dłużej ale wszystkie elementy można precyzyjnie dopasować do siebie, tylko trzeba nabyć umiejętność wyobrażenia sobie całości, zanim zaczniemy tworzyć poszczególne elementy. A C, chociaż niedaleko mu do asemblera jest jednak pomiędzy(w każdym przypadku języka wyższego poziomu większe szpary da się załatać "drobnymi klockami" - wstawkami w asm)...
    Wybór należy do programisty, z jakich klocków woli budować, nie nam tu rozstrzygać takie dylematy... ;) I żaden argument na czym się oparto w jakimś rozwiązaniu, należy robic to, w czym nam najlepiej idzie sensowna praca.
    --
    Kłaniam się, Daniel
  • #8 1625154
    ..::MariuszB::..
    Poziom 16  
    Posty: 273
    Pomógł: 7
    Ocena: 15
    Light'I wyjąłeś mi to z ust ;)!

    Sam zaczynałem na Z80 i asemblerze i wiem jak i z czym co się je i masz racje nic nie stoi na przeszkodzie by kolega Roman nauczył się C i go poznał. Jak mu nie bedzie pasował lub stwierdzi, że soft, który pisze nie potrzebuję takich małych klocków to może wrócić i pisać w Bascom'ie.

    To wszystko to kwestia gustu, zasosowania i przyzwyczajenia ;) zwłaszcza jak ktoś pisze jeszcze soft na PC w C :)

    Te niżej zdania powinny być wszędzie wywieszane, poeata z Ciebie czy cio Light'I:D
    Cytat:
    Porównałbym raczej pisanie programów do budowania domku z klocków. W Bascomie są one duże i domek szybko powstanie, ale będzie on taki "z metra ciosany. W asemblerze są one maciupeńkie i potrwa to dłużej ale wszystkie elementy można precyzyjnie dopasować do siebie


    Pozdrawiam.
  • #9 1625170
    lbugiera
    Poziom 21  
    Posty: 348
    Pomógł: 45
    Ocena: 5
    Ja nauczyłem się dla AVR'ów asemblera. Znam dobrze C/C++ z programowania na PC i dlatego chyba nawet nie sięgne po C w wersji dla AVR'ów bo : widze, że nie da się zastosowac tej samej filozofi bo ze względu na mały rozmiar problemów był by to przerost formy nad treścią (skrajny przypadek : stosowanie klas), do procedur obsługi przerwań i tak trzeba będzie stosowac asemblera, sporo większy kod wynikowy, stosowanie deklaracji zmiennych w C i tak wymusza patrzenie na nie "od strony asemblera", czyli gdzie one dokładnie są zakładane (szczególnie gdy wymaga to optymalizacji). Zalety to wygoda operowania if'ami,switch'ami itd. oraz wygoda tworzenia bibliotek. Co do pierwszej to tylko kwestia wprawy w wyrażaniu takich operacji w asemblerze (wystarczy troche praktyki). Co do drugiej za pomocą kombnacji makr, procedur i dyrektywy org mozna spokojnie tworzyć bardzo elastyczne biblioteki wymagające tylko zdefiniowania przed użyciem zasobów dla paru stałych i zmiennych.

    Co do projektów jakie robi autor tego tematu, to wynika że gdyby pisał w asemblerze 95% spokojnie obsłużył by za pomocą ATtiny2313. A ATmega8 to był by gigant o niewyczerpanych zasobach (chyba największym problemem była by ilosc wyprowazeń).

    Tak jak napisał Light'I asemebler szczególnie (inne języki też) wymaga od programisty doświadczenia i jak dokładnego zobrazowania sobie kształtu pisanego algorytmu przed przystpieniem do pisania.

    Zachęcam do uczenia się asemblera, jeśli chodzi o programowanie małych uC.

    Pozdrowienia
  • #10 1625235
    ..::MariuszB::..
    Poziom 16  
    Posty: 273
    Pomógł: 7
    Ocena: 15
    Hehe lbugiera nie tylko:
    skrajny przypadek : stosowanie klas, ale lepiej jest samemu pisać kod np. próbując użyć w C dla mikrokontrolerów printf mamy nadmiar kodu w eepromie :) sam kiedyś się na to złapałem, z lenistwa użyłem printf i co się okazało...w eepromie zabarkło mi miejsca na dalsza prace... :) został mi wtedy asembler, o Bascomie musiałem zapomniec ;)
  • REKLAMA
  • #11 1625313
    marek_Łódź
    Poziom 36  
    Posty: 3103
    Pomógł: 208
    Ocena: 66
    ..::MariuszB::.. napisał:
    Zdaje mi się, że w C jest bardziej czytelny kod NISZ w Bascom

    Te dyskusje są kompletnie nieczytelne. WYSZSZOŚĆ (nie poprawiać) Świąt Wielkiej Nocy nad Świętami Bożego Narodzenia. Merytorycznie należałoby pominąć składnię (sprawa drugorzędna i akurat w przypadku C bardzo dyskusyjna) i skupić się na jakości implementacji (biblioteki, narzędzia, wspomaganie uruchamiania, kod wynikowy). Tu widzę same ogólniki + argumenty typu "jeśli Kazik i Wiesiek używają tego młotka, to nie może być zły".

    ..::MariuszB::.. napisał:
    Napisz program, który wykonywałby równolegle jakąś czynność w Bascom i w C zobaczysz jaka będzie różnica :)


    Żeby to zrobić szybko i niezawodnie potrzebny jest co najmniej monitor wielozadaniowy lub lepiej system operacyjny. Masz coś takiego wbudowanego w C?

    ..::MariuszB::.. napisał:
    P.S. Soft w UPS'ach i np. w Centralkach tel. abonenckich i wojskowych pisany jest w C :D ciekawe dlaczego :)


    JÓRZ (nie poprawiać!!!) Kopernik napisał, ze produkt zły wypiera produkt dobry (chodziło o ,pieniądz). Żyjemy w czasach totalnej tandety, czego C i BASCOM są najlepszymi przykładami (nie mówiąc o innych produktach). A duże projekty jeszcze niedawno programowano w ADZie zaś telekomunikację profesjonalną bodajże w CHILL (i pewnie nadal się to robi). Czy to jest dowód na to, że należy programować wyłącznie w tych językach? W przypadku masówki często soft jest robiony w asemblerze, bo tylko tak można go optymalnie upchnąć minimalizując koszty sprzętu. W każdej sytuacji narzędzia dobierasz do potrzeb i nikt nie będzie rysował projektu architektonicznego, czy płytki drukowanej w kodzie wewnętrznym procesora, bo ma od tego chociażby ArchCADA czy PROTELA

    Light'I napisał:
    Tak szczerze na µC zaczynałem w asm i z nim nie skończyłem.

    Asembler ma m.in. tę przewagę, nad wszystkimi innymi rozwiązaniami, że dokładnie wiesz gdzie i po co sięgasz, a dobry MACROASEMBLER z porządnymi, dokładnie znanymi bibliotekami jest narzędziem znacznie silniejszym od dowolnego innego języka, co oczywiście nie jest dowodem na to, że wszyscy powinni stosować asembler, z czym pewnie kol. Daniel się zgodzi. Osobiście gdy musiałem, pisałem programy na mikroprocesory w C i BASICu, a jak będzie trzeba to napiszę w FORTRANIE czy LISPIE niemniej w ASM jest znacznie prościej i pewniej ;-).

    lbugiera napisał:
    Zachęcam do uczenia się asemblera, jeśli chodzi o programowanie małych uC.

    Problem w tym, że często w programach w C czy BASICu na mikroprocesory występują problemy tkwiące na poziomie kodu czy sprzętu, więc dobry programista powinien co najmniej mieć pojęcie mechanizmach implementacji i działaniu procedur bibliotecznych. W przeciwnym przypadku jest tak, że na forum pojawia się pytanie dotyczące np. BASCOMa, na które spokojnie odpowiadam nie znając tego pakietu, w oparciu o bardzo powierzchowną WIEDZĘ OGÓLNĄ, natomiast nie potrafią na nie odpowiedzieć "SPECJALIŚCI" od BASCOMa.

    ps. Bardzo żałuję, że nie ma porządnych i tanich implementacji PASCALa na mikroprocesory (chociażby Turbo Pascal w CP/M, czy Hisoft Pascal na Z80), co oczywiście nie znaczy, że wszyscy wszystko powinni programować w PASCALu.
  • #12 1625430
    ..::MariuszB::..
    Poziom 16  
    Posty: 273
    Pomógł: 7
    Ocena: 15
    Myślałem, że nie jestem na forum humanistycznym, ale chyba się pomyliłem...Jak kolega Marek aż tak bardzo chcę poprawiać błedy to przypominam, że to nie forum humanistyczne i aż tak dużo błedów nie zrobiłem by się smiać! Humanistą nie jestem chyba to widać! A czy śmiał byś się z niepełnosprawnego człowieka na wózku?

    Cytat:
    Żeby to zrobić szybko i niezawodnie potrzebny jest co najmniej monitor wielozadaniowy lub lepiej system operacyjny. Masz coś takiego wbudowanego w C?


    Chyba prędzej by się to napisało (system operacyjny) w C niż w BASCOM'ie no nie? (C + wstawki asm.)

    Cytat:
    A duże projekty jeszcze niedawno programowano w ADZie zaś telekomunikację profesjonalną bodajże w CHILL (i pewnie nadal się to robi). Czy to jest dowód na to, że należy programować wyłącznie w tych językach?


    Nikt nie każe nikomu programować w C czy Bascomie jak zauważyłeś kolega Roman pytał się

    Cytat:
    Czy warto jest się przesiąść z Bascoma na C?
    , więc piszę moję zdanie jak każdy tutaj kto pisał co kolwiek w C i Bascom, wiec po co pisac o Pascal'u itd. to jest bez sensu.

    Do asemblera nic nie mam bo często go używam!

    P.S. Sam kolega Marek podał kilka języków i wyraził swoje zdanie, więc czy to nie jest też uogólnienie całej sprawy? Czy tylko chciał się na kimś wyżyć i pokazać jak bardzo ma wysokie mniemanie o sobie?
  • #13 1625508
    marek_Łódź
    Poziom 36  
    Posty: 3103
    Pomógł: 208
    Ocena: 66
    ..::MariuszB::.. napisał:
    Myślałem, że nie jestem na forum humanistycznym, ale chyba się pomyliłem

    Czy elektroda.pl zwalnia piszących z dbałości o jakość postów (nie tylko merytoryczną, ale też językową)? Dlaczego nie dbacie o narzędzia, których używacie codziennie? Sorry, jesli forma Cię uraziła.

    Cytat:
    Chyba prędzej by się to napisało (system operacyjny) w C niż w BASCOM'ie no nie? (C + wstawki asm.)
    Dokładnie tak, jak piszesz, co oczywiscie nie oznacza, ze jest to najlepsze narzędzie do tego typu zadań.

    Cytat:
    Nikt nie każe nikomu programować w C czy Bascomie jak zauważyłeś kolega Roman pytał się ....po co pisac o Pascal'u itd.
    Padło "ASM" więc temat został już wcześniej rozszerzony na inne języki. Poza tym dobrze, gdy programiści od BASCOMa czy C dowiedzą się, że możliwości jest co najmniej kilkanaście, Pascal padł w tym samym kontekscie.

    Cytat:
    P.S. Sam kolega Marek podał kilka języków i wyraził swoje zdanie, więc czy to nie jest też uogólnienie całej sprawy?


    Sorry, jeśli teza mojego postu gdzieś się zgubiła. Byłoby to mniej więcej tak: narzędzia należy dobierać stosownie do potrzeb, z mojego punktu widzenia BASIC różni się od C wyłącznie składnią, przy czym obie są badziewne, natomiast siła implementacji tkwi w generatorze kodu, dostępnych bibliotekach i sposobie ich łączenia oraz w zestawie narzędzi wspomagającycyh pisanie i uruchamianie programów (w tym przypadku BASCOM pozostaje w tyle za dowolną w miarę kompletną implementacją C). W pełni popieram wszystkich sugerujących poznanie asemblera, nie tylko żeby w nim programować, ale również po to by mieć świadomość funkcjonowania mechanizmów implementacji, co przy tak bliskim kontakcie ze sprzętem jest konieczne.

    Sorry, że podczepiłem się akurat pod post Mariusza, ale był w miarę rozbudowany i merytoryczny, więc to było wygodne.
  • REKLAMA
  • #14 1625554
    ..::MariuszB::..
    Poziom 16  
    Posty: 273
    Pomógł: 7
    Ocena: 15
    Dobra rozejm :).

    Cytat:
    Czy elektroda.pl zwalnia piszących z dbałości o jakość postów (nie tylko merytoryczną, ale też językową)? Dlaczego nie dbacie o narzędzia, których używacie codziennie? Sorry, jesli forma Cię uraziła.


    Tak, ale czasmi pisze się szybko, lub ma się problemy z polszczyzną :) nie każdy kocha j.polski ;). Jestem za jeżeli chodzi o dbałość w postach zwłaszcza na www.elektroda.pl/rtvforum (zajrzyjcie fajne forum) czasmi zdarzy się jakiś błąd :).

    Cytat:
    Padło "ASM" więc temat został już wcześniej rozszerzony na inne języki.


    Asembler traktuję jak narzędzie codziennego użytku i czasmi zapominam, że to jest osobny język programowania ;), wszędzie go można wsadzić, więc tak jakoś pisze się o asm ciepło i przyjaznie :).

    Skomętuję ostanie zdania Marka :) Tak asembler to rzecz święta jeżeli chodzi kontakt ze sprzętem, chyba żaden język nie jest tak szybki i wygodny jak asembler w sterowaniu portami...obliczeniami...itd. itd.

    Wszytko zależy od doświadczenia, chęci i pomysłów.Tak jak pisał Marek od człowieka zależy jak użyję danego narzędzia i jak potrofi go dobrze wykorzystać.

    hehe te posty zaczynają wyglądać jak woja urzytkowników unix'a a urzytkowników windows'a :)
  • #15 1625714
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    ..::MariuszB::.. napisał:
    hehe te posty zaczynają wyglądać jak woja użytkowników unix'a a użytkowników windows'a :)
    A kto z kim walczy? Moje stanowisko : "Używaj sobie czego chcesz, niech ci praca miło mija, ja używam tak asm", nigdzie nie powiedziałem : "Bascom jest be", czy "C jest be", dokonałem tylko pewnego porównania, w którym zobrazowałem, że zdażają się sytuacje, przy programowaniu µC w w/w językach, w których bez znajomości asemblera dalej nie pojedziesz, bo będzie konieczna wstaweczka... ;)
    -------------------------------
    ..::MariuszB::.. napisał:
    [...]poeta z Ciebie czy cio Light'I:D
    Można to tak ująć... ;)
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=1456172#1456172
    --
    Jeszcze raz się kłaniam, Daniel
  • #16 1625825
    Adalber
    Poziom 12  
    Posty: 13
    Używam Bascoma i C .Każdy ma swoje zalety , jedną z zalet Bascoma jest to ,że jest to dobrze zrobione środowisko.W praktycznie darmowym pakiecie (demo) mamy edytor , symulator i programator .
  • #17 1625829
    lbugiera
    Poziom 21  
    Posty: 348
    Pomógł: 45
    Ocena: 5
    To ja jeszcze może odpowiem wprost na pytanie autora, bo w poprzedniej odpowiedzi nie bardzo to było widać. Jeśli oprócz bascoma, chce Pan drugi język, który uwolni Pana od wad tego pierwszego to proponuje asembler. C tutaj nie wniesie wiele nowego. Natomiast asembler uwolni Pana od wszystkich ograniczeń bascoma. Forma asemblera na początku mało czytelna, dość szybko staje się jasna (w końcu to tylko 130 instrukcji z czego używa się głownie 40-50). Jeśli natomiast ktos chce poznać język programowania, jak najbardziej uniwersalny, to chyba C jest takim językiem. C jest bardzo dobrym językiem do implementacji dużych problemów na PC. Nadaje się również do duzych projektów na duże uC (np 32'bitowe MC68332), ale na AVR to już moim zdaniem przesada i marnotrawienie zasobów. Do AVR chyba poza asembler nie wyjde bo nie bardzo widze sens.

    Powodzenia
  • #18 1625885
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    Adalber napisał:
    Używam Bascoma i C .Każdy ma swoje zalety , jedną z zalet Bascoma jest to ,że jest to dobrze zrobione środowisko.W praktycznie darmowym pakiecie (demo) mamy edytor , symulator i programator .
    AVRStudio to też dobrze zrobione środowisko dla zawartego w nim AVRasm2 - makroasemblera z wbudowanym preprocesorem C, bez ograniczeń długości kodu wynikowego i darmowe w pełnym tego słowa znaczeniu. Posiada wbudowany symulator, obsługujący również kod wynikowy .elf z avr-gcc oraz pliki .hex. Tylko mniej programatorów obsługuje, ale to raczej nie jest problem, bo jest wiele programów od tego np. PonyProg, ISPprog...
  • #19 1626152
    lbugiera
    Poziom 21  
    Posty: 348
    Pomógł: 45
    Ocena: 5
    Light'I napisał:
    ... Tylko mniej programatorów obsługuje, ale to raczej nie jest problem, bo jest wiele programów od tego np. PonyProg, ISPprog...


    Mozna za pomoca menu tools->customize zrobić sobie ikonke uruchamiającą plik bat z komendą dla programu avrdude. A więc można pojedyńczym kliknięciem załatwić w AVRStudio sprawe programowania dla większości programatorów (wszystkie odmiany stk200). Wymaga to jednak przekształcenia tego pliku bat dla każdego nowego projektu (chyba, że można wykorzystać jakieś zmienne środowiskowe AVRStudio, jak ktos wie jak niech napisze)
  • #20 1630042
    Roman Szemik
    Poziom 14  
    Posty: 150
    Pomógł: 2
    Ocena: 6
    Można by rzec iż nie ma prostej odpowiedzi na moje pytanie.
    Jak dla mnie jest to różnica pomiędzy czymś prostym i komunikatywnym a językiem C o którego prostocie i wyższości miałem nadzieje się dowiedzieć.
    Jeżeli zbyt duży program, chcemy aby program szybciej działał, chcemy programować inne uC to stosujmy C.
    Jeszcze tylko jedno pytanie. Co należy wiedzieć o uC, z jakich informaci korzystać (chodzi o ATmega16) i którego kompilatora (prosty i nezawodny) można by użyć aby pierwsze spotkanie na najwyższym szczeblu nie zakończyło się negatywnym odczuciem.
    Jestem zielony z C więc proszę o wyrozumiałość.
    O ile program do sterowanie diodą w zależności od sygnału na wejściu wygląda następująco:

    config port.a = &B00000001 'ustawiamy pin0 jako wejście pin1 jako wyjście
    port.a=255 'na wszystkie porty dajemy stan wysoki

    do
    if pina.0=0 then 'warunek
    porta.1 =0 'jeśli warunek spełniony
    else
    porta.1=1 'jeśli warunek nie spełniony
    loop
    end

    To jak by to wyglądało w języku C?
    Dziękuję wszystkim za informacje. Pozdrawiam.
  • Pomocny post
    #21 1630327
    mystic
    Poziom 11  
    Posty: 65
    Pomógł: 2
    W WinAVR wyglądałoby to tak:

    
    #include <avr\io.h> //plik nagłówkowy(zawiera m. in. nazwy rejestrów)
    
    int main(void)
    {
    DDRA=0b00000001;      // lub (wygodniej) DDRA=0x01; lub DDRA=1;
    PORTA=255;                 // lub PORTA=0xff; lub PORTA=0b11111111;
    while(1)                //pętla nieskończona
    {
    if (bit_is_clear(PINA,0))     //jeśli PINA,0 wyzerowany
    PORTA&=~(1<<1);          //zeruj PORTA,1
    else                                //w przeciwnym przypadku  
    PORTA|=1<<1;               //ustaw PORTA,1
    }
    return 0;
    }
    
    


    Należy pamiętać, że C rozpoznaje wielkość liter, więc PORTA to nie to samo co porta i PoRtA i trzeba stosować notyfikację wielkoliterową. (przejrzyj pliki nagłówkowe.

    BTW. Zna ktoś dobry macroassembler na AVR?
  • #22 1630929
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    Roman Szemik napisał:
    Jeszcze tylko jedno pytanie. Co należy wiedzieć o uC, z jakich informaci korzystać (chodzi o ATmega16) i którego kompilatora (prosty i nezawodny) można by użyć aby pierwsze spotkanie na najwyższym szczeblu nie zakończyło się negatywnym odczuciem.
    W moim odczuciu producent wie najlepiej :
    http://www.atmel.com/dyn/products/datasheets.asp?family_id=607
    (Jeśli chcemy tworzyć powazniejsze programy, to zapoznania się z dokładną budową procesora nie da się uniknąć ;))
    Do tego w języku polskim sporo artykułów, nie tylko o µC :
    http://www.easy-soft.tsnet.pl/modules.php?name=Topics
    Sporo wskazówek jest również w tematach przyklejonych w tym dziale.
    mystic napisał:
    BTW. Zna ktoś dobry macroassembler na AVR?
    Przyglądałeś się dokładniej AVRStudio ? Ma wbudowany AVRasm2 (z preprocesorem C oraz natywnym asemblerowym)... Mi się udaje wyczarować na nim kod niezależny od tego, którego AVR-ka i jakiego kwarcu użyję.
  • #23 1640304
    marcinkwa
    Poziom 14  
    Posty: 164
    Pomógł: 5
    Roman Szemik napisał:
    Witam.
    Czy warto jest się przesiąść z Bascoma na C?
    Wykorzystuję Bascom do projektów które sterują czymś tam - licząc impulsy, nadzorując temperaturę, odliczając czas, pokazując wartości lub komunikaty na wyświetlaczach, analizując sygnały wejściowe i dając odpowiedź na odpowiednie porty.
    Zastanawiam się czy język C wnósł by coś nowego do projektów co przekonało by mnie aby się go nauczyć.
    Priotytetem dla mnie jest prostota, czytelność , szybkość programu i to chyba wszystko. Zwracam się z pytaniem przede wszystkim do tych którzy taki krok zrobili i nie żałują straconego czasu, lub żałują.
    Pozdrawiam.

    C nie wniesie ci nic nowego - o ile będziesz działać na AVR. Przy przesiadce na inne procki C jest OK - przy AVR możesz się tylko narobić (niepotrzebnie). Jak się postarasz i zgromadzisz wszystkie podstawowe procedury w C to (może) będziesz miał BASCOMA
    Lepiej naucz się asm - wstawki w ASM w BASCOMIE są bardziej przydatne niż C (cały czas mam na myśli AVR).

    Pozdr.
    -=MARCIN=-

Podsumowanie tematu

✨ Dyskusja dotyczy zasadności przejścia z języka Bascom na C w projektach sterujących mikrokontrolerami, zwłaszcza AVR. Użytkownicy podkreślają, że Bascom jest prosty, szybki do nauki i posiada zintegrowane środowisko z edytorem, symulatorem i programatorem, co ułatwia szybkie tworzenie prostych aplikacji. Jednak przy większych, bardziej złożonych projektach, gdzie liczy się optymalizacja kodu, szybkość działania i ograniczona pamięć EEPROM, język C oferuje większą kontrolę, czytelność i przenośność na różne platformy sprzętowe. Często jednak w projektach AVR konieczne są wstawki asemblerowe dla optymalizacji i obsługi przerwań. Wskazano, że nauka C jest inwestycją w uniwersalny język programowania, przydatny także poza mikrokontrolerami. Wspomniano o narzędziach takich jak AVRStudio z AVRasm2 oraz WinAVR, które wspierają programowanie w C i asemblerze. Zwrócono uwagę, że wybór języka zależy od potrzeb projektu, doświadczenia programisty i specyfiki sprzętu. Dla początkujących w C polecono zapoznanie się z dokumentacją mikrokontrolera (np. ATmega16) oraz korzystanie z prostych i niezawodnych kompilatorów. Podsumowując, Bascom jest dobry do szybkiego prototypowania i prostych aplikacji, natomiast C (w połączeniu z asemblerem) lepiej sprawdza się w większych, bardziej wymagających projektach sterujących.
Wygenerowane przez model językowy.
REKLAMA