Witam
Nie mam pomysłu jak wykonać warunek gdzie:
"Jeżeli zmienna Temperatura ulegnie zmianie to przejdź do podprogramu Wyswietlanie"
Chciałbym aby LCD był odświeżany tylko wtedy, gdy się zmieni temperatura.
Zamieszczam kod jak to wygląda teraz
Nie mam pomysłu jak wykonać warunek gdzie:
"Jeżeli zmienna Temperatura ulegnie zmianie to przejdź do podprogramu Wyswietlanie"
Chciałbym aby LCD był odświeżany tylko wtedy, gdy się zmieni temperatura.
Zamieszczam kod jak to wygląda teraz
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 32 ' default use 32 for the SW stack
$framesize = 40 ' default use 40 for the frame space
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portd.0 , E = Portc.4 , Rs = Portc.5
Config 1wire = Portb.0
Dim Odczyt(2) As Byte , T As Integer , Temperatura As Single
Deflcdchar 1 , 14 , 10 , 14 , 32 , 32 , 32 , 32 , 32 ' replace ? with number (0-7)
Deflcdchar 2 , 12 , 4 , 6 , 4 , 12 , 4 , 14 , 32 ' replace ? with number (0-7)
'------------------------------------------------------------------------------------------------
Do
Gosub Pomiar
Gosub Wyswietlanie
Loop
End
'----------------------------------------------------
Pomiar:
1wreset 'reset
1wwrite &HCC 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM
1wwrite &H44 'dokonaj
Waitms 750 'przeczekaj czas konwersji
1wreset 'reset
1wwrite &HCC 'rozkaz adresowy SKIP ROM
1wwrite &HBE 'rozkaz funkcyjny - polecenie odczytu DS18x20
Odczyt(1) = 1wread(2) 'odczytaj dwa pierwsze bajty
T = Odczyt(2) 'przepisz starszy bajt do zmiennej typu Integer
Shift T , Left , 8 'przesuń ten bajt w lewo na wyższe pozycje
T = T + Odczyt(1) 'przepisz - dodaj młodszy bajt
Temperatura = T / 2 'wyraź w stopniach Celsjusza, wynik wpisz do zmiennej Single
Return
'---------------------------------------------------
Wyswietlanie:
Cls : Lcd "Temp=" ; Temperatura ; Chr(1) ; "C" 'wyświetl wynik ze zmiennej temperatura
Return