Zmienna err jest wyprowadzona na diode
Kod: Zaznacz cały
-----------------------------------------------------------------------------------------------------
'Program obs³ugi jednego uk³adu DS1820 do³¹czonego
'do magistrali 1-Wire
$regfile = "m8def.dat" 'informuje kompilator o pliku
'dyrektyw mikrokontrolera
$crystal = 8000000 'informuje kompilator
'o czêstotliwoœci oscylatora
'taktuj¹cego mikrokontroler
Config Lcd = 16 * 2 'konfiguracja typu wyœwietlacza
'LCD
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 'konfiguracja linii
'mikrokontrolera‚ do których
'do³¹czono wyœwietlacz
'LCD
Config Portd = Output
Config 1wire = Portb.0 'konfiguracja linii magistrali
'1-Wire
Declare Sub Odcz_temp 'procedura odczytu temperatury
'z uk³adu DS1820
Dim Temperatura(2) As Byte 'tablica dwóch zmiennych typu
'Byte do pamiêtania wartoœci
'temperatury
'definicja znaku stopnia
Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32
Do 'pocz¹tek pêtli programu
Call Odcz_temp 'wywo³anie procedury pomiaru
'temperatury
Cls 'czyszczenie ekranu LCD
If Temperatura(2) = 0 Then 'jeœli wartoœæ Temperatura(2)=
'=0, to temperatura dodatnia
'wyœwietla temperatury dodatnie
Lcd "Temp: " ; Temperatura(1) ; Chr(0) ; "C"
Else 'w przeciwnym razie
'wyœwietla temperatury ujemne
Lcd "Temp: -" ; Temperatura(1) ; Chr(0) ; "C"
End If
Loop 'koniec pêtli Do...Loop
End 'koniec programu
Sub Odcz_temp 'definicja procedury pomiaru
'temperatury
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
'temperatury
Temperatura(1) = 1wread(2) 'odczyt zmierzonej temperatury
'do tablicy Temperatura
1wreset 'reset magistrali 1-Wire
If Err = 1 Then 'jeœli uk³ad do³¹czony do
'magistrali nie odpowiada, to
Portd = &B00000000
Waitms 500
Portd = &B11111111
Waitms 500
Portd = &B00000000
Do 'nieskoñczona pêtla w celu
'wstrzymania dzia³ania programu
Loop
End If
If Temperatura(2) > 0 Then 'jeœli zmienna Temperatura(2)
'> 0, to temperatura ujemna
'przeliczenie temperatury
'ujemnej
Temperatura(1) = 256 - Temperatura(1)
End If 'koniec warunku
Temperatura(1) = Temperatura(1) / 2
'dalsze przeliczenie odczytanej
'temperatury dodatniej jak
'i ujemnej
End Sub
----------------------------------------------------------------------------------
Panowie i Panie serdedcznie proszę o pomoc bo mnie termin magisterki goni
za odpowiedz z gory dziekuje :
Paweł Jucha