$regfile = "m8def.dat"
$crystal = 8000000
Config Pinb.1 = Input
Config Pinb.2 = Input
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.2 ,
Config Lcdpin = Pin , Db5 = Portc.1 , Db6 = Portc.0 ,
Config Lcdpin = Pin , Db7 = Portc.5 , E = Portc.3 ,
Config Lcdpin = Pin , Rs = Portc.4
Config 1wire = Portb.0
Declare Sub Odcz_temp
Dim Lsb As Byte
Dim Msb As Byte
Dim Tempstr As String * 5
Dim Temp As Single
Dim Tempa As Integer
Dim Minus As Bit
Dim Bukl As Bit
Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32
Declare Sub Wysw_czas
Config Timer1 = Timer , Prescale = 256
Locate 1 , 0
On Timer1 Odmierz_1s
Dim Sekundy As Byte
Dim Minuty As Byte
Dim Godziny As Byte
Dim Nowa_w As Byte
Dim Wart_bcd As Byte
S1 Alias Pinb.2
S2 Alias Pinb.1
Enable Interrupts
Enable Timer1
Counter1 = 34286
Set Nowa_w
Set Portb.1
Set Portb.2
Do
Call Wysw_czas
If S1 = 0 Then
Waitms 25
If S1 = 0 Then
Incr Minuty
Sekundy = 0
If Minuty = 60 Then
Minuty = 0
End If
Set Nowa_w
Call Wysw_czas
Waitms 200
End If
End If
If S2 = 0 Then
Waitms 25
If S2 = 0 Then
Incr Godziny
If Godziny = 24 Then
Godziny = 0
End If
Set Nowa_w
Call Wysw_czas
Waitms 200
End If
End If
Loop
End
Sub Wysw_czas
If Nowa_w = 1 Then
Cls
Locate 1 , 0
Wart_bcd = Makebcd(godziny)
Lcd Bcd(wart_bcd) ; ":"
Wart_bcd = Makebcd(minuty)
Lcd Bcd(wart_bcd) ; ":"
Wart_bcd = Makebcd(sekundy)
Lcd Bcd(wart_bcd) ;
Reset Nowa_w
End If
End Sub
Odmierz_1s:
Counter1 = Counter1 + 34286
Incr Sekundy
Set Nowa_w
If Sekundy = 60 Then
Sekundy = 0
Incr Minuty
If Minuty = 60 Then
Minuty = 0
Incr Godziny
If Godziny = 24 Then
Godziny = 0
End If
End If
End If
Return
Locate 2 , 0
Do
Call Odcz_temp
Cls
If Bukl = 0 Then
If Minus = 0 Then
'wyświetla temperatury dodatnie
Lcd "Temp: " ; Tempstr ; Chr(0) ; "C"
Else
'wyświetla temperatury ujemne
Lcd "Temp: -" ; Tempstr ; Chr(0) ; "C"
End If
Locate 2 , 0
Else
Lcd "Brak ukladu"
End If
Loop
End
Locate 2 , 0
Sub Odcz_temp
1wreset
1wwrite &HCC
1wwrite &H44 '
Waitms 750
1wreset
1wwrite &HCC 'opuszczenie zapisu numeru ID
1wwrite &HBE 'komenda odczytu zmierzonej
Locate 2 , 0
Lsb = 1wread():
Msb = 1wread():
1wreset
Reset Bukl
Reset Minus
Locate 2 , 0
If Err = 0 Then
Tempa = Msb * 256
Tempa = Tempa + Lsb
If Msb.7 = 0 Then
Temp = Tempa / 16
Else
Set Minus
Tempa = Not Tempa
Tempa = Tempa + 1
Temp = Tempa / 16
End If
Locate 2 , 0
Tempstr = Fusing(temp , "###.##")
Else
Set Bukl
End If
End Sub