Witam buduje taką mini stacje pogodową i zatrzymałem się z obsługą ds-a co w tym może być nie tak ? W książce którą posiadam jest tylko obsluga 1820. Docelowo mają być 2 czujniki na 2 liniach. Zrobie to dublując kod . Jednak przy jednym nic nie działa wyświetlacz zostaje cały czarny bez czujnika , i z nim też . Oto kod:
Z góry dziekuje z pomoc.
Aha kwarc zewnetrzny 8mhz.
'###STACJA POGODOWA BY GEGE97########################################
'#############PROCEK MEGA 16####TEMP. DS18B20#########DESZCZ LAMINAT
'#############
$regfile = "m16def.dat" 'procek mega 16
$crystal = 8000000 ' narazie 8mhz
'##### WEJSCIA WYJSCIA ALIASY#####################
Config Pinb.0 = Input 'przycisk godzin
Config Pinb.1 = Input 'przycisk minut
Config Pinb.2 = Input 'zmiana stanu ^
Config 1wire = Pinc.1
Set Pinb.0
Set Pinb.1
Set Pinb.2
'################################ Zmienne
Dim Miesiac As Byte
Dim Dzien As Byte
Dim Godziny As Byte
Dim Minuty As Byte
Dim Sekundy As Byte
Dim Il_odc_tim As Byte
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
'############################ TIMERY
Config Timer1 = Timer , Prescale = 256
On Timer1 Odmierzono
Enable Interrupts
Enable Timer1
Load Timer1 , 3125
'####LCD
Cursor Off
Cls
'################### PETELKA
Do
Gosub Ds
Gosub Zamiana_czasu
Gosub Wysw_lcd
Waitms 25
Gosub Zmiana_1
Loop
'############################# PIDPROGRAMY
'TIMER
Odmierzono:
Load Timer1 , 3125
Incr Il_odc_tim
If Il_odc_tim = 10 Then
Il_odc_tim = 0
Incr Sekundy
End If
Return
'LCD
Wysw_lcd:
Cls
Lcd Tempstr ; "C"
Lowerline
Lcd Godziny ; ":" ; Minuty ; ":" ; Sekundy
Return
Zamiana_czasu:
If Sekundy = 60 Then
Sekundy = 0
Incr Minuty
End If
If Minuty = 60 Then
Minuty = 0
Incr Godziny
End If
If Godziny = 24 Then
Godziny = 0
Incr Dzien
End If
Return
Zmiana_1:
If Pinb.0 = 0 And Pinb.2 = 1 Then
Waitms 100
If Pinb.0 = 0 Then
Minuty = Minuty + 1
End If
End If ' ZMIANA MINUT
If Pinb.1 = 0 And Pinb.2 = 1 Then
Waitms 100
If Pinb.1 = 0 Then
Godziny = Godziny + 1
End If
End If
Return
Ds:
1wreset 'reset magistrali 1-Wire
1wwrite &HCC 'opuszczenie zapisu numeru ID
1wwrite &H44 'start pomiaru temperatury
Waitms 750 'opóźnienie na czas pomiaru
1wreset 'reset magistrali 1-Wire
1wwrite &HCC 'opuszczenie zapisu numeru ID
1wwrite &HBE 'komenda odczytu zmierzonej
Lsb = 1wread():
Msb = 1wread():
1wreset
Reset Bukl
Reset Minus
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
Tempstr = Fusing(temp , "###.##") 'formatowanie do postaci 000.00
Else
Set Bukl
End If
Return
Z góry dziekuje z pomoc.
Aha kwarc zewnetrzny 8mhz.
