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.

[Bascom] Niedziałający kod - biegnące światełko

maystero 24 Mar 2010 13:24 1286 5
  • #1 24 Mar 2010 13:24
    maystero
    Poziom 24  

    Witam.
    Uczę się (staram sie) programowania w BASCOM. Orłem nie jestem. Do nauki używam książkę "Marcina Wiązania - Programowanie mikrokontrolerow AVR w jezyku Bascom". Pierwsza lekcja opisuje prosty kod:

    Code:

    $SIM                        'dyrektywa opuszczenia instrukcji
                               'opóźnienia
    $REGFILE = "m8def.dat"            'informuje kompilator o pliku
                               'dyrektyw mikrokontrolera
    $CRYSTAL = 8000000               'informuje kompilator o częstotliwości
                               'oscylatora taktującego
                               'mikrokontroler
    Config Portd = Output             'wszystkie linie portu D
                               'jako wyjściowe
    Config Pinb.0 = Input            'linia PB0 jako wejściowa

    Dim Kierunek As Bit               'pomocnicza zmienna bitowa

    Przycisk Alias Pinb.0            'przypisanie zastępczej Przycisk
                               'nazwy dla Pinb.0

    Set Portb.0                     'włączenie rezystora podciągającego
                               'do linii PB0
    Portd = &B11111110               'wpisanie wartości 254 do portu D
    Reset Kierunek                  'zerowanie zmiennej określającej
                               'kierunek zaświecania diod LED
    Do                           'początek pętli nieskończonej
       If Przycisk = 0 Then         'jeśli przycisk naciśniety, to
          Waitms 50               'odczekaj 50 ms




          Toggle Kierunek            'zmień stan na przeciwny
                               'zmiennej bitowej Kierunek
          Do                     'pętla do wykonywana, aż
          Loop Until Przycisk = 1      'do puszczenia przycisku
       End If                     'koniec instrukcji warunkowej
       If Kierunek = 1 Then         'jeżeli zmienna Kierunek=1, to
          Rotate Portd , Left         'przesuwaj wpisane wartości do
                               'portu D w lewo
       Else                     'w przeciwnym wypadku
          Rotate Portd , Right      'przesuwaj wpisane wartości do
                               'portu D w prawo
       End If                     'koniec warunku
       Waitms 100                  'czekaj 100 ms
    Loop                        'koniec pętli głównej programu
    End                           'koniec programu
     


    który ma symulować biegnące światełko, a przycisk ma zmieniać kierunek "lewo-prawo".
    Początkowo myślałem że źle przepisałem z książki kod, więc znalazłem źródła na stronie wydawcy książki i problem jest identyczny!!
    po skompilowaniu i wgraniu BIN-a do Atmega świecą się zawsze wszystkie LED-y.
    Do testów używam ZL2AVR v.2. Płytka sprawna bo inne źródła po skompilowaniu działają OK.
    proszę o pomoc boo już mi sił brakuje :(

    0 5
  • Pomocny post
    #2 24 Mar 2010 13:43
    Mimitron
    Poziom 20  

    Usuń

    Code:
    $sim 
    i spróbuj ponownie.

    0
  • #3 24 Mar 2010 18:18
    maystero
    Poziom 24  

    działa!! :D

    Mimitron możesz mi wyjaśnić "czemu" ?

    0
  • #4 24 Mar 2010 18:36
    polprzewodnikowy
    Poziom 26  

    Proszę abyś przeczytał komentarz przy dyrektywie $sim. Stosuje się ją gdy chcesz przetestować program w Bascomowym symulatorze.

    0
  • #5 24 Mar 2010 18:42
    maystero
    Poziom 24  

    polprzewodnikowy napisał:
    Proszę abyś przeczytał komentarz przy dyrektywie $sim. Stosuje się ją gdy chcesz przetestować program w Bascomowym symulatorze.

    acha
    (muszę sie jeszcze duuuużo nauczyć)

    0
  • #6 24 Mar 2010 19:08
    tadzik85
    Poziom 38  

    Naprawdę czytanie helpa wystarczy by zrozumieć w stopniu dobrym BASCOMA. W sieci nawet polski help krąż oraz wiele kursów.

    0