اطلاعیه

Collapse
No announcement yet.

کمک برای برنامه نویسی avr

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

    کمک برای برنامه نویسی avr

    سلام
    من این چند خط برنامه رو نوشتم با هزار زحمت ولی یه مشکلی دارم
    (if(PINB.0==0
    (if(PINB.3==0
    {
    ;PORTD.0=1
    (delay_ms(90000
    ;PORTD.0=0
    }
    من گفتم اگه کلید یک و دو صفر بود خطهای بعدی برنامه رو اجرا کن. من مشکلم اینجاس که اگه کلید 1 در حین انجام برنامه یک شد خروجی که یک شده رو همون جا قطع کنه، من چطوری اینو به برنامه بفهمونم...
    مرسی از همتون

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

    باید از وقفه استفاده کنی تا به محض صفر شدن خروجی رو صفر کنه
    ... و (بدانید) گرفتن تصمیمهاى محکم (براى رسیدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگین سازگار نیست و چه بسیار که خواب شبانه تصمیمهاى محکم روز را از میان برده و تاریکیآ‌ها، خاطره همتآ‌هاى بلند را از یادها محو کرده است. (نهجآ‌البلاغه، خطبه211)

    امام علی (ع):کسی که به وقت یاری رهبرش در خواب باشد، با لگد دشمنش بیدار می شود (غررالحکم،ص 422)

    دیدگاه


      #3
      پاسخ : کمک برای برنامه نویسی avr

      نوشته اصلی توسط AliRezaDAVE
      باید از وقفه استفاده کنی تا به محض صفر شدن خروجی رو صفر کنه
      مرسی از راهنماییتون ولی میشه با جزییات بیشتری بگب اخه من کاملا آماتورم...

      دیدگاه


        #4
        پاسخ : کمک برای برنامه نویسی avr

        با سلام
        گاهی اوقات لازم داریم تا پردازنده، از یه رویدادی با خبر شه، مثلا تغییر فلان پین،دو تا کار میشه کرد، یا اینکه هی بریم اونو بخونیم، خب اگه پردازنده سرش خلوت باشه اشکال نداره خیلی،هر چند الکی پردازش هدر میره، یا اینکه از وقفه استفاده کنیم، وقفه میاد و فقط اگه یک اتفاق خاص که ما تعیینش می کنیمف اتفاق افتاد به پردازنده اطلاع میده و پردازنده اونموقع اگه خواست میره و کاری که باید رو انجام میده، اینطوری هم وقت cpu هدر نمیره و هم ما اون اتفاق رو از دست نمی دیم.(چون اگه قرار باشه هی بریم سرک بکشیم شاید تا ما بخوایم بریم این اتفاق بیافته و ما نبینیمش)
        حالا شما باید اون کلیدی که می خوای اگه یک شد خروجیو عوض کنی رو بدی به پایه اینتراپت خارجی میکرو، (از دیتاشیت نگاه کن ببین چند تا پایه برای این کار داره و کدومان)، بعد توی برنامت از ISR(Interrupt Service Routine) استفاده کن، ISR چیه؟ تو این تابع شما باید به میکرو بگی که اگه فلان اتفاق(وقفه) حادث شد، چیکار کنه.
        پس به نظرم الان شما برو دنبال اینکه چطور توی کد ویژن میشه تابع وقفه نوشت به خصوص برای اینتراپت خارجی که مخصوص تغییر وضعیت پین هاست.
        The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

        دیدگاه


          #5
          پاسخ : کمک برای برنامه نویسی avr

          نوشته اصلی توسط hessam2013
          با سلام
          گاهی اوقات لازم داریم تا پردازنده، از یه رویدادی با خبر شه، مثلا تغییر فلان پین،دو تا کار میشه کرد، یا اینکه هی بریم اونو بخونیم، خب اگه پردازنده سرش خلوت باشه اشکال نداره خیلی،هر چند الکی پردازش هدر میره، یا اینکه از وقفه استفاده کنیم، وقفه میاد و فقط اگه یک اتفاق خاص که ما تعیینش می کنیمف اتفاق افتاد به پردازنده اطلاع میده و پردازنده اونموقع اگه خواست میره و کاری که باید رو انجام میده، اینطوری هم وقت cpu هدر نمیره و هم ما اون اتفاق رو از دست نمی دیم.(چون اگه قرار باشه هی بریم سرک بکشیم شاید تا ما بخوایم بریم این اتفاق بیافته و ما نبینیمش)
          حالا شما باید اون کلیدی که می خوای اگه یک شد خروجیو عوض کنی رو بدی به پایه اینتراپت خارجی میکرو، (از دیتاشیت نگاه کن ببین چند تا پایه برای این کار داره و کدومان)، بعد توی برنامت از ISR(Interrupt Service Routine) استفاده کن، ISR چیه؟ تو این تابع شما باید به میکرو بگی که اگه فلان اتفاق(وقفه) حادث شد، چیکار کنه.
          پس به نظرم الان شما برو دنبال اینکه چطور توی کد ویژن میشه تابع وقفه نوشت به خصوص برای اینتراپت خارجی که مخصوص تغییر وضعیت پین هاست.
          ممنون از راهنمایی کامل و جامعت...
          حتما میرم دنبالش اگه مشکلی بود دوباره مزاحمت میشم

          دیدگاه

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