Gdybym opisał program wszystko stałoby się oczywiste
Użycie IF ELSE bez END IF zawsze warte jest omówienia bo potem nikt nie może się doliczyć END IF
Chodzi o to że jeśli tylko jedna instrukcja jest od jakiegoś warunku zależna to można ją zapisać w jednej linii. Jeśli z powodu jakiegoś warunku musza juz być zmienione dwie zmienne lub wykonać się dwie instrukcje to już musisz to rozpisać w wielu liniach. Tak więc możesz napisać
Zaloguj się, aby zobaczyć kod
Jest to jednak niepotrzebne bo można to zapisać tak:
Zaloguj się, aby zobaczyć kod
Jeśli jednak A ma być wyzerowane i ma się stać coś jeszcze to juz musisz to rozpisać na wiecej linii.
Zaloguj się, aby zobaczyć kod
Teraz dopiero dodam że można jeszcze coś dodać w tej jednej linii jeśli warunek nie jest spełniony. I również można tam zapisać tylko jedną instrukcję.
Można więc zapisać coś takiego
Zaloguj się, aby zobaczyć kod
Co oznacza zwiększaj A jeśli mniejsze od 4
Jeśli jednak jest dużo IF to można się gubić...Jest na to sposób
Jeśli cokolwiek jest zapisane za wyrażeniem "Then" znaczy ze jest to zapis w jednej linii i nie potrzebuje "End If" oraz...co jest ważniejsze, instrukcje pod tą linią nie są już objęte IF`em
Wracając do pierwszego pytania
Zaloguj się, aby zobaczyć kod
Ten zapis tworzy granicę do której można podnieść wartośc zmiennej.
Znaczy "Tylko jeśli jeszcze zmienna nie ma 400 to dodaj jeden" Jeśli juz ma 400 to nic się nie doda.
Takie zabezpieczenie stosje się tym częściej im mniejsza jest zmienna. Na przykład Bajt
Zaloguj się, aby zobaczyć kod
Stosuje się dlatego że po dodaniu 1 do 255 wartość wynosiłaby znów 0.
Moim zdaniem dużo ciekawszy jest ten zapis
Zaloguj się, aby zobaczyć kod
Pomyśl jakie wartości sa w komórkach Eeproma po programowaniu.
Cała pamięć ma wartości FF FF FF FF FF
Czyli po włączeniu pierwszy raz czytana jest temperatura i wynosi....65535 (FF FF)
Dlatego zapis że jeśli temperatura odczytana z Eeproma wieksza niż "typowa" to przyjmij bezpieczna wartość.
To samo jest dla wartości typu Byte. Odczytana ze "świeżego" Eeproma wynosi 255.
Nie chcę zaciemniać, ale dla Integer trzeba innego zapisu
Wracając do pytań. Status to sposób na rozpoznanie w każdym miejscu programu co akurat się dzieje w programie. Ciekawsze są jednak te stałe
Kiedy napiszesz że
Zaloguj się, aby zobaczyć kod
..to w całym programie możesz używać "Normal" albo "Term"
Ty wiesz dokładnie w jakim stanie jest program, możesz też w każdym miejscu programu zmienić stan na jakiś z tych wcześniej zapisanych...
a mikrokontroler widzie to tak : Status = 2
Ty piszesz If Status = Normal a mikrokontroler widzi If Status = 0
Piszesz Status = Hist a mikrokontroler sobie zapisuje Status = 1
Nie do końca wiem co Ci się nie wyświetla ale napiszę że nie wysyła się ciągle tego samego w pętli na wyświetlacz jeśli nic się nie zmieniło. To byłby bezsens.
Stosuje się więc zabieg:
Jeśli coś jest do wyświetlenia to to wyświetl i gotowe. To że cos jest do wyświetlenia pokazuje zmienna Refresh.
W przypadku zegarków, na przykład, taka Refresh jest ustawiana co sekundę i wtedy zmieniają się sekundy na LCD ale tylko raz na sekundę..bo po co częściej.
..ale gdy jesteś w menu to odświeżanie co sekundę mogło by być zbyt wolne. Dlatego gdy jakaś wartosć się zmieniła bo ją ustawiasz to ustawiasz też zmienną Refresh = 1
Wtedy od razu nowa wartość pokaże się na LCD.
Czyli wyświetlacz jest odświeżany kiedy coś się zmieniło i musi być pokazane.
Jesli Refresh = 1 to jest od razu kasowane Refresh = 0 ..ale dalej program analizuje co ma pokazać. patrzy jaki jest Status i wybiera co pokazać.
W zależności co chcesz osiągnąć czasem potrzebne jest Cls ale pod przyciskiem nie w pętli.
To nie jest jakiś superprogram tylko przerobiony troche Twój
Można go jednak rozbudowywać dalej w ten sposób. Prawdopodobnie to co chcesz osiągnąć da się zrobić dopisując
Zaloguj się, aby zobaczyć kod
..pewnie o czyms zapomniałem ale dokombinujesz
EDIT: Nie wszystkie przykłady są trafione. czasem żeby cos wytłumaczyć trzeba się zastanowic jak to powiedzieć.
Kazdy kod można zoptymalizować.
Przedtem pisało If Zmienna < 400 Then Zmienna = Zmienna + 10 i dlatego taki zapis.
W przypadku jedynki można po prostu napisać
If Zmienna < 400 Then Incr Zmienna
Tak samo przykład dla Else
If A = 1 Then Idź tam Else Idź gdzieś indziej

i takie tam niuanse
