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

attiny2313[bascom] - Błąd w kodzie do zamka szyfrowego

aarrreeeekkkkk 05 Paź 2015 19:18 1209 9
  • #1 15044712
    aarrreeeekkkkk
    Poziom 9  
    Witam
    Mam pewien problem z tym kodem

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Alarm ma się załączyć za trzecim błędnym wpisanym kodem i tu pojawia się problem, bo nie reaguje. Tzn nie przechodzi do podprogramu "alarmowanie".
    Gdy ustawię załączanie alarmu za drugim razem
    Cytat:
    If Alarm = 2 Then
    Goto Alarmowanie
    Alarm = 0
    End If

    to wszystko działa.

    Zmienną definiuję następująco:
    Cytat:
    dim alarm as byte


    Nie mam pomysłu co robię źle.
  • Pomocny post
    #2 15045042
    Jaca
    Poziom 31  
    1. Daj sprawdzanie szyfru w pętli bo zajeździsz BASCOM'a tak długim warunkiem ;-)

    Kod: text
    Zaloguj się, aby zobaczyć kod


    2. Zamiast Goto Alarmowanie powinno być Gosub Alarmowanie ponieważ Alarm = 0 nigdy nie zostanie wykonane.
  • #3 15046883
    aarrreeeekkkkk
    Poziom 9  
    Zamieniłem goto na go sub i nic nie dało. Nadal nie przechodzi w podprogram "alarmowanie". Ale gdy ustawie
    Cytat:
    If Alarm = 2 Then
    działa wyśmienicie.
    Do zmiennej alarm można przypisać od 0 do 255, więc czemu nie może zliczyć do 3?

    Ta pętla działa tak, że sprawdza czy jest jakiś błąd i zwraca zmienną valid = 0? A jeśli wszystko się zgadza to valid = 1?
  • #4 15046982
    tronics
    Poziom 38  
    Zmienna jest zadeklarowana, ale nie jest zainicjowana. Nie wiem czy bascom dokonuje autoinicjalizacji z wartością zero, ale jeśli nie to przy/po deklaracji najlepiej zainicjować domyślną/startową wartością każdą użytą zmienną, oprócz indeksowych z For bo są tak czy siak tam inicjowane.
    Wybrany fragment z tutoriala BASCOM-AVR
    Cytat:
    Notice that a LOCAL variable is not initialized. It will contain a value that will depend on the value of the FRAME data. So you can not assume the variable is 0. If you like it to be 0, you need to assign it.
  • #5 15047036
    Jaca
    Poziom 31  
    Możesz wrzucić tu kompletny kod programu ?
  • #6 15049544
    aarrreeeekkkkk
    Poziom 9  
    Oczywiście mam przypisane wartości początkowe do zmiennych.

    Oto kod:

    Spoiler:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #7 15049578
    Jaca
    Poziom 31  
    Wywal Goto przy Sprawdzanie i Gosub przy Alarmowanie. Ma zostać samo Sprawdzanie i Alarmowanie ponieważ teraz masz je jako procedury a nie jak wcześniej etykiety skoków.
  • #8 15049616
    aarrreeeekkkkk
    Poziom 9  
    Wyrzuciłem i działa. Myślałem, że trzeba wstawiać "goto" i "gosub" i to mnie zmyliło.
  • #9 15051383
    Konto nie istnieje
    Poziom 1  
  • #10 15052485
    aarrreeeekkkkk
    Poziom 9  
    Dziękuję bardzo za rady. Teraz będę trochę mądrzejszy.
REKLAMA