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.

Atmega644/Bascom - Ograniczenie min i max warości zmiennej

maximus22_kr 16 Cze 2013 20:47 1101 3
  • #1 16 Cze 2013 20:47
    maximus22_kr
    Poziom 18  

    Witam
    Mam taki kod, który przez Case ustawia mi minuty, godziny, sekundy, dzień, miesiąc, itd
    Poniżej tylko jeden z wyborów, ale wszystkie są takie same jeśli chodzi i ideę

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Problem w tym, że jeśli zwiększam wartość zmiennej to jest w porządku, jeśli dojdzie do górnego zakresu, ale jeśli zmniejszam i dojdzie do dolnego zakresu to przeskakuje na wartość 255.

    0 3
  • #2 16 Cze 2013 21:07
    landy13
    Poziom 29  

    Code:
    If M < 0 Then
    Ten warunek nigdy się nie spełni. Zmienna M jest typu Byte i przyjmuje wartości dodatnie. Spróbuj If M=255 Then

    0
  • #3 16 Cze 2013 21:13
    tronics
    Poziom 36  

    Dodajesz jeden warunek przed decr by wykonać zmniejszenie o 1 tylko jeśli dajmy na to M jest większe od zera. W przeciwnym wypadku w ogóle program pomija odejmowanie tylko nadaje wartość 59.
    Przy okazji prawdopodobnie masz zmienne Byte - w tym wypadku nie ma jako tako wartości ujemnych (są w C dla signed char, int8_t) więc ten kawałek:
    If M < 0 Then
    nigdy nie zadziała.

    0
  • #4 17 Cze 2013 04:49
    emarcus
    Poziom 35  

    maximus22_kr napisał:
    Witam

    Problem w tym, że jeśli zwiększam wartość zmiennej to jest w porządku, jeśli dojdzie do górnego zakresu, ale jeśli zmniejszam i dojdzie do dolnego zakresu to przeskakuje na wartość 255.


    Daj więc ten sam warunek co przy incrementacji:
    "...................
    Elseif Dol = 0 Or Enk_prawo = 0 Then
    Decr M
    If M > 59 Then
    M = 59

    ...................."
    to powinno 'trzymac' ustawianie w wymaganym zakresie.

    e marcus

    0