اطلاعیه

Collapse
No announcement yet.

ایراد این کد بیسکام چیه؟

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ایراد این کد بیسکام چیه؟

    سلام

    من یه برنامه کوچک تو بیسکام نوشتم که هر x میلی ثانیه یکبار فاصله زمانی بین دو لبه بالارونده از یک سیگنال رو توسط تایمر میخونه.
    اما نمیدانم که چرا وقتی این x میلی ثانیه رو کمتر یا بیشتر میکنم ، زمان خوانده شده توسط تایمر هم متفاوت میشه .
    میتوانید بگید مشکل این کد چیه؟نوع میکرو مگا 8 است.

    $crystal = 16000000
    ' - - - - - - - - - -[Subrootins Declarations] - - - - - - - - - -
    Declare Sub Show_frequency()
    ' - - - - - - - - - -[configuration of lcd pins] - - - - - - - - - -

    Config Lcd = 20 * 4
    Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0

    ' - - - - - - - - - -[configurations] - - - - - - - - - -
    Config Timer1 = Timer , Prescale = 1024
    Config Int0 = Rising

    ' - - - - - - - - - -

    Enable Interrupts
    Enable Timer1

    '----------
    On Int0 Count1
    '----------

    Cursor Off

    '- - - - - - - - - - - -[port direction]- - - - - - - - - - - - -
    Ddrd = &H00
    Portd = &HFF
    Config Portb.0 = Output
    Config Portb.1 = Output
    Config Portb.2 = Output
    '- - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - -

    ' - - - - - - - - - - - - - - - - -[definition of variables]--------------

    Dim B As Byte , Counts As Long
    Dim I As Byte , Gross_frequency As Long , E As String * 4
    Dim Temp As Long , Temp1 As Long , J As Byte
    Dim L1 As Integer , L2 As Integer
    ' - - - - - - - - - - - - - - - - -

    B = 0
    Counts = 0
    I = 0

    Disable Int0
    Disable Timer0

    Waitms 500
    Cls

    Do


    If I = 0 Then Enable Int0
    این قسمت مشکل ایجاد میکنهwaitms 500
    while i=0
    wend
    Disable Timer1
    Call Show_frequency()
    Locate 1 , 1 : Lcd Gross_frequency ; " "
    Locate 2 , 1 : Lcd Counts ; " "
    I = 0

    Loop

    Count1:
    Select Case B
    Case 0
    Enable Timer1
    Start Timer1
    Incr B
    Set Portb.0
    Reset Portb.0
    Case 1
    Disable Int0
    Stop Timer1
    Counts = Timer1
    Timer1 = 0
    Set Portb.1
    Reset Portb.1
    B = 0
    I = 1
    End Select
    ' Waitms 100
    Return

    Sub Show_frequency()

    '( Select Case Counts
    Case 120 To 160
    Gross_frequency = 720000 / Counts
    Case Is > 160
    Gross_frequency = 780000 / Counts
    End Select
    &#039
    Gross_frequency = 1560000 / Counts
    ' Incr Temp

    End Sub Show_frequency()




    Return

    #2
    پاسخ : ایراد این کد بیسکام چیه؟

    بابا دمتان گرم
    این همه بیسکام نویس هست تو فروم اونوقت یکی جواب مارو نمیده.

    نظر شخصی خودم در مورد برنامه اینه که بیسکام اینجا باگ داره.
    منتظر نظر شما هم هستم

    دیدگاه


      #3
      پاسخ : ایراد این کد بیسکام چیه؟

      enable int رو از تو if خارج کن ببین مشکلت حل میشه

      علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

      دیدگاه


        #4
        پاسخ : ایراد این کد بیسکام چیه؟

        نه فرقی نکرد.
        منطق برنامه درسته.
        به عکس زیر نگاه کنید.

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

        دیدگاه


          #5
          پاسخ : ایراد این کد بیسکام چیه؟

          چرا برای تایمر مقدار اولیه تعریف نکردی ؟ چرا وقتی وقفه تایمر اتفاق می افته دوباره به تایمر مقدار نمیدی؟ کلا می خوای همون 65536 تا رو بشمره ؟ اگه مدت زمان مورد نظر بیشتر از یک سیکل وقفه تایمر اتفاق بیفته دوباره از صفر شروع می کنه تا 65535 می ره بالا . اون وقت اون زمان قبلی کجا ثبت میشه ؟

          دیدگاه


            #6
            پاسخ : ایراد این کد بیسکام چیه؟

            میشه بپرسم سیگنال ورودی رو از کجا تهیه کردی؟؟؟

            در ضمن فرکانس ورودیت حدودا چنده؟؟؟

            دیدگاه


              #7
              پاسخ : ایراد این کد بیسکام چیه؟

              فرکانس از 3 الی 80 متغیره.

              دیدگاه


                #8
                پاسخ : ایراد این کد بیسکام چیه؟

                نتیجه اخلاقی بحث

                بیسکام مشکل داره.
                همین امروز زمین ادب رو بوسیدم و با بیسکام خداحافظی میکنم.
                سلام بر winavr , IAR

                دیدگاه


                  #9
                  پاسخ : ایراد این کد بیسکام چیه؟

                  نوشته اصلی توسط nanocycle
                  نتیجه اخلاقی بحث

                  بیسکام مشکل داره.
                  همین امروز زمین ادب رو بوسیدم و با بیسکام خداحافظی میکنم.
                  سلام بر winavr , IAR
                  اینم راهیه.
                  پاک کردن صورت مساله.
                  مطمئنا برنامه ایراد داره. هنوزم میگم مقدار اولیه تایمر ...

                  دیدگاه


                    #10
                    پاسخ : ایراد این کد بیسکام چیه؟

                    نوشته اصلی توسط ﺣ آ‌ﺎ ﻣ ﺪ

                    اینم راهیه.
                    پاک کردن صورت مساله.
                    مطمئنا برنامه ایراد داره. هنوزم میگم مقدار اولیه تایمر ...
                    من خودم برنامه فرکانس بین 20 تا 50 هرتز با بیسیک نوشتم و بدون مشکل بوده

                    من تا حالا هیچ مشکلی با بیسیک نداشتم و همه کاری باهاش کردم از درایئ انئاع ماژول تا مموری و پخش صدا

                    احسنت به اقا حامد
                    علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

                    دیدگاه

                    لطفا صبر کنید...
                    X