Kod: Zaznacz cały
$regfile = "m8def.dat"
$crystal = 8000000
Dim Nr_menu As Byte
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Config 1wire = Portb.0
'definicje kontrolek
Config Portd.6 = Output
Config Portd.5 = Output
Led_cz Alias Portd.6
Led_p Alias Portd.5
'definicje termometru
Deflcdchar 0 , 2 , 5 , 2 , 32 , 32 , 32 , 32 , 32 'definicja znaku "stopni"
Dim Tw As Integer
Dim Ulamekw As Integer
Dim Bw(2) As Byte
Dim Tz As Integer
Dim Ulamekz As Integer
Dim Bz(2) As Byte
Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte
'koniec
'przycisk menu
Config Int0 = Low Level
Config Portd.2 = Input
Set Portd.2
'S1 Alias Pind.7
On Int0 Zmiana
Enable Interrupts
Enable Int0
Dim Zm_menu As Bit
Cursor Off
Cursor Noblink
Cls
Dsid1(1) = 1wsearchfirst()
Dsid2(1) = 1wsearchnext()
Set Led_cz
Lcd " Golf V 1.9 TDI "
Wait 2
Dim I As Byte
For I = 1 To 15
Shiftlcd Right
Waitms 130
Next I
Reset Led_cz
Gosub Pomiar_temp
Readeeprom Nr_menu , 1
Set Zm_menu
'główna pętla
Do
'Debounce S1 , 0 , Zmiana , Sub
If Zm_menu = 1 Then
Select Case Nr_menu
Case 0
Gosub Menu_0
Case 1
Gosub Menu_1
Case 2
Gosub Menu_2
Case 3
Gosub Menu_3
Case 4
Gosub Menu_4
Case 5
Gosub Menu_5
Case Else
Gosub Menu_0
End Select
Reset Zm_menu
Enable Int0
End If
Gosub Pomiar_temp
If Tz >= 29 And Tz < 30 Then
Reset Led_cz
Set Led_p
Elseif Tz >= 30 Then
Reset Led_p
Set Led_cz
Else
Reset Led_p
Reset Led_cz
End If
Loop
End
'podprogramy
Zmiana:
Disable Int0
Enable Interrupts
Incr Nr_menu
If Nr_menu = 6 Then Nr_menu = 0
Writeeeprom Nr_menu , 1
Set Zm_menu
Return
Menu_0:
Cls
Lcd "Zew: " ; Tz ; "," ; Ulamekz ; Chr(0) ; "C"
Return
Menu_1:
Cls
Lcd "Wew: " ; Tw ; "," ; Ulamekw ; Chr(0) ; "C"
Return
Menu_2:
Cls
Lcd "menu 2"
Waitms 200
Return
Menu_3:
Cls
Lcd "menu 3"
Waitms 200
Return
Menu_4:
Cls
Lcd "menu 4"
Waitms 200
Return
Menu_5:
Cls
Lcd "menu 5"
Waitms 200
Return
Pomiar_temp:
Disable Interrupts
1wreset
1wwrite &H55
1wverify Dsid1(1)
1wwrite &HBE
Enable Interrupts
Waitms 750
Disable Interrupts
Bz(1) = 1wread(2)
'---------------------------------
1wreset
1wwrite &H55
1wverify Dsid2(1)
1wwrite &HBE
Enable Interrupts
Waitms 750
Disable Interrupts
Bw(1) = 1wread(2)
'---------------------------------
1wreset
1wwrite &HCC
1wwrite &H44
Enable Interrupts
'wyliczenie zewnętrznej temp
Tz = Makeint(bz(1) , Bz(2))
Tz = Tz * 10
Tz = Tz / 16
Ulamekz = Tz Mod 10
Tz = Tz / 10
'wyliczenie wewnętrznej temp
Tw = Makeint(bw(1) , Bw(2))
Tw = Tw * 10
Tw = Tw / 16
Ulamekw = Tw Mod 10
Tw = Tw / 10
Disable Interrupts
1wreset
If Err = 1 Then
Cls
Lcd "brak odczytu temp"
Wait 2
End If
Enable Interrupts
Return
Pozdrawiam
Pozdrawiam