سرخط خبرها
خانه » avr » آموزش avr » خطا ۲۲۰ در کامپایلر بسکام Forward jump out of range

خطا ۲۲۰ در کامپایلر بسکام Forward jump out of range

بعضی مواقع پیش میاد که در برنامه نویسی هاتون با این که دستور کاملا درست هست و در برنامه های دیگر بدون خطا کامپایل میشه و جواب میده  در یک برنامه جدید در موقع کامپایل کردن مدام کامپایلر از شما خطا میگیره یکی ازاین خطا ها، خطای شماره ۲۲۰ است و نام ان  Forward jump out of range  میباشد

دریکی از پروژه های که برادرم داشت چند روز پیش روی آن کار میکرد وقتی دستورات مربوط به خواندن اطلاعات از کارت mmc را مینوشت با این که همین دستورات را قبلا استفاده کرده بود و مشکلی نداشت اما به محض اضافه کردن در این پروژه کامپایلر موقع کامپایل کردن برنامه  ارور ۲۲۰ را میگرفت.آیسی که در برنامه تعریف شده بود atmega128 بود و حجم برنامه حدود ۵۰ درصد ای سی بود البته تا به الان شده بود و حجم برنامه رو به افزایش بود اما به محض اضافه کردن دستورات مربوط به کارت  mmc در برنامه خطای  Forward jump out of range  را داشتیم با این حال که همین دستورا ت در یک برنامه ساده بدون خطا کامپایل میشد و در عمل هم جواب میداد.

به هر حال با جستجو در اینترنت مشکل را متوجه شدیم که درادامه برای شما شرح خواهیم داد.

برای رفع این مشکل باید یک تغییر کوچک و جزئی در فایل مربوط به ای سی که در برنامه استفاده میکنید انجام بشه

خوب چون در پروژه ما از آی سی atmega128  استفاده کردیم این تغییر را در فایل m128def.dat دادیم  ،در ابتدا باید این فایل را ویرایش کرد میتونید این کار را با notepad  خود ویندوز انجام بدین اما پیشنهاد من++ notepad  هست.

حالا ، وقتی فایل رابرای ویرایش باز کردین باید دنبال عبارت WRAP بگرین  مقدار آن را از WRAP=0      به WRAP=1   تغییر بدین با این کار دیگه خطای ۲۲۰ را نخواهید داشت.

تذکر: با تغییر مقدار WRAP  از ۰ به ۱مشکل ما حل شده و دیگه کامپایلر از ما خطا نگرفت و پروژه ما هم در عمل به خوبی جواب داد اما از بابت این که این تغییر ممکن است در پروژه های دیگر مشکل بوجود بیارد اطمینان ندارم پس از فایل اصلی m128def.dat یک کپی داشته باشین تا در مواقع مورد نیاز بتوانید از ان استفاده کنید

همچنین ببینید

avr dos

یکی از خواسته ها هر فردی که با زبان بیسیک کار میکنه استفاده از کارت ...

یک دیدگاه

  1. واقعا ممنونم از راهنماییتون
    ولی باعث شد
    دستور INT کار نکنه

پاسخ دهید