NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3960 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 8 از 8

موضوع: نیازمند به یک دستور در بسکام

  1. #1
    کاربر فعال
    تاریخ عضویت
    Jul 2011
    نوشته ها
    198
    تشکر
    234
    تشکر شده 70 بار در 45 پست

    پیش فرض نیازمند به یک دستور در بسکام

    سلام
    یه برنامه برای سنسور رطوبت سنج دارم که وقتی سنسور رو قطع میکنم کل برنامه متوقف میشه که در نهایت منجر به از کار افتادی کل مدار میشه دلیلش هم بخاطر استفاده از دستور (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

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    ورودی رو pullup یا pulldown کردید؟
    *** اللّهم عجّل لولیک الفرج ***

  4. #3
    کاربر دائمی wantedboy آواتار ها
    تاریخ عضویت
    May 2011
    نام
    علی‏ ‏محمد‏ ‏شکرالهی
    نوشته ها
    492
    تشکر
    201
    تشکر شده 629 بار در 204 پست

    پیش فرض

    سلام دوست عزیز
    یک دستور نیست شمابه جای bitwait .یک do loop تعریف کن و داخلش شرط را بزار و اگه بر قرار نبود از دستور exit استفاده کن بپر بیرون از حلقه.

  5. #4
    کاربر فعال
    تاریخ عضویت
    Jul 2011
    نوشته ها
    198
    تشکر
    234
    تشکر شده 70 بار در 45 پست

    پیش فرض

    نقل قول نوشته اصلی توسط Doloop نمایش پست ها
    ورودی رو pullup یا pulldown کردید؟
    سلام
    پایه دیتا هر سنسور pullup شده

  6. #5
    کاربر فعال
    تاریخ عضویت
    Jul 2011
    نوشته ها
    198
    تشکر
    234
    تشکر شده 70 بار در 45 پست

    پیش فرض

    نقل قول نوشته اصلی توسط wantedboy نمایش پست ها
    سلام دوست عزیز
    یک دستور نیست شمابه جای bitwait .یک do loop تعریف کن و داخلش شرط را بزار و اگه بر قرار نبود از دستور exit استفاده کن بپر بیرون از حلقه.
    مشکل ما همین جاست چون اون قسمتی که ما میخایم DO-LOOP بذاریم از دستور WHILE استفاده شده که خودش دستور شرطی هست

    کد:
    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


    این برنامه هست.شما بفرمائید که کجاش باید DO-LOOP بذارم
    ویرایش توسط علیدلی : 25-06-2013 در ساعت 18:32

  7. #6
    کاربر دائمی wantedboy آواتار ها
    تاریخ عضویت
    May 2011
    نام
    علی‏ ‏محمد‏ ‏شکرالهی
    نوشته ها
    492
    تشکر
    201
    تشکر شده 629 بار در 204 پست

    پیش فرض

    سلام دوست عزیز میتونی از وقفه های خارجی استفاده کنی.که زمانی که وقفه خورت تایمرت روشن بشه و .....

  8. #7
    کاربر فعال
    تاریخ عضویت
    Jul 2011
    نوشته ها
    198
    تشکر
    234
    تشکر شده 70 بار در 45 پست

    پیش فرض

    نقل قول نوشته اصلی توسط wantedboy نمایش پست ها
    سلام دوست عزیز میتونی از وقفه های خارجی استفاده کنی.که زمانی که وقفه خورت تایمرت روشن بشه و .....
    مشکل اینجاس که چندین سنسور هست و نمیشه از وقفه استفاده کرده .چون با کمبود وقفه مواجه میشم

  9. #8
    کاربر دائمی wantedboy آواتار ها
    تاریخ عضویت
    May 2011
    نام
    علی‏ ‏محمد‏ ‏شکرالهی
    نوشته ها
    492
    تشکر
    201
    تشکر شده 629 بار در 204 پست

    پیش فرض

    نقل قول نوشته اصلی توسط علیدلی نمایش پست ها
    مشکل اینجاس که چندین سنسور هست و نمیشه از وقفه استفاده کرده .چون با کمبود وقفه مواجه میشم
    سلام.
    پس باید نحوهی برنامه نویسی یا طریقه ی خوندن سنسور را تغییر بدی.

موضوعات مشابه

  1. درباره دستورات i2c
    توسط Deadman در انجمن AVR
    پاسخ: 0
    آخرين نوشته: 07-11-2013, 15:34
  2. دستور ارسال عدد در spi با میکرو avr
    توسط Niloufar.Male در انجمن AVR
    پاسخ: 0
    آخرين نوشته: 26-10-2013, 19:52
  3. دستورات arm
    توسط imported_pmf در انجمن AT91 series (ATMEL)
    پاسخ: 0
    آخرين نوشته: 25-08-2012, 12:21
  4. دستورات سریال
    توسط leylijoon در انجمن برنامه نویسی کامپیوتر/کنترل با کامپیوتر
    پاسخ: 1
    آخرين نوشته: 18-08-2012, 09:20
  5. مشکل در دستور if
    توسط parham144 در انجمن AVR
    پاسخ: 8
    آخرين نوشته: 22-05-2012, 00:57

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •