Dim Ii As Byte
Dim Wsk As Byte
Aktywuj_menu = 1 : Pomiar_temp = 0 : Timer0_stan = 0 : Sekunda = 0 : Ekran = 1 : Buzzer = 1 : Podswietlenie = 1 : Sposob_wyswietlania = 1
Wle_nadmuchu = 1 : Pompa_wody = 1 : Czas_palenia = 0 ': Zalaczenie_z_pilota = 0
Enable Interrupts
Wsk = 0
Load Timer0 , Timer0_counter : Start Timer0
Enable Int2
Lcdclear
' Restore Mazda
' Show 20 , 1
' Lcdupdate
Lcdgoxy 1 , 2
Lcdstr " Sterownik " , 1 , 0
Lcdgoxy 1 , 3
Lcdstr "Mazda by Remus" , 1 , 0
Lcdgoxy 1 , 5
Lcdstr " ver. 1.5f " , 1 , 1
Lcdupdate
Wait 3
Lcdclear
Do
Gosub Getdatetime : Gosub Wybor_dnia_tygodnia : Odczyt_temperatury
Mierz_napiecie : Gosub Wyswietlanie : Webasto
If Sw3 = 0 Then
Buzzer = 0 : Waitms 500 : Buzzer = 1
Toggle Sposob_wyswietlania
Lcdclear
Ekran = 1
End If
If Sw1 = 0 Then
' Buzzer = 0 : Waitms 500 : Buzzer = 1
' Toggle Wle_nadmuchu : Toggle Pompa_wody
End If
If Aktywuj_menu = 0 Then Menu
Sprawdzanie_swiatel : Zmiana_czasu
' if zalaczenie_z_pilota = 1 then
' przekaznik = 0 : zalaczenie_z_pilota = 0 : wait 1
' else
' przekaznik = 1
' end if
Loop
'/////////////////////////////////////////////////
'/////////////////// WYŚWIETLACZ ///////////////
'/////////////////////////////////////////////////
Wyswietlanie:
If Sposob_wyswietlania = 0 Then 'jeśli chcesz wyświetlić zegarek+Tz+Tw+datę
If Czuwanie_webasto = 1 Then 'jeśli webasto czuwa
Nn = 1 'wyświetl w negatywie godzinę
Else 'inaczej w pozytywie
Nn = 0
End If
Lcdgoxy 3 , 1
Pomoc_string = Str(_hour)
If _hour < 10 Then
Lcdstr " " , 2 , 0 : Lcdstr Pomoc_string , 2 , Nn : Lcdstr ":" , 2 , Nn
Else
Lcdstr Pomoc_string , 2 , Nn : Lcdstr ":" , 2 , Nn
End If
Pomoc_string = Str(_min)
If _min < 10 Then
Lcdstr "0" , 2 , Nn : Lcdstr Pomoc_string , 2 , Nn
Else
Lcdstr Pomoc_string , 2 , Nn
End If
Lcdupdate
Lcdgoxy 1 , 4
Pomoc_string = Str(_day)
If _day < 10 Then
Lcdstr "0" , 1 , 0 : Lcdstr Pomoc_string , 1 , 0 : Lcdstr ":" , 1 , 0
Else
Lcdstr Pomoc_string , 1 , 0 : Lcdstr ":" , 1 , 0
End If
Pomoc_string = Str(_month)
If _month < 10 Then
Lcdstr "0" , 1 , 0 : Lcdstr Pomoc_string , 1 , 0 : Lcdstr ":" , 1 , 0
Else
Lcdstr Pomoc_string , 1 , 0 : Lcdstr ":" , 1 , 0
End If
Pomoc_string = Str(_year)
If _year < 10 Then
Lcdstr "0" , 1 , 0 : Lcdstr Pomoc_string , 1 , 0
Else
Lcdstr Pomoc_string , 1 , 0
End If
Lcdstr " " , 1 , 0
Lcdstr Dzien_tygodnia , 1 , 0
Lcdupdate
Lcdgoxy 1 , 5
If Tz = 198 Then ' jeśli nie ma czujnika na magistrali
Gosub Kreski ' wyświetl "*****" na LCD
Else
Lcdstr "Tz=" , 1 , 0 'wyświetl na poz."1,1" "Tz="
Lcdgoxy 4 , 5 'określenie pozycji na wyświetlaczu LCD
If Tz > 9 Then 'jeśli temperatura jest dwucyfrowa
If Znak_temp_zewn = 1 Then 'i jest ujemna
Lcdstr "-" , 1 , 0 'wyświetl na poz."1,3" minus
Else 'jeśli dodatnia
Lcdstr " " , 1 , 0 'na pozycji "1,3" spacja
End If
Else 'jeśli jednocyfrowa
If Znak_temp_zewn = 1 Then 'i ujemna
If Tz = 0 Then 'jeśli T=0 wtedy nie wyświetlaj minusa tylko spacje
Lcdstr " " , 1 , 0 'na pozycji "1,3" i "1,4" spacja
Else
Lcdstr " -" , 1 , 0 'na poz."1,3" spacja, na "1,4" minus
End If
Else 'jeśli dodatnia
Lcdstr " " , 1 , 0 'na "1,3" i "1,4" pozycji spacja
End If
End If
Pomoc_string = Str(tz)
Gosub Wyswietl_temp
End If
Lcdgoxy 1 , 6
If Tw = 198 Then 'jeśli go nie ma
Gosub Kreski
Else
Lcdstr "Tw=" , 1 , 0 'wyświetl na poz."2,1" "Tw="
Lcdgoxy 4 , 6 'określenie pozycji na wyświetlaczu LCD
If Tw > 9 Then 'jeśli temperatura jest dwucyfrowa
If Znak_temp_wewn = 1 Then 'i jest ujemna
Lcdstr "-" , 1 , 0 'wyświetl na poz."1,3" minus
Else 'jeśli dodatnia
Lcdstr " " , 1 , 0 'na pozycji "1,3" spacja
End If
Else 'jeśli jednocyfrowa
If Znak_temp_wewn = 1 Then 'i ujemna
If Tw = 0 Then 'jeśli T=0 wtedy nie wyświetlaj minusa tylko spacje
Lcdstr " " , 1 , 0 'na pozycji "1,3" i "1,4" spacja
Else
Lcdstr " -" , 1 , 0 'na poz."1,3" spacja, na "1,4" minus
End If
Else 'jeśli dodatnia
Lcdstr " " , 1 , 0 'na "1,3" i "1,4" pozycji spacja
End If
End If
Pomoc_string = Str(tw)
Gosub Wyswietl_temp 'Temperatura wyświetlana na pozycji "2,1"
End If
End If
If Sposob_wyswietlania = 1 Then 'jeśli chcesz wyświetlić Tz+Tw+U+zegarek
If Czuwanie_webasto = 1 Then 'jeśli webasto czuwa
Nn = 1 'wyświetl w negatywie godzinę
Else 'inaczej w pozytywie
Nn = 0
End If
Lcdgoxy 1 , 6
Pomoc_string = Str(_hour)
If _hour < 10 Then
Lcdstr " " , 1 , 0 : Lcdstr Pomoc_string , 1 , Nn : Lcdstr ":" , 1 , Nn
Else
Lcdstr Pomoc_string , 1 , Nn : Lcdstr ":" , 1 , Nn
End If
Pomoc_string = Str(_min)
If _min < 10 Then
Lcdstr "0" , 1 , Nn : Lcdstr Pomoc_string , 1 , Nn
Else
Lcdstr Pomoc_string , 1 , Nn
End If
Lcdupdate
Lcdgoxy 1 , 3
Pomoc_string = Str(wolt_cale)
Lcdstr Pomoc_string , 2 , 0 : Lcdstr "." , 2 , 0
Pomoc_string = Str(wolt_dziesiate)
Lcdstr Pomoc_string , 2 , 0
Lcdupdate
Lcdgoxy 1 , 1
If Tz = 198 Then ' jeśli nie ma czujnika na magistrali
Gosub Kreski ' wyświetl "*****" na LCD
Else
If Tz > 9 Then 'jeśli temperatura jest dwucyfrowa
If Znak_temp_zewn = 1 Then 'i jest ujemna
Lcdstr "-" , 2 , 0 'wyświetl na poz."1,3" minus
Else 'jeśli dodatnia
Lcdstr " " , 2 , 0 'na pozycji "1,3" spacja
End If
Else 'jeśli jednocyfrowa
If Znak_temp_zewn = 1 Then 'i ujemna
If Tz = 0 Then 'jeśli T=0 wtedy nie wyświetlaj minusa tylko spacje
Lcdstr " " , 2 , 0 'na pozycji "1,3" i "1,4" spacja
Else
Lcdstr " -" , 2 , 0 'na poz."1,3" spacja, na "1,4" minus
End If
Else 'jeśli dodatnia
Lcdstr " " , 2 , 0 'na "1,3" i "1,4" pozycji spacja
End If
End If
Pomoc_string = Str(tz)
Lcdstr Pomoc_string , 2 , 0
Lcdupdate
End If
Lcdgoxy 8 , 1
If Tw = 198 Then 'jeśli go nie ma
Gosub Kreski
Else
If Tw > 9 Then 'jeśli temperatura jest dwucyfrowa
If Znak_temp_wewn = 1 Then 'i jest ujemna
Lcdstr "-" , 2 , 1 'wyświetl na poz."1,3" minus
Else 'jeśli dodatnia
Lcdstr " " , 2 , 0 'na pozycji "1,3" spacja
End If
Else 'jeśli jednocyfrowa
If Znak_temp_wewn = 1 Then 'i ujemna
If Tw = 0 Then 'jeśli T=0 wtedy nie wyświetlaj minusa tylko spacje
Lcdstr " " , 2 , 0 'na pozycji "1,3" i "1,4" spacja
Else
Lcdstr " -" , 2 , 1 'na poz."1,3" spacja, na "1,4" minus
End If
Else 'jeśli dodatnia
Lcdstr " " , 2 , 0 'na "1,3" i "1,4" pozycji spacja
End If
End If
Pomoc_string = Str(tw)
Lcdstr Pomoc_string , 2 , 1 'Temperatura wyświetlana na pozycji "2,1"
Lcdupdate
End If
End If
Return
Kreski:
Lcdstr "********" , 1 , 0 ' wyświetl "***** " na LCD
Return
Wyswietl_temp:
Lcdstr Pomoc_string , 1 , 0 ' CRC OK, print T*10 on LCD
Lcdstr "^C" , 1 , 0
Lcdstr " " , 1 , 0
Lcdupdate
Return
'*******************************************************************************************************************************************
'/////////////////////////////////////////////////////////////
'//// POMIARY TEMPERATUR ///////////////
'/////////////////////////////////////////////////////////////
Sub Odczyt_temperatury
If Pomiar_temp = 0 Then
Stop Timer0 : Timer0_stan = 0 : Load Timer0 , Timer0_counter '26
1wreset : 1wwrite &HCC : 1wwrite &H44 'wysłanie do wszystkich czujników rozkazu konwersji temp.
Pomiar_temp = 1
If Wyslij_sygnal = 1 Then 'jeśli załączona jest praca webasto 'dodane w celu kontynuacji palenia
Print "TU
SYGNAŁ PODTRZYMANIA PRACY WEBASTA"
End If
Start Timer0
End If
If Sekunda = 1 And Pomiar_temp = 1 Then 'jeśli minęła sekunda (timer0_stan=250) i było czekanie na konwersję (pomiar_temp=2)
For Ia = 1 To 8
Adres(ia) = Lookup(ia , Czujnik_zewnetrzny) 'odczyt adresu czujnika z zewnętrznego
Ktory_czujnik = 0 'czujnik zewnętrzny "0"
Next Ia
Gosub Weryfikacja_adresu 'sprawdź, czy urządzenie jest na magistrali
If Err = 1 Then 'jeśli go nie ma wtedy wyświetlimy kreski
Tz = 198
Else
Gosub Procedura_odczytu
End If
For Ia = 1 To 8
Adres(ia) = Lookup(ia , Czujnik_wewnetrzny) 'TEMPERATURA WEWNĘTRZNA
Ktory_czujnik = 1 'czujnik wewnętrzny "1"
Next Ia
Gosub Weryfikacja_adresu 'sprawdź, czy urządzenie jest na magistrali
If Err = 1 Then 'jeśli go nie ma wtedy wyświetlimy kreski
Tw = 198
Else
Gosub Procedura_odczytu
End If
Pomiar_temp = 0 : Sekunda = 0 ':Timer0_stan = 0
End If
End Sub
Weryfikacja_adresu:
Stop Timer0 'zatrzymaj timery na czas komunikacji 1wire, żeby nie zakłócały komunikacji
1wverify Adres(1) 'zweryfikuj adres
' Start Timer0 'wystartuj timery
Return
Procedura_odczytu:
Stop Timer0 'zatrzymaj timery na czas komunikacji 1wire, żeby nie zakłócały komunikacji
1wreset : 1wwrite &H55 : 1wwrite Adres(1) , 8 : 1wwrite &HBE 'dokonaj odczytu po konwersji
Adres(1) = 1wread(2) 'odczytaj 2 bajty (dla oszczędności wykorzystuję zmienne adres)
Start Timer0
If Adres(2) >= 248 Then 'jeśli temperatura ujemna
Adres(1) = 255 - Adres(1) : Adres(2) = 255 - Adres(2) 'dokonaj przeliczeń
If Ktory_czujnik = 0 Then Znak_temp_zewn = 1 'zaznacz, że temp zewnętrzna jest ujemna
If Ktory_czujnik = 1 Then Znak_temp_wewn = 1 'zaznacz, że temp wewnętrzna jest ujemna
Else
If Ktory_czujnik = 0 Then Znak_temp_zewn = 0 'zaznacz, że temp zewnętrzna jest ujemna
If Ktory_czujnik = 1 Then Znak_temp_wewn = 0 'zaznacz, że temp wewnętrzna jest ujemna
End If
T1 = Adres(1) \ 16 'podziel przez 16
T = Adres(2) * 16
T1 = T1 + T 'i dodaj obydwie części temperatury
If Ktory_czujnik = 1 Then Tw = T1 'T1 'a jeśli wewnętrznej t1 do tw
If Ktory_czujnik = 0 Then Tz = T1 'jeśli następuje pomiar temperatury zewnętrznej to przepisz zmienną t1 do tz
Return
Sub Mierz_napiecie
Start Adc 'zaczęcie odczytu napięcia
Napiecie = Getadc(0) 'odczytanie napięcia cyfrowo
Stop Adc 'koniec odczytu napięcia
Wolt = Napiecie
Wolt = Wolt * 1.926 'wynik 1199 dla 12V 'przelicznik (dla 12V odczyt to 623)
T1 = Wolt
T1 = T1 / 100
Wolt_cale = T1
T1 = Wolt
T1 = T1 Mod 100 : T1 = T1 / 10
Wolt_dziesiate = T1
End Sub
Sub Sprawdzanie_swiatel
If Swiatla = 0 Then
Restore Swiatla_on
Show 1 , 2
Lcdupdate
Przekaznik = 0
If Zaplon = 1 Or Cisn_oleju = 0 Then Przekaznik = 1
Else
Restore Swiatla_on
Clearshow 1 , 2
Lcdupdate
If Zaplon = 0 And Cisn_oleju = 1 Then
If Wolt_cale >= 13 Then 'jeśli napięcie przekracza 13 V wtedy załącz światła
Lcdclear
Restore Mazda
Show 20 , 1
Lcdupdate
Wait 2
Przekaznik = 0 : Lcdclear
End If
Else
Przekaznik = 1
End If
End If
End Sub
$include "zegarek.bas"
Wybor_dnia_tygodnia:
Select Case Weekday
Case 1 : Dzien_tygodnia = "pon"
Case 2 : Dzien_tygodnia = " wt"
Case 3 : Dzien_tygodnia = " sr"
Case 4 : Dzien_tygodnia = "czw"
Case 5 : Dzien_tygodnia = "pia"
Case 6 : Dzien_tygodnia = "sob"
Case 7 : Dzien_tygodnia = "nie"
End Select
Return
'/////////////////////////////////////////////////
'//// IMPULSATOR CZYLI MENU ///////////////
'/////////////////////////////////////////////////
'Pcie21_intr:
' Aktywuj_menu = 0
'Return
Int2_intr:
Disable Int2
Aktywuj_menu = 0
Enable Int2
Return
Sub Menu
Disable Int2 'wyłącz przerwanie zewnętrzne (na bieżąco są monitorowane knefle)
Timer0_stan3 = 0 : Liczba_sekund = 0
' load timer1 , timer0_counter : start timer1 'zacznij odliczać minutę
' Disable Pcint2
' Pcmsk2.3 = 0 'wyłączenie przerwania na pinie
Lcdclear 'wyczyść wyświetlacz
Buzzer = 0 : Wait 1 : Buzzer = 1
Licznik = 3 'domyślnie wchodzimy od razu na Webasto
Do
Gosub Knefle
If Licznik < 1 Then Licznik = 1
If Licznik > 5 Then Licznik = 5
Select Case Licznik
Case 5:
Lcdgoxy 1 , 2 : Lcdstr "data i czas" , 1 , 1 : Podmenu_1 = 1
Lcdgoxy 1 , 3 : Lcdstr "Odswiez ekran" , 1 , 0
Lcdgoxy 1 , 4 : Lcdstr "Webasto" , 1 , 0
Lcdgoxy 1 , 5 : Lcdstr "WYL. Webasto " , 1 , 0
Lcdgoxy 1 , 6 : Lcdstr "ZAL. Webasto " , 1 , 0
Lcdupdate
Case 4:
Lcdgoxy 1 , 2 : Lcdstr "data i czas" , 1 , 0
Lcdgoxy 1 , 3 : Lcdstr "Odswiez ekran" , 1 , 1 : Podmenu_1 = 2
Lcdgoxy 1 , 4 : Lcdstr "Webasto" , 1 , 0
Lcdgoxy 1 , 5 : Lcdstr "WYL. Webasto " , 1 , 0
Lcdgoxy 1 , 6 : Lcdstr "ZAL. Webasto " , 1 , 0
Lcdupdate
Case 3:
Lcdgoxy 1 , 2 : Lcdstr "data i czas" , 1 , 0
Lcdgoxy 1 , 3 : Lcdstr "Odswiez ekran" , 1 , 0
Lcdgoxy 1 , 4 : Lcdstr "Webasto" , 1 , 1 : Podmenu_1 = 3
Lcdgoxy 1 , 5 : Lcdstr "WYL. Webasto " , 1 , 0
Lcdgoxy 1 , 6 : Lcdstr "ZAL. Webasto " , 1 , 0
Lcdupdate
Case 2:
Lcdgoxy 1 , 2 : Lcdstr "data i czas" , 1 , 0
Lcdgoxy 1 , 3 : Lcdstr "Odswiez ekran" , 1 , 0
Lcdgoxy 1 , 4 : Lcdstr "Webasto" , 1 , 0
Lcdgoxy 1 , 5 : Lcdstr "WYL. Webasto " , 1 , 1 : Podmenu_1 = 4
Lcdgoxy 1 , 6 : Lcdstr "ZAL. Webasto " , 1 , 0
Lcdupdate
Case 1:
Lcdgoxy 1 , 2 : Lcdstr "data i czas" , 1 , 0
Lcdgoxy 1 , 3 : Lcdstr "Odswiez ekran" , 1 , 0
Lcdgoxy 1 , 4 : Lcdstr "Webasto" , 1 , 0
Lcdgoxy 1 , 5 : Lcdstr "WYL. Webasto " , 1 , 0
Lcdgoxy 1 , 6 : Lcdstr "ZAL. Webasto " , 1 , 1 : Podmenu_1 = 5
Lcdupdate
End Select
If Sw2 = 0 Then Exit Do 'Liczba_sekund = 57
If Liczba_sekund > 57 Then
Podmenu_1 = 2
Exit Do
End If
Loop 'Until Liczba_sekund = 57
' stop timer1
If Podmenu_1 = 1 Then 'jeśli wybrane podmenu "USTAW CZAS" wtedy wykonaj
Reset Buzzer : Waitms 300 : Set Buzzer : C = 1
Lcdclear
Gosub Getdatetime 'pobranie czasu
Licznik = _min 'przypisanie zmiennej 'licznik' 'MINUTY'
Lcdgoxy 1 , 2 : Lcdstr " USTAW CZAS " , 1 , 0
Lcdgoxy 1 , 3 : Lcdstr " ustaw minuty " , 1 , 0
Lcdgoxy 3 , 4
Pomoc_string = Str(_hour)
If _hour < 10 Then
Lcdstr " " , 2 , 0 : Lcdstr Pomoc_string , 2 , 0 : Lcdstr ":" , 2 , 0
Else
Lcdstr Pomoc_string , 2 , 0 : Lcdstr ":" , 2 , 0
End If
Pomoc_string = Str(_min)
If _min < 10 Then
Lcdstr "0" , 2 , 0 : Lcdstr Pomoc_string , 2 , 0
Else
Lcdstr Pomoc_string , 2 , 0
End If
Lcdupdate
Do 'ustawianie minut
Gosub Knefle
If Licznik > 59 Then Licznik = 0
If Licznik < 0 Then Licznik = 59
If C = 0 Then
_min = Licznik : _sec = 0
Pomoc_string = Str(licznik)
Lcdgoxy 9 , 4
If _min < 10 Then
Lcdstr "0" , 2 , 0 : Lcdstr Pomoc_string , 2 , 0 ': Lcdstr " " , 2 , 0
Else
Lcdstr Pomoc_string , 2 , 0 ': Lcdstr " " , 2 , 0
End If
Lcdupdate : C = 1
End If
If Sw2 = 0 Then Exit Do
Loop 'Until Sekundy = 900 'opuść pętle, gdy upłynęła minuta
Reset Buzzer : Gosub Settime
Waitms 300 : Set Buzzer : Lcdclear
Gosub Getdatetime : Licznik = _hour ' : _hour = Makedec(_hour) 'przypisanie zmiennej
Lcdgoxy 1 , 2 : Lcdstr " USTAW CZAS " , 1 , 0
Lcdgoxy 1 , 3 : Lcdstr " ustaw godzine" , 1 , 0
Lcdgoxy 3 , 4
Pomoc_string = Str(_hour)
If _hour < 10 Then
Lcdstr " " , 2 , 0 : Lcdstr Pomoc_string , 2 , 0 : Lcdstr ":" , 2 , 0
Else
Lcdstr Pomoc_string , 2 , 0 : Lcdstr ":" , 2 , 0
End If
Pomoc_string = Str(_min)
If _min < 10 Then
Lcdstr "0" , 2 , 0 : Lcdstr Pomoc_string , 2 , 0
Else
Lcdstr Pomoc_string , 2 , 0
End If
Lcdupdate
Do
Gosub Knefle
If Licznik > 23 Then Licznik = 0
If Licznik < 0 Then Licznik = 23
If C = 0 Then
_hour = Licznik : _sec = 0 ': _hour = Makebcd(_hour) : _sec = Makebcd(_sec)
Pomoc_string = Str(licznik)
Lcdgoxy 3 , 4
If _hour < 10 Then
Lcdstr " " , 2 , 0 : Lcdstr Pomoc_string , 2 , 0 ': Lcdstr " " , 2 , 0
Else
Lcdstr Pomoc_string , 2 , 0 ': Lcdstr " " , 2 , 0
End If
Lcdupdate : C = 1
End If
If Sw2 = 0 Then Exit Do
Loop 'Until Sekundy = 900 'opuść pętle, gdy upłynęła minuta
Reset Buzzer : Gosub Settime
Waitms 300 : Set Buzzer : Lcdclear
Gosub Getdatetime : Licznik = _year 'przypisanie zmiennej
Lcdgoxy 1 , 2 : Lcdstr " USTAW DATE " , 1 , 0
Lcdgoxy 1 , 3 : Lcdstr " ustaw rok " , 1 , 0
Lcdgoxy 4 , 5
Pomoc_string = Str(_day)
If _day < 10 Then
Lcdstr "0" , 1 , 0 : Lcdstr Pomoc_string , 1 , 0 : Lcdstr ":" , 1 , 0
Else
Lcdstr Pomoc_string , 1 , 0 : Lcdstr ":" , 1 , 0
End If
Pomoc_string = Str(_month)
If _month < 10 Then
Lcdstr "0" , 1 , 0 : Lcdstr Pomoc_string , 1 , 0 : Lcdstr ":" , 1 , 0
Else
Lcdstr Pomoc_string , 1 , 0 : Lcdstr ":" , 1 , 0
End If
Pomoc_string = Str(_year)
If _year < 10 Then
Lcdstr "0" , 1 , 0 : Lcdstr Pomoc_string , 1 , 0
Else
Lcdstr Pomoc_string , 1 , 0
End If
Lcdupdate
Do
Gosub Knefle
If Licznik > 99 Then Licznik = 0
If Licznik < 0 Then Licznik = 99
If C = 0 Then
_year = Licznik
Pomoc_string = Str(_year)
Lcdgoxy 10 , 5
If _year < 10 Then
Lcdstr "0" , 1 , 0 : Lcdstr Pomoc_string , 1 , 0
Else
Lcdstr Pomoc_string , 1 , 0
End If
Lcdupdate : C = 1
End If
If Sw2 = 0 Then Exit Do
Loop 'Until Sekundy = 900 'opuść pętle, gdy upłynęła minuta
Reset Buzzer : Gosub Setdate
Waitms 300 : Set Buzzer : Lcdclear
Gosub Getdatetime : Licznik = _month ':_month = Makedec(_month) 'przypisanie zmiennej
Lcdgoxy 1 , 2 : Lcdstr " USTAW DATE " , 1 , 0
Lcdgoxy 1 , 3 : Lcdstr " ustaw miesiac" , 1 , 0
Lcdgoxy 4 , 5
Pomoc_string = Str(_day)
If _day < 10 Then
Lcdstr "0" , 1 , 0 : Lcdstr Pomoc_string , 1 , 0 : Lcdstr ":" , 1 , 0
Else
Lcdstr Pomoc_string , 1 , 0 : Lcdstr ":" , 1 , 0
End If
Pomoc_string = Str(_month)
If _month < 10 Then
Lcdstr "0" , 1 , 0 : Lcdstr Pomoc_string , 1 , 0 : Lcdstr ":" , 1 , 0
Else
Lcdstr Pomoc_string , 1 , 0 : Lcdstr ":" , 1 , 0
End If
Pomoc_string = Str(_year)
If _month < 10 Then
Lcdstr "0" , 1 , 0 : Lcdstr Pomoc_string , 1 , 0
Else
Lcdstr Pomoc_string , 1 , 0
End If
Lcdupdate
Do
Gosub Knefle
If Licznik > 12 Then Licznik = 1
If Licznik < 1 Then Licznik = 12
If C = 0 Then
_month = Licznik ' przypisanie zmiennej
Pomoc_string = Str(_month)
Lcdgoxy 7 , 5
If _month < 10 Then
Lcdstr "0" , 1 , 0 : Lcdstr Pomoc_string , 1 , 0
Else
Lcdstr Pomoc_string , 1 , 0
End If
Lcdupdate : C = 1
End If
If Sw2 = 0 Then Exit Do
Loop 'Until Sekundy = 900 'opuść pętle, gdy upłynęła minuta
Reset Buzzer : Gosub Setdate
Waitms 300 : Set Buzzer : Lcdclear
Gosub Getdatetime : Licznik = _day 'przypisanie zmiennej
Lcdgoxy 1 , 2 : Lcdstr " USTAW DATE " , 1 , 0
Lcdgoxy 1 , 3 : Lcdstr " ustaw dzien " , 1 , 0
Lcdgoxy 4 , 5
Pomoc_string = Str(_day)
If _day < 10 Then
Lcdstr "0" , 1 , 0 : Lcdstr Pomoc_string , 1 , 0 : Lcdstr ":" , 1 , 0
Else
Lcdstr Pomoc_string , 1 , 0 : Lcdstr ":" , 1 , 0
End If
Pomoc_string = Str(_month)
If _month < 10 Then
Lcdstr "0" , 1 , 0 : Lcdstr Pomoc_string , 1 , 0 : Lcdstr ":" , 1 , 0
Else
Lcdstr Pomoc_string , 1 , 0 : Lcdstr ":" , 1 , 0
End If
Pomoc_string = Str(_year)
If _month < 10 Then
Lcdstr "0" , 1 , 0 : Lcdstr Pomoc_string , 1 , 0
Else
Lcdstr Pomoc_string , 1 , 0
End If
Lcdupdate
Do
Gosub Knefle
If Licznik > 31 Then Licznik = 1
If Licznik < 1 Then Licznik = 31
If C = 0 Then
_day = Licznik
Pomoc_string = Str(_day)
Lcdgoxy 4 , 5
If _day < 10 Then
Lcdstr "0" , 1 , 0 : Lcdstr Pomoc_string , 1 , 0
Else
Lcdstr Pomoc_string , 1 , 0
End If
Lcdupdate : C = 1
End If
If Sw2 = 0 Then Exit Do
Loop 'Until Sekundy = 900 'opuść pętle, gdy upłynęła minuta
Reset Buzzer : Gosub Setdate
Waitms 300 : Set Buzzer : Lcdclear
Gosub Getdatetime : Licznik = Weekday 'przypisanie zmiennej
Gosub Wybor_dnia_tygodnia
Lcdgoxy 1 , 2 : Lcdstr " USTAW DATE " , 1 , 0
Lcdgoxy 1 , 3 : Lcdstr "dzien tygodnia" , 1 , 0
Lcdgoxy 5 , 4
Lcdstr Dzien_tygodnia , 2 , 0
Lcdupdate
Do
Gosub Knefle
If Licznik > 7 Then Licznik = 1
If Licznik < 1 Then Licznik = 7
If C = 0 Then
Weekday = Licznik
Gosub Wybor_dnia_tygodnia
Lcdgoxy 5 , 4
Lcdstr Dzien_tygodnia , 2 , 0
Lcdupdate : C = 1
End If
If Sw2 = 0 Then Exit Do
Loop 'Until Sekundy = 900 'opuść pętle, gdy upłynęła minuta
End If
If Podmenu_1 = 2 Then '///////////////////////////////////////// RESET EKRANU i BUZZERA
Set Buzzer ': Sposob_wyswietlania = 1
Lcdclear
End If
If Podmenu_1 = 3 Then '///////////////////////////////////////// USTAWIENIE CZASU ZAŁĄCZENIA WEBASTO
Reset Buzzer : Waitms 300 : Set Buzzer : C = 1
Lcdclear
Licznik = Minuta_webasto 'przypisanie zmiennej 'licznik' 'MINUTY'
Lcdgoxy 1 , 2 : Lcdstr " ZAL. WEBASTO " , 1 , 0
Lcdgoxy 1 , 3 : Lcdstr " ustaw minute " , 1 , 0
Lcdgoxy 3 , 4
Pomoc_string = Str(godzina_webasto)
If Godzina_webasto < 10 Then
Lcdstr " " , 2 , 0 : Lcdstr Pomoc_string , 2 , 0 : Lcdstr ":" , 2 , 0
Else
Lcdstr Pomoc_string , 2 , 0 : Lcdstr ":" , 2 , 0
End If
Pomoc_string = Str(minuta_webasto)
If Minuta_webasto < 10 Then
Lcdstr "0" , 2 , 0 : Lcdstr Pomoc_string , 2 , 0
Else
Lcdstr Pomoc_string , 2 , 0
End If
Lcdupdate
Do 'ustawianie minut
Gosub Knefle
If Licznik > 80 Then Licznik = 59 'dla instrukcji "decr" licznik po 0 przyjmie wartość 255
If Licznik > 59 Then Licznik = 0 'a tu już normalnie, incr powyżej 59 daje 0
If C = 0 Then
Minuta_webasto = Licznik
Pomoc_string = Str(licznik)
Lcdgoxy 9 , 4
If Minuta_webasto < 10 Then
Lcdstr "0" , 2 , 0 : Lcdstr Pomoc_string , 2 , 0 ': Lcdstr " " , 2 , 0
Else
Lcdstr Pomoc_string , 2 , 0 ': Lcdstr " " , 2 , 0
End If
Lcdupdate : C = 1
End If
If Sw2 = 0 Then Exit Do
Loop 'Until Sekundy = 900 'opuść pętle, gdy upłynęła minuta
Reset Buzzer : Waitms 300 : Set Buzzer : Lcdclear
Licznik = Godzina_webasto 'przypisanie zmiennej
Lcdgoxy 1 , 2 : Lcdstr " ZAL. WEBASTO " , 1 , 0
Lcdgoxy 1 , 3 : Lcdstr " ustaw godzine " , 1 , 0
Lcdgoxy 3 , 4
Pomoc_string = Str(godzina_webasto)
If Godzina_webasto < 10 Then
Lcdstr " " , 2 , 0 : Lcdstr Pomoc_string , 2 , 0 : Lcdstr ":" , 2 , 0
Else
Lcdstr Pomoc_string , 2 , 0 : Lcdstr ":" , 2 , 0
End If
Pomoc_string = Str(minuta_webasto)
If Minuta_webasto < 10 Then
Lcdstr "0" , 2 , 0 : Lcdstr Pomoc_string , 2 , 0
Else
Lcdstr Pomoc_string , 2 , 0
End If
Lcdupdate
Do
Gosub Knefle
If Licznik > 80 Then Licznik = 23 'podobnie jak poprzednio
If Licznik > 23 Then Licznik = 0 ' i tu także
If C = 0 Then
Godzina_webasto = Licznik
Pomoc_string = Str(licznik)
Lcdgoxy 3 , 4
If Godzina_webasto < 10 Then
Lcdstr " " , 2 , 0 : Lcdstr Pomoc_string , 2 , 0 ': Lcdstr " " , 2 , 0
Else
Lcdstr Pomoc_string , 2 , 0 ': Lcdstr " " , 2 , 0
End If
Lcdupdate : C = 1
End If
If Sw2 = 0 Then Exit Do
Loop
Reset Buzzer : Waitms 300 : Set Buzzer : Lcdclear
Licznik = 0 : Licznik.0 = Czuwanie_webasto
Lcdgoxy 1 , 2 : Lcdstr "WLACZYC CZUW. " , 1 , 0
Lcdgoxy 1 , 3 : Lcdstr " WEBASTO? " , 1 , 0
Lcdgoxy 1 , 4
If Czuwanie_webasto = 1 Then
Mm = 1 : Nn = 0
Else
Mm = 0 : Nn = 1
End If
Lcdstr "TAK" , 2 , Mm : Lcdstr "/" , 2 , 0 : Lcdstr "NIE" , 2 , Nn
Lcdupdate
Do
Gosub Knefle
If Licznik <> 1 Then Licznik = 0 'jeśli licznik ma wartość jakąkolwiek inną oprócz 1 to przyjmuje wartość 0
If C = 0 Then
Czuwanie_webasto = Licznik.0
'Print "czuwanie webasto=" ; : Print Czuwanie_webasto
Lcdgoxy 1 , 4
If Czuwanie_webasto = 1 Then
Lcdstr "TAK" , 2 , 1 : Lcdstr "/" , 2 , 0 : Lcdstr "NIE" , 2 , 0
Else
Lcdstr "TAK" , 2 , 0 : Lcdstr "/" , 2 , 0 : Lcdstr "NIE" , 2 , 1
End If
Lcdupdate : C = 1
End If
If Sw2 = 0 Then Exit Do
Loop
Reset Buzzer : Waitms 300 : Set Buzzer : Lcdclear
End If
If Podmenu_1 = 4 Then '///////////////////////////////////////// WYŁĄCZENIE WEBASTO Z MENU
Reset Buzzer : Waitms 300 : Set Buzzer
Print "TU
SYGNAŁ WYŁĄCZ WEBASTO" 'wyslij WYLACZ
Pompa_wody = 1 : Wle_nadmuchu = 1 'wyłącz pompkę i wentylator
Czuwanie_webasto = 0 : Wyslij_sygnal = 0 'skończ też pracować w automacie
End If
If Podmenu_1 = 5 Then '////////////////////////////////////////// ZAŁĄCZENIE WEBASTO Z MENU
Reset Buzzer : Waitms 300 : Set Buzzer
Print "TU
SYGNAŁ ZAŁĄCZ WEBASTO" 'i
powtarzamy na wszelki wypadek 3 razy
Waitms 60
Print "TU
SYGNAŁ ZAŁĄCZ WEBASTO" 'i
powtarzamy na wszelki wypadek 3 razy
Waitms 60
Print "TU
SYGNAŁ ZAŁĄCZ WEBASTO" 'i
powtarzamy na wszelki wypadek 3 razy
Wait 2 'żeby poczekać przed wysłaniem pierwszego sygnału podtrzymania
Pompa_wody = 0 : Wle_nadmuchu = 0 'wyłącz pompkę i wentylator
Wyslij_sygnal = 1 'musi być aktywne w celu nadawania sygnału podtrzymującego
End If
Lcdclear
Reset Buzzer : Waitms 300 : Set Buzzer
Enable Int2
Eifr = 0 'wyzerowanie flagi zgłoszenia przerwań zewnętrznych (na wszelki wypadek)
Aktywuj_menu = 1
End Sub
Knefle:
If Sw1 = 0 Then
Incr Licznik : C = 0 : Waitms 200
End If
' If Sw2 = 0 Then Exit Do
If Sw3 = 0 Then
Decr Licznik : C = 0 : Waitms 200
End If
Return
'PODPROGRAM ZMIANY CZASU Z LETNIEGO NA ZIMOWY I ODWROTNIE
Sub Zmiana_czasu
'Miesiac = _month
'Dzien = _day
If _month = 3 And _day >= 25 Then 'zmiana czasu na letni (ostatnia niedziela marca)
If Weekday = 7 Then 'jeśli dniem tygodnia jest ostatnia niedziela marca wtedy
If _hour = 2 And _min = 0 Then 'jeśli jest 2 w nocy
_hour = 3 : Gosub Settime 'przestaw czas na letni (godzina do przodu)
End If
End If
End If
If _month = 10 And _day >= 25 Then 'zmiana czasu na zimowy (ostatnia niedziela października)
Gosub Polnoc
If Weekday = 7 Then 'jeśli akurat jest ostatnia niedziela października
If _hour = 3 And _min = 0 Then 'jeśli jest 3 w nocy wtedy
If Flaga_zmiany_czasu = 0 Then 'jeśli ustawiona flaga zmiany czasu, gdyż zapętliło by się
_hour = 2 : Flaga_zmiany_czasu = 1 'cofnij czas o godzinę i zmień flagę, żeby ponownie nie przestawiać czasu
Gosub Settime
End If
End If
End If
End If
End Sub
Polnoc:
If _hour = 0 And _min = 0 Then 'jeśli jest północ
Flaga_zmiany_czasu = 0 'przestaw flagę zmiany czasu
End If
Return
Odliczanie_czasu: 'podprogramu obsługi przerwania od przepełnienia Timer0
Stop Timer0
'(
If Pilot = 0 Then 'jeśli wykrył sygnał z pilota
Zalaczenie_z_pilota = 1 'ustaw flagę
Else 'w przeciwnym wypadku
Zalaczenie_z_pilota = 0 'zeruj flagę
End If
')
If Pomiar_temp = 1 Then 'jeśli teraz następuje konwersja w dallasach to musimy odczekać
Incr Timer0_stan
If Timer0_stan = 24 Then 'jeśli licznik przewinięty 24 razy to
Sekunda = 1 ' minęła sekunda
Timer0_stan = 0 'i zaś trza liczyć od nowa
End If
End If
Incr Timer0_stan3
If Timer0_stan3 = 24 Then
Incr Liczba_sekund
If Liczba_sekund = 60 Then Liczba_sekund = 0
Timer0_stan3 = 0
End If
If Wyslij_sygnal = 1 Then 'jeśli rozpoczęto grzanie
Incr Timer0_stan2 'dodatkowa zmienna liczona cały czas
If Timer0_stan2 = 24 Then
Timer0_stan2 = 0
Incr Opoznienie_zal_wle_nadmuchu
Incr Czas_pracy_webasto
End If
End If
If Sterowanie_pilotem = 0 Then 'jeśli wciśnięty knefel z pilota
Czuwanie_webasto = 1 ': Zalaczenie_z_pilota = 1 'ustaw zmienne żeby webasto mogło się załączyć
If _min = 59 Then 'jeśli jest za minutę któraś godzina
Minuta_webasto = 0
If _hour = 23 Then 'trzeba wziąć pod uwagę, że zmienia się godzina
Godzina_webasto = 0
Else
Godzina_webasto = _hour + 1
End If
Else
Minuta_webasto = _min + 1 : Godzina_webasto = _hour 'najpóźniej za minutę załącz webasto (zależy ile jest sekund)
End If
End If
Load Timer0 , Timer0_counter : Start Timer0
Return
Przerwanie_timer1:
' stop timer1
' Load Timer1 , Timer1_counter 'odmierza czas równy 0,0042s dla Q=6,144MHz i prescale=1024
' Start Timer1
Return
Sub Webasto
If Czuwanie_webasto = 1 Then 'jeśli webasto czuwa nad załączeniem
If Czas_pracy_webasto > 2100 Then 'jeśli czas pracy webasto odliczył już 35 minut (35*60sekund)
Czas_palenia = 1 'tzn że minął czas palenia i trzeba wyłączyć webasto
End If
If Tw < 9 Or Znak_temp_wewn = 1 Then 'jeśli temp. w środku jest < 9 albo ujemna
If Minuta_webasto = _min And Godzina_webasto = _hour Then 'i zgadza się czas startu webasta
If Wyslij_sygnal = 0 Then 'żeby tylko 1 raz wlazło, potem zmienia się na 1 a 0 przyjmie dopiero po zakończeniu grzania lub ręcznym wyłączeniu
Czas_pracy_webasto = 0 'i trzeba zacząć odliczać czas załączenia
Pompa_wody = 0 'załącz też pompę wodną
Print "TU
SYGNAŁ ZAŁĄCZ WEBASTO" 'i
powtarzamy na wszelki wypadek 3 razy
Waitms 200 'po 20ms powtórz jeszcze raz komendę załączenia
Print "TU
SYGNAŁ ZAŁĄCZ WEBASTO" 'i
powtarzamy na wszelki wypadek 3 razy;
Waitms 200 'po 20ms powtórz jeszcze raz komendę załączenia
Print "TU
SYGNAŁ ZAŁĄCZ WEBASTO" 'i
powtarzamy na wszelki wypadek 3 razy
Wait 5 'poczekaj 5 sekund
' load timer1 , timer1_counter : start TIMER1
Wyslij_sygnal = 1 : Timer0_stan2 = 0 : Opoznienie_zal_wle_nadmuchu = 0 'wyzeruj zmienną opóźnienia
End If
End If
End If
If Czas_palenia = 1 Then 'jeśli czas pracy webasto odliczył już 35 minut (35*60sekund) (webasto pracuje do 40 minut zgodnie z ustawieniami fabrycznymi)
Wyslij_sygnal = 0
Print "TU
SYGNAŁ WYŁĄCZ WEBASTO" 'i
powtarzamy na wszelki wypadek 2 razy
Waitms 60 'wyślij sygnał wyłączenia webasta
Print "TU
SYGNAŁ WYŁĄCZ WEBASTO"
Czas_palenia = 0 : Czas_pracy_webasto = 0
Pompa_wody = 1 : Wle_nadmuchu = 1 'wyłącz pompkę i wentylator
Czuwanie_webasto = 0 'czuwanie webasto wyłączone
' stop TIMER1
If Tw < 11 Then 'jeśli tw<11 wtedy załącz webasto za 5 minut ponownie
Czuwanie_webasto = 1 'ustaw zmienne żeby webasto mogło się załączyć
If _min > 54 Then 'jeśli minuta większ od 54 wtedy załączenie w następnej godzinie liczonej od zera
Minuta_webasto = Minuta_webasto + _min 'wyjdzie ponad 60
Minuta_webasto = Minuta_webasto Mod 10 'więc podziel przez 10 i weź co zostaje (np. będzie 64 to minuta_webasto będzie 4)
If _hour = 23 Then 'jeśli jest akurat 23
Godzina_webasto = 0 ' to następna godzina jest 0
Else 'w przeciwnym wypadku
Godzina_webasto = _hour + 1 'następna godzina to _hour+1
End If
Else 'jeśli jest mniejsza od 54
Minuta_webasto = _min + 5 'wtedy normalnie dodaj 5 minut (czas do kolejnego załączenia)
Godzina_webasto = _hour 'no i weź aktualną godzinę
End If
' Else 'jeśli temp. w środku przekroczyła już 11 stopni
' Czas_palenia = 0 'grzej dalej kolejne 35 minut
End If
End If
If Wyslij_sygnal = 1 Then 'jeśli jest załączone webasto
If Zaplon = 0 Then Czas_pracy_webasto = 2105 'jeśli włączony zapłon wtedy wyłącz webasto
If Opoznienie_zal_wle_nadmuchu > 300 Then 'po 5 minutach od uruchomienia pieca
Wle_nadmuchu = 0 'załącz wle nadmuchu
Opoznienie_zal_wle_nadmuchu = 0
End If
Else
Wle_nadmuchu = 1 : Pompa_wody = 1
End If
End If
End Sub
'Sub Komunikacja_z_elm327
'(
Disable Int2
Lcdclear
Do
Print "0104" ; Chr(13) ; 'polecenie odczytu OBLICZONEJ WARTOŚCI OBCIĄŻENIA SILNIKA (A*100/255) w %
Do
If Sw3 = 0 Then
Odebrano_dane = 0 : Buzzer = 0 : Waitms 500 : Buzzer = 1 'awaryjne wyjście
End If
Loop Until Odebrano_dane = 0
Ilosc_znakow_w_buforze_odb_rs232 = Bufspace(1) 'ilość wolnego miejsca w buforze odbiorczym rs232
Ilosc_znakow_w_buforze_odb_rs232 = 44 - Ilosc_znakow_w_buforze_odb_rs232 'ilość znaków w buforze odbiorczym
For Iii = 1 To Ilosc_znakow_w_buforze_odb_rs232
Names = Inkey() ' Bufor = Val(names)
If Iii = 12 Then Pomoc_string = Names 'przepisanie starszej części wartości HEX
If Iii = 13 Then Pomoc_string = Pomoc_string + Names
Next Ilosc_znakow_w_buforze_odb_rs232
T1 = Hexval(pomoc_string) 'przekonwertowanie wartości ze stringa-hex na integer lub byte
T1 = T1 * 100 'przeliczenie zgodnie ze wzorem
T1 = T1 / 255 'dokładność do jedności (inaczej trzebaby użyć zmiennej single)
Pomoc_string = Str(t1) 'przekonwertowanie wyniku na string
Lcdgoxy 1 , 1
Lcdstr "Obc. sil=" , 1 , 0
Lcdstr Pomoc_string , 1 , 0
Lcdstr "% " , 1 , 0
Lcdupdate
Odebrano_dane = 1
Print "010F" ; Chr(13) ; 'polecenie odczytu TEMPERATURY POWIETRZA DOLOTOWEGO (A-40) w st. Celsjusza
Do
If Sw3 = 0 Then
Odebrano_dane = 0 : Buzzer = 0 : Waitms 500 : Buzzer = 1 'awaryjne wyjście
End If
Loop Until Odebrano_dane = 0
Ilosc_znakow_w_buforze_odb_rs232 = Bufspace(1) 'ilość wolnego miejsca w buforze odbiorczym rs232
Ilosc_znakow_w_buforze_odb_rs232 = 44 - Ilosc_znakow_w_buforze_odb_rs232 'ilość znaków w buforze odbiorczym
For Iii = 1 To Ilosc_znakow_w_buforze_odb_rs232
Names = Inkey() ' Bufor = Val(names)
If Iii = 12 Then Pomoc_string = Names 'przepisanie starszej części wartości HEX
If Iii = 13 Then Pomoc_string = Pomoc_string + Names
Next Ilosc_znakow_w_buforze_odb_rs232
T1 = Hexval(pomoc_string) 'przekonwertowanie wartości ze stringa-hex na integer lub byte
T1 = T1 - 40 'przeliczenie zgodnie ze wzorem
Pomoc_string = Str(t1) 'przekonwertowanie wyniku na string
Lcdgoxy 1 , 2
Lcdstr "T. pow.=" , 1 , 0
Lcdstr Pomoc_string , 1 , 0
Lcdstr "^C " , 1 , 0
Lcdupdate
Odebrano_dane = 1
Print "0105" ; Chr(13) ; 'polecenie odczytu TEMPERATURY PŁYNU CHŁODZĄCEGO (A-40) w st. Celsjusza
Do
If Sw3 = 0 Then
Odebrano_dane = 0 : Buzzer = 0 : Waitms 500 : Buzzer = 1 'awaryjne wyjście
End If
Loop Until Odebrano_dane = 0
Ilosc_znakow_w_buforze_odb_rs232 = Bufspace(1) 'ilość wolnego miejsca w buforze odbiorczym rs232
Ilosc_znakow_w_buforze_odb_rs232 = 44 - Ilosc_znakow_w_buforze_odb_rs232 'ilość znaków w buforze odbiorczym
For Iii = 1 To Ilosc_znakow_w_buforze_odb_rs232
Names = Inkey() ' Bufor = Val(names)
If Iii = 12 Then Pomoc_string = Names 'przepisanie starszej części wartości HEX
If Iii = 13 Then Pomoc_string = Pomoc_string + Names
Next Ilosc_znakow_w_buforze_odb_rs232
T1 = Hexval(pomoc_string) 'przekonwertowanie wartości ze stringa-hex na integer lub byte
T1 = T1 - 40 'przeliczenie zgodnie ze wzorem
Pomoc_string = Str(t1) 'przekonwertowanie wyniku na string
Lcdgoxy 1 , 3
Lcdstr "T. plynu=" , 1 , 0
Lcdstr Pomoc_string , 1 , 0
Lcdstr "^C " , 1 , 0
Lcdupdate
Odebrano_dane = 1
Print "0110" ; Chr(13) ; 'polecenie odczytu PRZEPŁYWU POWIETRZA MAF (A*256+B)/100 w gramach/sekundę
Do
If Sw3 = 0 Then
Odebrano_dane = 0 : Buzzer = 0 : Waitms 500 : Buzzer = 1 'awaryjne wyjście
End If
Loop Until Odebrano_dane = 0
Ilosc_znakow_w_buforze_odb_rs232 = Bufspace(1) 'ilość wolnego miejsca w buforze odbiorczym rs232
Ilosc_znakow_w_buforze_odb_rs232 = 44 - Ilosc_znakow_w_buforze_odb_rs232 'ilość znaków w buforze odbiorczym
For Iii = 1 To Ilosc_znakow_w_buforze_odb_rs232
Names = Inkey() ' Bufor = Val(names)
If Iii = 12 Then Pomoc_string = Names 'przepisanie starszej części wartości HEX
If Iii = 13 Then Pomoc_string = Pomoc_string + Names 'wartość 2bajtowa i dlatego tak robimy
If Iii = 15 Then Pomoc_string = Pomoc_string + Names
If Iii = 16 Then Pomoc_string = Pomoc_string + Names
Next Ilosc_znakow_w_buforze_odb_rs232
Napiecie = Hexval(pomoc_string) 'przekonwertowanie wartości ze stringa-hex na word
Napiecie = Napiecie / 100 'przeliczenie zgodnie ze wzorem
Pomoc_string = Str(napiecie) 'przekonwertowanie wyniku na string
Lcdgoxy 1 , 4
Lcdstr "MAF=" , 1 , 0
Lcdstr Pomoc_string , 1 , 0
Lcdstr "g/s " , 1 , 0
Lcdupdate
Odebrano_dane = 1
Print "010D" ; Chr(13) ; 'polecenie odczytu PRĘDKOŚĆ POJAZDU (A) km/h
Do
If Sw3 = 0 Then
Odebrano_dane = 0 : Buzzer = 0 : Waitms 500 : Buzzer = 1 'awaryjne wyjście
End If
Loop Until Odebrano_dane = 0
Ilosc_znakow_w_buforze_odb_rs232 = Bufspace(1) 'ilość wolnego miejsca w buforze odbiorczym rs232
Ilosc_znakow_w_buforze_odb_rs232 = 44 - Ilosc_znakow_w_buforze_odb_rs232 'ilość znaków w buforze odbiorczym
For Iii = 1 To Ilosc_znakow_w_buforze_odb_rs232
Names = Inkey() ' Bufor = Val(names)
If Iii = 12 Then Pomoc_string = Names 'przepisanie starszej części wartości HEX
If Iii = 13 Then Pomoc_string = Pomoc_string + Names
Next Ilosc_znakow_w_buforze_odb_rs232
T1 = Hexval(pomoc_string) 'przekonwertowanie wartości ze stringa-hex na integer lub byte
Pomoc_string = Str(t1) 'przekonwertowanie wyniku na string
Lcdgoxy 1 , 5
Lcdstr "V= " , 1 , 0
Lcdstr Pomoc_string , 1 , 0
Lcdstr "km/h " , 1 , 0
Lcdupdate
Odebrano_dane = 1
Print "010C" ; Chr(13) ; 'polecenie odczytu OBROTY (A*256+B)/4 w rpm
Do
If Sw3 = 0 Then
Odebrano_dane = 0 : Buzzer = 0 : Waitms 500 : Buzzer = 1 'awaryjne wyjście
End If
Loop Until Odebrano_dane = 0
Ilosc_znakow_w_buforze_odb_rs232 = Bufspace(1) 'ilość wolnego miejsca w buforze odbiorczym rs232
Ilosc_znakow_w_buforze_odb_rs232 = 44 - Ilosc_znakow_w_buforze_odb_rs232 'ilość znaków w buforze odbiorczym
For Iii = 1 To Ilosc_znakow_w_buforze_odb_rs232
Names = Inkey() ' Bufor = Val(names)
If Iii = 12 Then Pomoc_string = Names 'przepisanie starszej części wartości HEX
If Iii = 13 Then Pomoc_string = Pomoc_string + Names 'wartość 2bajtowa i dlatego tak robimy
If Iii = 15 Then Pomoc_string = Pomoc_string + Names
If Iii = 16 Then Pomoc_string = Pomoc_string + Names
Next Ilosc_znakow_w_buforze_odb_rs232
Napiecie = Hexval(pomoc_string) 'przekonwertowanie wartości ze stringa-hex na word
Napiecie = Napiecie / 4 'przeliczenie zgodnie ze wzorem
Pomoc_string = Str(napiecie) 'przekonwertowanie wyniku na string
Lcdgoxy 1 , 6
Lcdstr "Obroty=" , 1 , 0
Lcdstr Pomoc_string , 1 , 0
Lcdstr " " , 1 , 0
Lcdupdate
Odebrano_dane = 1
If Sw3 = 0 Then
Odebrano_dane = 1 : Buzzer = 0 : Wait 1 : Buzzer = 1 : Ekran = 3
End If
Loop Until Ekran = 3
Lcdclear
Enable Int2
')
'End Sub
'Sub Komunikacja_z_elm327_2
'(
Disable Int2
Lcdclear
Do
Print "010B" ; Chr(13) ; 'polecenie odczytu CIŚNIENIE ABSOLUTNE W KOLEKTORZE DOLOTOWYM (A) w kPa
Do
If Sw3 = 0 Then
Odebrano_dane = 0 : Buzzer = 0 : Waitms 500 : Buzzer = 1 'awaryjne wyjście
End If
Loop Until Odebrano_dane = 0
Ilosc_znakow_w_buforze_odb_rs232 = Bufspace(1) 'ilość wolnego miejsca w buforze odbiorczym rs232
Ilosc_znakow_w_buforze_odb_rs232 = 44 - Ilosc_znakow_w_buforze_odb_rs232 'ilość znaków w buforze odbiorczym
For Iii = 1 To Ilosc_znakow_w_buforze_odb_rs232
Names = Inkey() ' Bufor = Val(names)
If Iii = 12 Then Pomoc_string = Names 'przepisanie starszej części wartości HEX
If Iii = 13 Then Pomoc_string = Pomoc_string + Names
Next Ilosc_znakow_w_buforze_odb_rs232
T1 = Hexval(pomoc_string) 'przekonwertowanie wartości ze stringa-hex na integer lub byte
Pomoc_string = Str(t1) 'przekonwertowanie wyniku na string
Lcdgoxy 1 , 1
Lcdstr "Cisn. d=" , 1 , 0
Lcdstr Pomoc_string , 1 , 0
Lcdstr "kPa" , 1 , 0
Lcdupdate
Odebrano_dane = 1
Print "010A" ; Chr(13) ; 'polecenie odczytu CIŚNIENIE PALIWA (A*3) w kPa
Do
If Sw3 = 0 Then
Odebrano_dane = 0 : Buzzer = 0 : Waitms 500 : Buzzer = 1 'awaryjne wyjście
End If
Loop Until Odebrano_dane = 0
Ilosc_znakow_w_buforze_odb_rs232 = Bufspace(1) 'ilość wolnego miejsca w buforze odbiorczym rs232
Ilosc_znakow_w_buforze_odb_rs232 = 44 - Ilosc_znakow_w_buforze_odb_rs232 'ilość znaków w buforze odbiorczym
For Iii = 1 To Ilosc_znakow_w_buforze_odb_rs232
Names = Inkey() ' Bufor = Val(names)
If Iii = 12 Then Pomoc_string = Names 'przepisanie starszej części wartości HEX
If Iii = 13 Then Pomoc_string = Pomoc_string + Names
Next Ilosc_znakow_w_buforze_odb_rs232
T1 = T1 * 3
T1 = Hexval(pomoc_string) 'przekonwertowanie wartości ze stringa-hex na integer lub byte
Pomoc_string = Str(t1) 'przekonwertowanie wyniku na string
Lcdgoxy 1 , 2
Lcdstr "C. paliwa=" , 1 , 0
Lcdstr Pomoc_string , 1 , 0
Lcdstr "kPa" , 1 , 0
Lcdupdate
Odebrano_dane = 1
' Print "0121" ; chr(13) ; 'polecenie odczytu DYSTANS OD ZAŚWIECENIA MIL (A*256+B) w km
If Sw3 = 0 Then
Odebrano_dane = 1 : Buzzer = 0 : Wait 1 : Buzzer = 1 : Ekran = 1
End If
Loop Until Ekran = 1
Lcdclear
Enable Int2
')
'End Sub
'Serial0charmatch:
' Odebrano_dane = 0
'Return
$include "3310ab.bas"
End 'end program 'end program
' Character generator
' This table defines the standard ASCII characters in a 5x7 dot format.
'------------------------------------------------------------------------------/
$data
Fontlookup:
Data &H00 , &H00 , &H00 , &H00 , &H00 , ' sp
Data &H00 , &H00 , &H2F , &H00 , &H00 , ' !
Data &H00 , &H07 , &H00 , &H07 , &H00 , ' "
Data &H14 , &H7F , &H14 , &H7F , &H14 , ' #
Data &H24 , &H2A , &H7F , &H2A , &H12 , ' $
Data &HC4 , &HC8 , &H10 , &H26 , &H46 , ' %
Data &H36 , &H49 , &H55 , &H22 , &H50 , ' &
Data &H00 , &H05 , &H03 , &H00 , &H00 , ' '
Data &H00 , &H1C , &H22 , &H41 , &H00 , ' (
Data &H00 , &H41 , &H22 , &H1C , &H00 , ' )
Data &H14 , &H08 , &H3E , &H08 , &H14 , ' -
Data &H08 , &H08 , &H3E , &H08 , &H08 , ' +
Data &H00 , &H00 , &H50 , &H30 , &H00 , ' ,
Data &H10 , &H10 , &H10 , &H10 , &H10 , ' -
Data &H00 , &H60 , &H60 , &H00 , &H00 , ' .
Data &H20 , &H10 , &H08 , &H04 , &H02 , ' /
Data &H3E , &H51 , &H49 , &H45 , &H3E , ' 0
Data &H00 , &H42 , &H7F , &H40 , &H00 , ' 1
Data &H42 , &H61 , &H51 , &H49 , &H46 , ' 2
Data &H21 , &H41 , &H45 , &H4B , &H31 , ' 3
Data &H18 , &H14 , &H12 , &H7F , &H10 , ' 4
Data &H27 , &H45 , &H45 , &H45 , &H39 , ' 5
Data &H3C , &H4A , &H49 , &H49 , &H30 , ' 6
Data &H01 , &H71 , &H09 , &H05 , &H03 , ' 7
Data &H36 , &H49 , &H49 , &H49 , &H36 , ' 8
Data &H06 , &H49 , &H49 , &H29 , &H1E , ' 9
Data &H00 , &H36 , &H36 , &H00 , &H00 , ' :
Data &H00 , &H56 , &H36 , &H00 , &H00 , ' ;
Data &H08 , &H14 , &H22 , &H41 , &H00 , ' <
Data &H14 , &H14 , &H14 , &H14 , &H14 , ' =
Data &H00 , &H41 , &H22 , &H14 , &H08 , ' >
Data &H02 , &H01 , &H51 , &H09 , &H06 , ' ?
Data &H32 , &H49 , &H59 , &H51 , &H3E , ' @
Data &H7E , &H11 , &H11 , &H11 , &H7E , ' A
Data &H7F , &H49 , &H49 , &H49 , &H36 , ' B
Data &H3E , &H41 , &H41 , &H41 , &H22 , ' C
Data &H7F , &H41 , &H41 , &H22 , &H1C , ' D
Data &H7F , &H49 , &H49 , &H49 , &H41 , ' E
Data &H7F , &H09 , &H09 , &H09 , &H01 , ' F
Data &H3E , &H41 , &H49 , &H49 , &H7A , ' G
Data &H7F , &H08 , &H08 , &H08 , &H7F , ' H
Data &H00 , &H41 , &H7F , &H41 , &H00 , ' I
Data &H20 , &H40 , &H41 , &H3F , &H01 , ' J
Data &H7F , &H08 , &H14 , &H22 , &H41 , ' K
Data &H7F , &H40 , &H40 , &H40 , &H40 , ' L
Data &H7F , &H02 , &H0C , &H02 , &H7F , ' M
Data &H7F , &H04 , &H08 , &H10 , &H7F , ' N
Data &H3E , &H41 , &H41 , &H41 , &H3E , ' O
Data &H7F , &H09 , &H09 , &H09 , &H06 , ' P
Data &H3E , &H41 , &H51 , &H21 , &H5E , ' Q
Data &H7F , &H09 , &H19 , &H29 , &H46 , ' R
Data &H46 , &H49 , &H49 , &H49 , &H31 , ' S
Data &H01 , &H01 , &H7F , &H01 , &H01 , ' T
Data &H3F , &H40 , &H40 , &H40 , &H3F , ' U
Data &H1F , &H20 , &H40 , &H20 , &H1F , ' V
Data &H3F , &H40 , &H38 , &H40 , &H3F , ' W
Data &H63 , &H14 , &H08 , &H14 , &H63 , ' X
Data &H07 , &H08 , &H70 , &H08 , &H07 , ' Y
Data &H61 , &H51 , &H49 , &H45 , &H43 , ' Z
Data &H00 , &H7F , &H41 , &H41 , &H00 , ' [
Data &H55 , &H2A , &H55 , &H2A , &H55 , ' 55
Data &H00 , &H41 , &H41 , &H7F , &H00 , ' ]
'Data &H04 , &H02 , &H01 , &H02 , &H04 , ' ^
Data &H06 , &H09 , &H09 , &H06 , &H00 , ' stopień wywołuje się go: ^
Data &H40 , &H40 , &H40 , &H40 , &H40 , ' _
Data &H00 , &H01 , &H02 , &H04 , &H00 , ' '
Data &H20 , &H54 , &H54 , &H54 , &H78 , ' a
Data &H7F , &H48 , &H44 , &H44 , &H38 , ' b
Data &H38 , &H44 , &H44 , &H44 , &H20 , ' c
Data &H38 , &H44 , &H44 , &H48 , &H7F , ' d
Data &H38 , &H54 , &H54 , &H54 , &H18 , ' e
Data &H08 , &H7E , &H09 , &H01 , &H02 , ' f
Data &H0C , &H52 , &H52 , &H52 , &H3E , ' g
Data &H7F , &H08 , &H04 , &H04 , &H78 , ' h
Data &H00 , &H44 , &H7D , &H40 , &H00 , ' i
Data &H20 , &H40 , &H44 , &H3D , &H00 , ' j
Data &H7F , &H10 , &H28 , &H44 , &H00 , ' k
Data &H00 , &H41 , &H7F , &H40 , &H00 , ' l
Data &H7C , &H04 , &H18 , &H04 , &H78 , ' m
Data &H7C , &H08 , &H04 , &H04 , &H78 , ' n
Data &H38 , &H44 , &H44 , &H44 , &H38 , ' o
Data &H7C , &H14 , &H14 , &H14 , &H08 , ' p
Data &H08 , &H14 , &H14 , &H18 , &H7C , ' q
Data &H7C , &H08 , &H04 , &H04 , &H08 , ' r
Data &H48 , &H54 , &H54 , &H54 , &H20 , ' s
Data &H04 , &H3F , &H44 , &H40 , &H20 , ' t
Data &H3C , &H40 , &H40 , &H20 , &H7C , ' u
Data &H1C , &H20 , &H40 , &H20 , &H1C , ' v
Data &H3C , &H40 , &H30 , &H40 , &H3C , ' w
Data &H44 , &H28 , &H10 , &H28 , &H44 , ' x
Data &H0C , &H50 , &H50 , &H50 , &H3C , ' y
Data &H44 , &H64 , &H54 , &H4C , &H44
Mazda:
Data 48 , 6, '84 , 3, ' Image Table Name, Xbytes, N of Lines, 254 bytes
Data &H00 , &H00 , &H00 , &H00 , &H80 , &H00 , &H80 , &HC0 , &HE0 , &HE0 , &HE0 , &H70 , &H70 , &H30 , &H30 , &H38,
Data &H18 , &H18 , &H18 , &H18 , &H18 , &H08 , &H18 , &H18 , &H18 , &H18 , &H18 , &H18 , &H18 , &H18 , &H30 , &H30,
Data &H70 , &H60 , &HE0 , &HE0 , &HC0 , &HC0 , &H00 , &H80 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H98 , &HF0 , &HE0 , &HE3 , &HC7 , &HC7 , &HC3 , &H81 , &HA0 , &H60 , &H40 , &HC0 , &H80 , &H80,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H80 , &H80 , &HC0 , &HC0,
Data &H40 , &H80 , &HA0 , &H81 , &HD3 , &HC7 , &HC7 , &HE3 , &HE1 , &HFE , &HFE , &HF0 , &HC0 , &H00 , &H00 , &H00,
Data &HA0 , &H80 , &HFF , &HFF , &HFF , &HDB , &H01 , &H03 , &H03 , &H03 , &H07 , &H07 , &H07 , &H0F , &H0E , &H0E,
Data &H1D , &H1E , &H3C , &H70 , &HE0 , &HC0 , &H80 , &HF0 , &HF8 , &H78 , &H3E , &H1E , &H1F , &H0F , &H0E , &H0E,
Data &H07 , &H07 , &H03 , &H03 , &H03 , &H01 , &H01 , &H01 , &HAF , &H03 , &HFF , &HFF , &HFF , &H18 , &H00 , &H00,
Data &H00 , &H0F , &H3F , &H7F , &HFF , &HDF , &H9E , &H70 , &H80 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H07 , &H07 , &H01 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H80 , &HC0 , &HF0 , &HF8 , &HFF , &HF8 , &HFF , &H3F , &H0F , &H03 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H01 , &H03 , &H03 , &H07 , &H06 , &H0D , &H0D , &H18 , &H18 , &H30 , &H30 , &H30,
Data &H30 , &H30 , &H30 , &H30 , &H30 , &H30 , &H30 , &H30 , &H30 , &H30 , &H30 , &H30 , &H30 , &H30 , &H38 , &H18,
Data &H18 , &H1C , &HCC , &H0F , &H07 , &H07 , &H03 , &H03 , &H01 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &HFE , &H04 , &H02 , &H02 , &H06 , &H04 , &H02 , &H02 , &H02 , &HFC , &H00 , &H00,
Data &HE4 , &H92 , &H92 , &H92 , &HFC , &H00 , &H00 , &HC2 , &HA2 , &H8A , &H86 , &H00 , &H00 , &H7C , &H82 , &H82,
Data &H82 , &H44 , &HFF , &H00 , &H00 , &HE4 , &H92 , &H92 , &H92 , &HFC , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Swiatla_on:
Data 26 , 2,
Data &H00 , &H80 , &HF0 , &H18 , &H0C , &H06 , &H02 , &H02 , &H02 , &HFE , &H00 , &H62 , &H46 , &H46 , &H44 , &HC4,
Data &HCC , &H8C , &H8C , &H88 , &H98 , &H98 , &H18 , &H10 , &H10 , &H00 , &H00 , &H03 , &H0E , &H18 , &H30 , &H60,
Data &HC0 , &H80 , &HC0 , &HFF , &H00 , &H44 , &HC4 , &HCC , &H88 , &H88 , &H88 , &H98 , &H18 , &H11 , &H11 , &H31,
Data &H31 , &H31 , &H00 , &H00,
'(
Swiatla_off:
Data 26 , 2,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
Data &H00 , &H00 , &H00 , &H00,
')
Czujnik_zewnetrzny:
'Data &H00 , &H28 , &H7E , &H00 , &H00 , &H01 , &H00 , &H00 , &H3E
Data 0 , 40 , 146 , 223 , 177 , 4 , 0 , 0 , 112
Czujnik_wewnetrzny:
'Data 0 , 40 , 145 , 0 , 0 , 16 , 0 , 0 , 210
Data 0 , 40 , 4 , 250 , 177 , 4 , 0 , 0 , 89 '