۰۳-تير-۱۳۹۲, ۱۲:۱۴:۰۳
سلام
یه برنامه برای سنسور رطوبت سنج دارم که وقتی سنسور رو قطع میکنم کل برنامه متوقف میشه که در نهایت منجر به از کار افتادی کل مدار میشه دلیلش هم بخاطر استفاده از دستور (BIT WAIT) هست .برنامه از این قرار هست که ؛؛ پینی که سنسور بهش متصل هست توسط دستور BIT WAIT چک میشه .حالا اگر سنسور رو قطع کنم دستور BIT پالسی دریافت نمیکنه بنابراین برنامه متوقف میشه .
حالا من نیاز به یه دستور دارم که اگر سنسور رو قطع کردم برنامه روال عادی رو طی کنه و متوقف نشه که بخاد کل مدار از کار بیافته .ممنون میشم دوستان در این زمینه راهنمایی بفرمایند.
اینم برنامه
یه برنامه برای سنسور رطوبت سنج دارم که وقتی سنسور رو قطع میکنم کل برنامه متوقف میشه که در نهایت منجر به از کار افتادی کل مدار میشه دلیلش هم بخاطر استفاده از دستور (BIT WAIT) هست .برنامه از این قرار هست که ؛؛ پینی که سنسور بهش متصل هست توسط دستور BIT WAIT چک میشه .حالا اگر سنسور رو قطع کنم دستور BIT پالسی دریافت نمیکنه بنابراین برنامه متوقف میشه .
حالا من نیاز به یه دستور دارم که اگر سنسور رو قطع کردم برنامه روال عادی رو طی کنه و متوقف نشه که بخاد کل مدار از کار بیافته .ممنون میشم دوستان در این زمینه راهنمایی بفرمایند.
اینم برنامه
کد:
Declare Sub Read_timings
Declare Sub Humtemp_values
Declare Function Compare_chksum(byval Hsens_humidity As Word , Byval Hsens_temperature As Word , Byval Hsens_chksum As Byte) As Byte
Do
Led = 1
Call Humtemp_values
If Compare_chksum(humidityw , Temperaturew , Humsens_chksum) = 1 Then
Humiditys = Str(humidityw)
Temperatures = Str(temperaturew)
Strstring = "H:" + Format(humiditys , "0.0" )
'Strstring = Humiditys
Locate 1 , 9
Lcd Strstring
Strstring = "T:" + Format(temperatures , "0.0")
'Strstring = Temperatures
Locate 2 , 9
Lcd Strstring
Else
Strstring = "***ERROR***"
Cls
Locate 1 , 7
Lcd Strstring
End If
Waitms 100
Led = 0
Wait 1
Loop
End
Sub Read_timings
Count = 1
Config Pind.4 = Output : Portd.4 = 0
Waitms 20
Config Pind.4 = Input
While Count < 43
Bitwait Pind.4 , Set
Start Timer0
Bitwait Pind.4 , Reset
Stop Timer0
Signaltime(count) = Tcnt0
Tcnt0 = 0
Incr Count
Wend
End Sub
Sub Humtemp_values
Local X As Byte
Humidityw = 0
Temperaturew = 0
Humsens_chksum = 0
Call Read_timings
For Count = 3 To 42
Select Case Count
Case 3 To 18
X = 18 - Count
If Signaltime(count) > Min_time Then Toggle Humidityw.x
Case 19 To 34
X = 34 - Count
If Signaltime(count) > Min_time Then Toggle Temperaturew.x
Case 34 To 42
X = 42 - Count
If Signaltime(count) > Min_time Then Toggle Humsens_chksum.x
End Select
Next
End Sub
Function Compare_chksum(byval Hsens_humidity As Word , Byval Hsens_temperature As Word , Byval Hsens_chksum As Byte) As Byte
Local Chksum As Byte
Chksum = Low(hsens_humidity ) + High(hsens_humidity )
Chksum = Chksum + Low(hsens_temperature)
Chksum = Chksum + High(hsens_temperature)
If Chksum = Hsens_chksum Then
Compare_chksum = 1
Else
Compare_chksum = 0
End If
End Function