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.

Atmega128[Bascom] - Działania na zmiennych single i word.

werewolf15 29 Gru 2013 01:33 1029 1
  • #1 29 Gru 2013 01:33
    werewolf15
    Poziom 14  

    Napisałem taki prosty program do rysowania na LCD graficznym przy użyciu panelu dotykowego, podłączonego do ADC:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Powyższy program działa w 100%. Problem pojawił się gdy chciałem go rozbudować.Dla testów zmieniłem w nim pętlę główną:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Okazało się że działania na zmiennych służące kalibracji panelu :
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    powodują błędne wyświetlanie innych zmiennych na LCD. Polega to na tym że wszystkie wyświetlane zmienne pokazują się na wyświetlaczu w formie 10-cio znakowych, ciągle zmieniających się ciągów liczb i symboli matematycznych (np.00>5600000). Gdy usunę z timera ten fragment obliczeń program prawidłowo wyświetla zmienną w tym przypadku "0".
    Myślałem że przyczyną jest operowanie różnymi zmiennymi(single i word) ale w helpie bascoma znalazłem :
    Cytat:
    Wszystkie operacje matematyczne mogą być przeprowadzane na liczbach typu Single.

    Można także dokonywać konwersji (niejawnej) z typu Single na Integer lub Word, i odwrotnie:


    Dim I As Integer, S As Single

    S = 100.1 'przypisujemy liczbę zmiennoprzecinkową
    I = S 'ta instrukcja zmieni liczbę typu single na Integer

    czyli to nie powinno przeszkadzać. Więc dla czego tak szaleje z wyświetlaniem nawet wyzerowanych zmiennych?
    Proszę o pomoc.

    0 1
  • #2 29 Gru 2013 20:39
    werewolf15
    Poziom 14  

    Problem już chyba rozwiązany.
    Wystarczyło wyrzucić z timera fragmenty obliczeń i wstawić je np. do jakiejś deklaracji/podprogramu.
    Program teraz wygląda tak i jak na razie wszystko działa i poprawnie się wyświetla:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0