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

80Cx051 - Programowanie w bascomie

slowmotion 23 Lip 2014 10:11 1239 13
  • #1 23 Lip 2014 10:11
    slowmotion
    Poziom 10  

    Witam bardzo serdecznie. Od wczoraj staram się uczyć programować mikrokontrolery na razie programuję i używam symulatora programowego a język to Bascom. Wczoraj napisałem kod, jednak nie działał on poprawnie oto ten kod:


    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Gdy mam np skonfigurowany wyświetlacz na 16*2 wszystko działa, polecenie Lowerline przenosi tekst "zaczynamy" do następnej linii i tekst zaczyna się od początku linii ale gdy zadeklaruję wyświetlacz 40*4 to tekst "zaczynamy" co prawda jest w drugiej linii ale nie zaczyna się od początku linii a jest przesunięty nawet za słowa "witaj w świecie Bascom". W czym problem? Prosiłbym o pomoc bo nie rozumiem dlaczego się tak dzieje. W programie użyłem pętli FOR NEXT zamiast polecenia Wait bo chciałbym zrozumieć co to są zmienne i na czym polega użycie licznika. Program odlicza od 1 do 200 a po wykonaniu tej pętli czyści wyświetlacz.[/code]

    0 13
  • #2 23 Lip 2014 10:58
    kindlar
    Poziom 37  

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #3 23 Lip 2014 10:59
    alien_audio
    Poziom 21  

    Witam.
    zawsze używaj instrukcji LCD
    zrób tak :

    Lowerline
    LCD "zaczynamy"

    Krzysztof

    0
  • #4 23 Lip 2014 11:11
    slowmotion
    Poziom 10  

    to w takim razie daję zrzut z symulacji, zrobiłem tak jak kazaliście ale dalej jest to samo plik oczywiście skompilowany przed uruchomieniem.

    0
  • #6 23 Lip 2014 14:51
    conan02

    Poziom 29  

    @slowmotion:
    LCD 40x4 jest przedłużony ekspanderami i inny jest adres 2 linii niż w "gołym" 16x2 sterowanym tylko z HD44780. Standardowo pierwsza linia jest od adresu 00H, a druga od adresu 40H. W długiej wersji może być inaczej zależnie od producenta.
    @piotrva:
    Sam jeszcze robię sporo w assemblerze MCS'51, to jest wciąż jeszcze stardard przemysłowy i przy naprawach automatyki - pomimo upływu lat - ciągle się z nim spotykam. Poza tym jest wiele układów kombinowanych opartych na rdzeniu '51 (komba Philips/NXP z ADC/DAC, PWM itp. specjalizowanymi peryferiami w chipie), lub 1 cyklowy Dallas (DS89C4x0), dużo szybszy i nowszy układ, a wciąż pracuje na kodzie '51.
    Z tego co obserwuję to przemysł nie jest skory do eksperymentów i nowości, raczej preferują rozwiązania sprawdzone i stabilne, a jeśli moc obliczeniowa takiego MCU jest wystarczająca do zastosowania to nic nie stoi na przeszkodzie.

    0
  • #7 23 Lip 2014 15:12
    piotrva
    Moderator na urlopie...

    conan02,
    Z LCD racja - ogólnie dosyć spory bałagan jest w tych wyświetlaczach, a BASCOM moze mieć błędy w bibliotekach.

    Co do procesorów naprawy sprzętu to co innego, nowy sprzęt na rdzeniu '51 też co innego, ale mówimy o konkretnej rodzinie Atmela '51 i o kimś kto jak widać zaczyna zabawę ze światem mikrokontrolerów.

    Pomimo że te klocki stosuje się jeszcze nadal m. in. na potęgę w Indiach, gdzie dostanie czegoś nowszego niż ATMega8 w detalu jest niemalże niemożliwe, to czemu w Europie ktoś ma iść w ślepą uliczkę, gdzie za parę lat nie kupi już ani scalaka, ani programatora?

    0
  • #8 24 Lip 2014 22:26
    slowmotion
    Poziom 10  

    aha czyli inny adres po prostu liczba zapisywana jest pod zlym adresem i przy tym kompilatorze ktory mam sam recznie musialbym adresowac? Przeczytalem ze niektore wyswietlacze 16x2 sa podzielone na dwie czesci 8x2 i przy konfiguracji wyswietlacza trzeba podac 16*2a. Moze tu tez jest ten sam problem? Mam raczej nienajnowsza wersje kompilatora takze moga byc bledy. Co do '51 i pisania na niego programy, uwazam ze lepiej jest dobierac procek pod to co ma wykonywac jezeli potrzebuje jedynie zrobic programator czasowy to po co mi 1Wire I2C itd. Zamyslilem sobie zeby potem przejsc do AVR ki tam beda czekac na mnie PWM - y i inne bajery na razie to co mam sie nauczyc naucze sie na '51.

    0
  • #9 24 Lip 2014 23:42
    piotrva
    Moderator na urlopie...

    Moim zdaniem nie ma sensu tracić czasu na naukę np. timerów w tych procesorach.
    I moim zdaniem lepiej uczyć się na czymś lepszym, a potem masz zawsze możliwość skorzystania z czegoś uboższego.

    Osobiście polecałbym to wszystko do szafeczki muzealnej (tak jak u mnie) a zacząć zabawę z AVR'ami i językiem C.

    0
  • #10 25 Lip 2014 21:41
    slowmotion
    Poziom 10  

    mowisz ze C. Jak uda mi sie ugryzc Bascoma to sprobuje z C, a na jakim oprogramowaniu piszecie programy w jezyku C na mikrokontrolery?

    0
  • #11 26 Lip 2014 13:19
    Brutus_gsm
    Poziom 25  

    Bez sensu jest uczenie się Bascoma, żeby potem przejść na C. Zacznij od razu od tego drugiego - to wcale nie jest trudne. A Bascom nauczy Cię dziwnych i złych nawyków, których ciężko ci będzie się potem wyzbyć. Możesz korzystać z Atmel Studio (które okazało się dla mnie całkiem fajne) lub np. Eclipse.

    0
  • #13 27 Lip 2014 20:59
    slowmotion
    Poziom 10  

    nie rozumiem jakie nawyki? Bez przesady Bascom to Bascom a C to C. To juz nie lepiej C++?

    0
  • #14 27 Lip 2014 21:28
    piotrva
    Moderator na urlopie...

    Nawyki dotyczące stylistyki kodu, używania takich a nie innych konstrukcji, najprawdopodobniej znikomego kontaktu z notą katalogową...
    Różnice między C a C++ są niemalże kosmetyczne, jak między UK a USA English. A między Bascom a C jak między Niemieckim a Angielskim :D

    0