ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

نمایش نتایج: از 1 به 9 از 9
  1. #1
    2014/10/05
    3
    0

    مشکل در برنامه بسکام (فقط یکبار درست اجرا میشود)

    سلام برنامه زیر فقط یکبار درست اجرا میشه دفعه دوم قاطی میکنه عملا هم بستم توی کدها یا کانفیگ ها مشکلی هست ؟
    توضیح: ورودی برنامه درست کار میکنه یعنی با تحریک c.0 برنامه شروع به کارمیکنه که و بعد از زمان مورد نظر که با تایمر 0 درست میشه استپ میکنه تا اینجا int0 , int1 هم درست کار میکنه اما دفعه دوم که پایه c.0 تحریک میشه دیگه نه تایمر 0 کارمیکنه نه int0 و int1 کار میکنه مدار رو هم عملا بستم .
    کد:
    $regfile = "m8def.dat"
    
    $crystal = 8000000
    
    Config Timer0 = Timer , Prescale = 256
    
    Config Int0 = Low Level
    Config Int1 = Low Level
    
    Config Portb = Output
    Config Portc = Input
    
    Dim A As Byte , B As Byte , C As Word , D As Byte , E As Byte
    Dim Ee As Eram Byte
    
    Enable Interrupts
    Enable Int0
    On Int0 Tup
    
    Enable Interrupts
    Enable Int1
    On Int1 Tdown
    
    Enable Interrupts
    Enable Timer0
    Enable Ovf0
    
    On Timer0 Show
    
    A = Ee
    
    Config Debounce = 30
    
    Do
    
    W:
    
    Portb = &B00000000
    Debounce Pinc.0 , 1 , Y
    
    Goto W
    
    Y:
    
    Start Timer0
    
    Z:
    
    Portb = &B00000000
    Waitms A
    
    Portb = &B00000001
    Waitms A
    
    Portb = &B00000011
    Waitms A
    
    Portb = &B00000111
    Waitms A
    
    Portb = &B00001111
    Waitms A
    
    Portb = &B00001110
    Waitms A
    
    Portb = &B00001100
    Waitms A
    
    Portb = &B00001000
    Waitms A
    
    Goto Z
    
    Goto Y
    
    
    
    Loop
    
    End
    
    Tup:
    If A < 255 Then
    A = A + 5
    Ee = A
    waitms 50
    End If
    
    Return
    
    Tdown:
    If A > 10 Then
    A = A - 5
    Ee = A
    waitms 50
    End If
    
    Return
    
    Show:
    Incr C
    If C = 550 Then
    C = 0
    Stop Timer0
    Timer0 = 0
    Goto W
    End If
    
    Return
  2. #2
    2013/08/28
    184
    1

    پاسخ : مشکل در برنامه بسکام (فقط یکبار درست اجرا میشود)

    بعد اینکه برنامت یه بار اجرا میشه مقدار متغیر هات دوباره صفر نمیشه ! اینو چک کن
    امير مسعود مقدم
  3. #3
    2014/10/05
    3
    0

    پاسخ : مشکل در برنامه بسکام (فقط یکبار درست اجرا میشود)

    نقل قول نوشته اصلی توسط masoud.moghaddam21
    بعد اینکه برنامت یه بار اجرا میشه مقدار متغیر هات دوباره صفر نمیشه ! اینو چک کن
    سلام کدوم متغیر ؟ c رو که برای ذخیره تعداد سر ریز هست صفر میکنم .
  4. #4
    2013/08/28
    184
    1

    پاسخ : مشکل در برنامه بسکام (فقط یکبار درست اجرا میشود)

    نقل قول نوشته اصلی توسط faramarz521
    سلام کدوم متغیر ؟ c رو که برای ذخیره تعداد سر ریز هست صفر میکنم .
    ee , a چطور ؟؟؟
    امير مسعود مقدم
  5. #5
    2010/05/22
    یزد
    382
    18

    پاسخ : مشکل در برنامه بسکام (فقط یکبار درست اجرا میشود)

    سلام
    این برنامه کلا مشکل داره ،شما اصول برنامه نویسی رو اجرا نکردید
    شما زیربرنامه yرو return نکردید
    شما کجا متغیر a رو مقدار دادید وبردید تو حافظه که دارین از حافظه فراخونیش می کنید(البته این مشکل نیست به هر حال یه عددی مثل 255 بهتون میده)
    بهتره در مورد برنامتون توضیح بیشتری بدید تا دوستان برنامه رو اصلاح کنند
  6. #6
    2010/05/22
    یزد
    382
    18

    پاسخ : مشکل در برنامه بسکام (فقط یکبار درست اجرا میشود)

    برنامه رو اصلاح کردم ببینید کار میکنه یا خیر ؟؟؟
    کد:
     $regfile = "m8def.dat"
    
    $crystal = 8000000
    
    Config Timer0 = Timer , Prescale = 256
    
    Config Int0 = Low Level
    Config Int1 = Low Level
    
    Config Portb = Output
    Config Portc.1 = Input
    
    Dim A As Byte , B As Byte , C As Word , D As Byte , E As Byte
    Dim Ee As Eram Byte
    Dim Pro As Byte
    Pro = 1
    
    Enable Interrupts
    Enable Int0
    On Int0 Tup
    Enable Int1
    On Int1 Tdown
    
    Enable Timer0
    On Timer0 Show
    A = Ee
    
    Config Debounce = 30
    
    Do
     While Pro = 1
    
    Portb = &B00000000
    Debounce Pinc.0 , 1 , Y
    
    Wend
    
    
    
    While Pro = 2
    
    Portb = &B00000000
    Waitms A
    
    Portb = &B00000001
    Waitms A
    
    Portb = &B00000011
    Waitms A
    
    Portb = &B00000111
    Waitms A
    
    Portb = &B00001111
    Waitms A
    
    Portb = &B00001110
    Waitms A
    
    Portb = &B00001100
    Waitms A
    
    Portb = &B00001000
    Waitms A
    Debounce Pinc.0 , 1 , Exit1
    
    Wend
    
    
    
    
    
    Loop
    
    End
    
    Tup:
    If A < 255 Then
    A = A + 5
    Ee = A
    waitms 50
    End If
    
    Return
    
    Tdown:
    If A > 10 Then
    A = A - 5
    Ee = A
    waitms 50
    End If
    
    Return
    
    Show:
    Incr C
    If C = 550 Then
    C = 0
    Stop Timer0
    Timer0 = 0
    Pro = 2
    End If
    
    Return
      Y:
    
    Start Timer0
    Return
    Exit1:'برای خارج شدن از حلقه ی دوم به اوله
    Pro = 1
    return
  7. #7
    2014/10/05
    3
    0

    پاسخ : مشکل در برنامه بسکام (فقط یکبار درست اجرا میشود)

    ممنون دوستان توضیح برنامه اینطوره :
    وقتی به پایه c.0 یه پالس اعمال میشه برنامه میره و پورت b رو به همون ترتیبی که نوشتم تغییر میده حدود 25 ثانیه این کارو میکنه و برمیگرده پورت b رو 0 میکنه و منتظر میمونه تا دویاره c.0 تحریک بشه .
    int0 و int1 هم سرعت اجرای برنامه ( سرعت تغییر پورت b ) رو کم و زیاد میکنه ( که مقدار یا سرعتی که کاربر تنظیم میکنه باید تو حافظه دائمی ذخیره بشه ) .

    ممنون آقای قاسمی نیا از وقتی که گذاشتید و برنامه ای که نوشتید اما دقیقا اون چیزی که من میخواستم نشد با توضیحاتی که دادم اگه برنامه رو اصلاح کنید خیلی ممنون میشم .
  8. #8
    2014/05/22
    200
    5

    پاسخ : مشکل در برنامه بسکام (فقط یکبار درست اجرا میشود)

    سلام
    من کامل نخوندم ، اما گرفتم موضوع چیه!!!
    اگر میکرو تا چند مرحله بره ، و کارهایی رو اجرا کنه و بعد lock بشه ، 2امکان وجود داره

    1-شما توی برنامتون "چاله" ایجاد کردید ، یعنی به نقطه ای میرسه ، دیگه نمیتونه به برنامه اصلی برگرده ، اما چون با وقفه کار میکنید این احتمال داره که میکرو هنگ میکنه و به سخت افزار مرتبط میشه ،
    راهکار ها :
    1-خازن الکترولیت حتما برای میکرو قرار بدید
    2-میکرو را عوض کنید
    3-فرکانس میکرو رو کاهش بدید
    4-هر موقع که وقفه می خواد ایجاد بشه ، با دستور waitms تاخیر بدید

    2-احتمال داره سخت افزار باشه و در بالا توضخ داده شد
  9. #9
    2010/05/22
    یزد
    382
    18

    پاسخ : مشکل در برنامه بسکام (فقط یکبار درست اجرا میشود)

    نقل قول نوشته اصلی توسط faramarz521
    ممنون دوستان توضیح برنامه اینطوره :
    وقتی به پایه c.0 یه پالس اعمال میشه برنامه میره و پورت b رو به همون ترتیبی که نوشتم تغییر میده حدود 25 ثانیه این کارو میکنه و برمیگرده پورت b رو 0 میکنه و منتظر میمونه تا دویاره c.0 تحریک بشه .
    int0 و int1 هم سرعت اجرای برنامه ( سرعت تغییر پورت b ) رو کم و زیاد میکنه ( که مقدار یا سرعتی که کاربر تنظیم میکنه باید تو حافظه دائمی ذخیره بشه ) .

    ممنون آقای قاسمی نیا از وقتی که گذاشتید و برنامه ای که نوشتید اما دقیقا اون چیزی که من میخواستم نشد با توضیحاتی که دادم اگه برنامه رو اصلاح کنید خیلی ممنون میشم .
    سلام
    برنامه رو تغییر دادم ببینید خوبه یا نه...
    کد:
    $regfile = "m8def.dat"
    
    $crystal = 8000000
    
    Config Timer1 = Timer , Prescale = 1024
    
    Config Int0 = Rising
    Config Int1 = Rising
    
    Config Portb = Output
    Config Pinc.0 = Input
    
    Dim A As Byte , B As Byte , C As Word , D As Byte , E As Byte
    Dim Ee As Eram Byte
    Dim Pro As Byte
    Pro = 1
    
    Enable Interrupts
    Enable Int0
    On Int0 Tup
    Enable Int1
    On Int1 Tdown
    
    Enable Timer1
    On Timer1 Show
    A = Ee
    
    Config Debounce = 30
    
    Do
    
     While Pro = 1
    
    
    Debounce Pinc.0 , 1 , Y , Sub
    
    Wend
    
    
    
    While Pro = 2
    
    Rotate Portb , Right
    
    Waitms A
    Wend
    
    
    
    
    
    Loop
    
    End
    
    Tup:
    If A < 255 Then
    A = A + 10
    Ee = A
    Waitms 10
    End If
    
    Return
    
    Tdown:
    If A > 10 Then
    A = A - 5
    Ee = A
    Waitms 10
    End If
    
    Return
    
    Show:
    Incr C
    If C = 3 Then
    C = 0
    Stop Timer1
    Timer1 = 0
    Pro = 1
    Portb = 0
    End If
    
    Return
      Y:
    
    Start Timer1
    Pro = 2
    Portb = 240
    
    Return
نمایش نتایج: از 1 به 9 از 9

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

  1. پاسخ: 6
    آخرين نوشته: 2015/02/21, 14:24
  2. پاسخ: 2
    آخرين نوشته: 2014/09/05, 20:17
  3. دستوری که فقط یکبار اجرا شود؟
    توسط bravehamid در انجمن میکروکنترلرهای AVR
    پاسخ: 12
    آخرين نوشته: 2014/03/31, 18:52
  4. مشکل در اجرا کردن فایل ها (نام فایل سبز رنگ میشود)
    توسط TARHCHI در انجمن كامپيوتر ، اينترنت و علوم مرتبط
    پاسخ: 1
    آخرين نوشته: 2014/02/05, 10:42
  5. چرا زمان درست اجرا نمی شود؟ و یه مشکل دیگه
    توسط vahid-elect در انجمن میکروکنترلرهای AVR
    پاسخ: 20
    آخرين نوشته: 2008/05/03, 12:29

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

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

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