اطلاعیه

Collapse
No announcement yet.

کمک در مورد برنامه نویسی بسکام و تایمر

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

    کمک در مورد برنامه نویسی بسکام و تایمر

    سلام خدمت اساتید
    من برنامه زیر را نوشته ام ولی تنها در دو سیکل جواب می دهد و از سیکل سوم اشتباه است
    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Timer1 = Timer , Prescale = 1024 : Stop Timer1
    Config Portb = Output
    Config Pind.5 = Input
    Enable Interrupts
    nable Timer1

    Enable Ovf1
    On Ovf1 Test3

    Do
    If Pind.5 = 1 Then
    Start Timer1
    Do
    If Pind.5 = 0 Then
    Stop Timer1
    Timer1 = 0
    Reset Portb
    End If
    Loop Until Pind.5 = 1

    End If
    Loop

    Test3:
    Portb = &B00000001
    Return

    شرح برنامه : در این برنامه یک تایمر 8 ثانیه ای ساختیم و در صورت تحریک portd.5 اگر 8 ثانیه تحریک ادامه داشته باشد portb.0 یک میشود.
    اگر قبل از تمام شدن 8ثانیه تحریک portd.5 قطع شود تایمر ریست می شود و منتظر میشود که دوباره پایه pind.5 تحریک شود.
    چطور میتونم این برنامه را به یه صورت دیگه بنویسم که همین نتیجه را بدهد این طرز برنامه نویسی ظاهرا درست نیست.
    اینم عکس مدار از همین حالا بگم که به مدار اشکال نگیرید من بیشتر در برنامه نویسی آن اشکال دارم

    #2
    پاسخ : کمک در مورد برنامه نویسی بسکام و تایمر

    نوشته اصلی توسط awrin
    سلام خدمت اساتید
    من برنامه زیر را نوشته ام ولی تنها در دو سیکل جواب می دهد و از سیکل سوم اشتباه است
    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Timer1 = Timer , Prescale = 1024 : Stop Timer1
    Config Portb = Output
    Config Pind.5 = Input
    Enable Interrupts
    nable Timer1

    Enable Ovf1
    On Ovf1 Test3

    Do
    If Pind.5 = 1 Then
    Start Timer1
    Do
    If Pind.5 = 0 Then
    Stop Timer1
    Timer1 = 0
    Reset Portb
    End If
    Loop Until Pind.5 = 1

    End If
    Loop

    Test3:
    Portb = &B00000001
    Return

    شرح برنامه : در این برنامه یک تایمر 8 ثانیه ای ساختیم و در صورت تحریک portd.5 اگر 8 ثانیه تحریک ادامه داشته باشد portb.0 یک میشود.
    اگر قبل از تمام شدن 8ثانیه تحریک portd.5 قطع شود تایمر ریست می شود و منتظر میشود که دوباره پایه pind.5 تحریک شود.
    چطور میتونم این برنامه را به یه صورت دیگه بنویسم که همین نتیجه را بدهد این طرز برنامه نویسی ظاهرا درست نیست.
    اینم عکس مدار از همین حالا بگم که به مدار اشکال نگیرید من بیشتر در برنامه نویسی آن اشکال دارم
    سلام
    اولا دوست عزیز تایمر یک 16 بیتی است و تایمر 0 و تایمر 2 شانزده بیتی هستند.پس شما الان از تایمر 16 بیتی استفاده کردید.
    شما باید برنامه را بصورت زیر بنویسید:
    regfile = "m8def.dat"
    $crystal = 8000000
    Config Timer1 = Timer , Prescale = 8: Stop Timer1
    Config Portb = Output
    Config Pind.5 = Input
    Enable Interrupts
    enable Timer1

    Enable Ovf1
    On Ovf1 Test3
    dim tim as byte
    timer1=64536
    Do
    If Pind.5 = 1 Then
    Start Timer1
    Do
    if tim=8 then set portb.0
    If Pind.5 = 0 Then
    Stop Timer1
    Timer1 = 0
    Reset Portb.0
    End If
    Loop Until Pind.5 = 1

    End If
    Loop

    Test3:
    incr tim
    timer1=64536
    Return
    دوست عزیز این برنامه رو تست کن باید جواب بده و مشکلی نداره.اگر مشکلی داشتی در خدمتم.

    دیدگاه

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