Esc-tem bez zapisywania nowej wartości. Na symulatorze to chodzi tylko Panowie podpowiedzcie co z tym zrobić aby to może zminimalizować albo coś uprościć . Dopiero się uczę i na pewno popełniłem sporo błędów ale może coś poprawicie.
Kod:
Kod: Zaznacz cały
Config Lcd = 16 * 2
Deflcdchar 0 , 231 , 231 , 231 , 224 , 224 , 224 , 224 , 224 'deklaracja znaku sytopni
Pompa Alias P0.0 ' Sterowanie Pompą Glówną
Cyrkulacja Alias P0.1 'sterwanie pompą cyrkulacyną
Alarm Alias P0.2 'wyjście alarmu
Enter Alias P0.3 'przcik enter
Esc Alias P0.4 'Przycik kasuj
Góra Alias P0.5 'przycik plus
Dól Alias P0.6 'przycik minus
Zawórzbiornika Alias P1.2
Zawórogrzewacza Alias P1.3
Dim Tk As Byte 'temperatura kolektra
Dim Tz As Byte 'temperatura zbornika
Dim Delta As Byte 'histereza zalączania pompy
Dim P As Byte 'zmienna pomocnicza do obslugi klawiszy
Dim J As Byte 'zminna pomocnicza do nastaw
Dim Tmin As Byte 't minimalna po której może pracować pompa
Dim Tmax As Byte 't max po której pompa musi byćwylączona
Config 1wire = P0.7
P0 = 255 'ustawienie portu dla bezpieczeństwa na starcie
Tmax = 80
Tmin = 50
Delta = 3
Cls
Do
Debounce Enter , 0 , Obslugaklawiszy , Sub 'skok po naiśnieciu przycisku
Debounce Esc , 0 , Obslugaklawiszy , Sub
Debounce Góra , 0 , Obslugaklawiszy , Sub
Debounce Dól , 0 , Obslugaklawiszy , Sub
Lcd "ZBIORNIK= " ; Tz ; Chr(0) ; "C" ' normalnie wyświetlana temperatura
Lowerline
Lcd "KOLEKTOR= " ; Tk ; Chr(0) ; "C "
Loop
Obslugaklawiszy:
Cls
Do
Print P 'jeśli nacisniety esc powrót do programu glownego
If Esc = 0 Then 'zmienna p przyjmuje zero
P = 0
Set Esc
Cls
Return
End If
If Góra = 0 Then ' zwiększamu lub zmniejszamy zmienną pomocniczą
Set Góra
Incr P
If P = 5 Then 'warunki aby P chodzila w petli od 1 do 4
P = 1
End If
Elseif Dól = 0 Then
Set Dól
Decr P
If P = 0 Or P = 255 Then
P = 4
End If
End If
Select Case P
Case 1 :
Cls
Lcd "Sterowanie" ' reczne sterowanie pompy
Lowerline
Lcd "Pompy"
If Enter = 0 Then
Set Enter
Gosub Pompa
End If
Case 2:
Cls
Lcd "Tmin zal pompy" 'pytaie o ustawienie punktu zalączenia pompy
Lowerline ' w zalezności od temperatury kolektora
Lcd "" ; Tmin ; Chr(0) ; "C Zmienic ? " 'pompa powinna pracować dopiero pwyżej pewnej
If Enter = 0 Then 'temperatury
Set Enter
Gosub Zmianatemperaturykolektora
End If
Case 3 :
Cls 'Pytanie o zmiane temperaura maxymalnej po której
Lcd "Tmax ALARMU" 'pompa nie powinna pracować i wywolanie alarmu na wyjściu
Lowerline
Lcd "" ; Tmax ; Chr(0) ; "C Zmienic ?"
If Enter = 0 Then
Set Enter
Gosub Zmianatemperaturyalarmu
End If
Case 4 :
Cls 'różnica temperatur pomiędzy kolektorem
Lcd "Roznica temperatur" 'a zasobnikiem aby uruchomić wymiane nagrzanego plynu
Lowerline
Lcd "" ; Delta ; Chr(0) ; "C zmienic ?"
If Enter = 0 Then
Set Enter
Gosub Zmianaróżnicytemperatór
End If
End Select
Loop
Pompa:
Cls
Do
If Pompa = 0 Then
Lcd "Pompa Pracuje"
Lowerline
Lcd "Wylaczyc ? "
If Enter = 0 Then
Set Pompa
Set Enter
Cls
Lcd "Pompa Wylaczona"
Waitms 20
Return
Elseif Esc = 0 Then
Set Esc
Return
End If
Else
Lcd "Pompa Stoi"
Lowerline
Lcd "Zalaczyc ? "
If Enter = 0 Then
Set Enter
Reset Pompa
Cls
Lcd "Pompa Zalaczona"
Waitms 20
Return
Elseif Esc = 0 Then
Set Esc
Return
End If
End If
Loop
Zmianatemperaturykolektora: 'temperatura w kolktorze od której może
J = Tmin 'pracować pompa
Cls
Do
Lcd "Tmin zal pompy"
Lowerline
Lcd " " ; Tmin ; Chr(0) ; "C -zmiana"
' Waitms 20
If Dól = 0 Then
Set Dól
Decr Tmin
Elseif Góra = 0 Then
Set Góra
Incr Tmin
Elseif Esc = 0 Then
Set Esc
Tmin = J
Return
Elseif Enter = 0 Then
Set Enter
Cls
Lcd " ZAPISANE"
Return
End If
Loop
Zmianatemperaturyalarmu: 'zmiana temperatury do jakiej może zagrzać się woda
J = Tmax 'w zbiorniku
Cls
Do
Lcd "Tmax zbiornika"
Lowerline
Lcd " " ; Tmax ; Chr(0) ; "C zmiana "
'Waitms 20
If Dól = 0 Then
Set Dól
Decr Tmax
Elseif Góra = 0 Then
Set Góra
Incr Tmax
Elseif Esc = 0 Then
Set Esc
Tmax = J
Return
Elseif Enter = 0 Then
Set Enter
Cls
Lowerline
Lcd " ZAPISANE"
Return
End If
Loop
Zmianaróżnicytemperatór:
J = Delta
Cls
Do
Lcd "Roznica temper"
Lowerline
Lcd " " ; Delta ; Chr(0) ; "C zmiana"
'Waitms 20
If Dól = 0 Then
Set Dól
Decr Delta
Elseif Góra = 0 Then
Set Góra
Incr Delta
Elseif Esc = 0 Then
Set Esc
Delta = J
Return
Elseif Enter = 0 Then
Set Enter
$large
Cls
Lcd " ZAPISANE"
Return
End If