پاسخ : کامپایلر IAR
اگر دو خط مورد نظر را کامنت کنید، خواهید دید که در برنامه شما خطاهای زیادی ایجاد می شود که دلیل آن این است که نوع نوشتن اسمبلی inline در AVR-GCC با IAR فرق می کند. با توجه به اینکه این خطاها مربوط به کدهای تولید delay است به نظر می رسد می توانید آنها را کلا حذف کنید و برای تولید تاخیر از همان delay_us_ که در فایل delay.h وجود دارد استفاده کنید.
مقایسه را در صورتی می توان انجام داد که کد معادلی که همین عملیات را انجام می دهد و از ساختار استفاده نکرده باشد، در دسترس باشد. در ضمن مسئله ای که در کد شما با یک نگاه قابل تشخیص است این است که متغیرهایی که در دو سطح از برنامه مانند حلقه اصلی و وقفه مورد استفاده قرار می گیرند(مانند UltraSonic.TimeCNT)، باید بصورت volatile تعریف شوند. اما این مورد در کد مشاهده نمی شود که ای بسا با رعایت این مسئله تاثیری هم در زمان اجرای کد بوجود بیاید.
نوشته اصلی توسط NAO_ROBOT
نوشته اصلی توسط محمد نحوی
دیدگاه