اطلاعیه

Collapse
No announcement yet.

مشکل با نوشتن اسمبلی در کد ویژن

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

    مشکل با نوشتن اسمبلی در کد ویژن

    سلام من می خوام فقط در حد روشن کردن یه ال ای دی با اسمبلی کار کنم

    مشکل اینه که هی خطا می ده در مرحله کامپایل مشکلی نیست وقتی build می زنم خطا میده

    کد:
    #include <mega32.h>
    
    void main()
    {
    while(1)
    {
    #asm
    LDI R16,$01
    OUT DDRA,R16
    LOOP:
    SBI PORTA,0
    NOP
    CBI PORTA,0
    NOP
    RJMP LOOP
    #endasm
    
    }
    
    
    }

    این هم خطا





    ولی در پنجره information خطایی نشون نمیده

    من اومده ودر قسمت اسمبلی نوشتم .include "m32def.inc" اون وقت خطای بالا بر طرف شد و چند تا خطای دیگه داد

    علت چیه ؟

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

    درود
    اول اینکه اگر قصد امتحان اسمبلی در Codevision رو دارید که هیچی، اما اگر قصد تمرین برنامه نویسی اسمبلی یا کار کردن با اون رو دارید از AVR Studio استفاده کنید ( البته حتما خودتون میدونستید، فقط جهت اطمینان گفتم )
    دلایل مختلفی میتونه داشته باشه من چندتاش که حالا به ذهنم میرسه رو میگم:
    ممکنه از محل نصب CodeVision باشه، من زمانی که این کامپایلر رو توی مسیری غیر از مسیر پیشفرض نصب کرده بودم با اسمبلی از این مشکلات پیدا میکردم. ولی میتونه هم این نباشه.
    یک دلیل دیگه میتونه معرفی نشدن صحیح و به جای DDRA و PORTA باشه، به خصوص که شما میخواید از دستورات SBI و CBI استفاده کنید، شما یکبار با همین برنامه به جای نوشتن DDRA و PORTA آدرس هگزا دسیمال اونهارو از توی دیتاشیت نگاه کن و بجای این دو کلمه آدرس رو بنویس، من قبلا این کار رو کردم مشکل حل شده.
    دلیل دیگه که فکر نمیکنم این باشه تنظیمات پشته هست، توی برنامه نویسی اسمبلی باید تنظیمات پشته در اول برنامه انجام بشه که اینحا نشده، البته ظاهرا استفاده ای هم از پشته نشده، از طرفی هم اگر اشتباه نکنم کدویإ¾ژن با تنظیمات اصلیش خودش دستورات تنظیم پشته رو ایجاد میکنه. بیشتر احتمال میدم به مورد اول و دوم برگرده، اگر فرصت شد خودم هم امتحان میکنم
    راستی اگر فقط میخواید LED روشن بشه میتونید اون دوتا Nop به علاوه CBI رو کاملا حذف کنید چون از اونجا که تاخیری ایجاد نشده در هر دوحالت چشم شما LED رو همیشه روشن میبینه و نیازی به خاموش و روشن کردنش نیست، اگر هم میخواید به صورت چشمک زن ببینیدش باید به جای اون NOP ها از حلقه های تاخیر استفاده کنید.
    از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
    هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
    اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
    اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
    شاد و موفق باشید

    دیدگاه


      #3
      پاسخ : مشکل با نوشتن اسمبلی در کد ویژن

      علت اینکه از avr studio استفاده نکردم این بود که در لیسا پروگرامر هاش ندیدم که stk 200/300 رو ساپورت کنه


      روش های شما رو تست می کنم ببینم چی میشه


      ممنون از کمکت

      دیدگاه


        #4
        پاسخ : مشکل با نوشتن اسمبلی در کد ویژن

        درود
        خواهش میکنم علی جان وظیفه هست، شما میتونی از AVR Studio برای اسمبل کردن استفاده کنی و فایل HEX رو به دست بیاری بعد به وسیله برنامه های دیگه اون اون فایل رو روی تراشه بریزی،آ‌ مثلا برنامه PonyProg . من خودم پروگرامرم استاندارد نبود و حتی فایل HEX که با AVR Studio ایجاد میشد رو هم با اون مستقیما نمیتونستم روی تراشه بریزم، مجبور هستم فایل HEX رو با notepad باز کنم و خط اولش رو پاک کنم تا پروگرامرم بتونه رایتش کنه، اما با این وجود از AVR Studio استفاده میکنم، دلیلش هم این هست که AVR Studio مخصوص این کار هست و برنامه ای هست که به طور تخصصی برای اسمبل کردن ساخته شده و دارای قابلیت آنالیز خط به خط برنامه اسمبلی هم هست در صورتی که CodeVision اساسا یک کامپایلر C هست و این قابلیت اسمبلی نوشتن در اون برای موارد ضروری در نظر گرفته شده و کار معقولی نیست که بخوایم برای اسمبل کردن برنامه هامون از اون استفاده کنیم.
        اگر تازه میکرو رو شروع کردید و قصد دارید با اسمبلی کار کنید یا اینکه قبلا هم میکرو کار میکردید و اسمبلی رو تازه شروع کردید من خواندن کامل سایت avrbeginners.net رو شدیدا بهتون پیشنهاد میکنم، برنامه نویسی اسمبلی تکنیکها و روش های خاص خودش رو داره که اونجا خیلی از این روش ها رو یاد میگیرید و با نحوه استفاده از دستورات اسمبلی در کاربردهای مختلف تا حدود زیادی آشنا میشید، من خودم اسمبلی AVR رو از اونجا شروع کردم.
        اگر هم به هر دلیل خواندن اون سایت انگلیسی براتون مشکل هست کتاب میکرو کنترلرهای AVR سری MEGA نوشته مهندس سعید شجاعی و مهندس نادر مهرا رو پیشنهاد میکنم چون اسمبلی رو خوب توضیح داده، در کنارش هم کتاب مرجع میکروکنترلرهای AVR نوشته آقایان محمد مهدی پرتوی فر، فرزاد مظاهریان و یوسف بیانلو رو بخوانید خیلی خوبه، این کتاب هم C رو توضیح داده هم تا حدودی اسمبلی رو و از مثال های اسمبلی اون میتونید استفاده خوبی کنید. ولی اون سایت خیلی خودمونی تر توضیح داده و برای شروع به نظر من مناسب تر هست کل مطالب سایت رو هم فکر میکنم میتونید دانلود کنید.
        راستی یک PDF انگلیسی هم بود که فارسیش رو هم ترجمه کرده بودند اما حالا دقیقا اسمش یادم نیست، فکر کنم این نام رو توی گوگل در بخش PDF جستجو کنید کتاب فارسی رو بیاره براتون: ( beginner_ir ) این نام PDF فارسی هست.
        باز هم این نکته رو بگم که اگر بخوای با اسمبلی کار کنی دیر یا زود باید بری سراغ AVR Studio، با CodeVision اذیت میشی.
        موفق باشی
        از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
        هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
        اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
        اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
        شاد و موفق باشید

        دیدگاه


          #5
          پاسخ : مشکل با نوشتن اسمبلی در کد ویژن

          سلام خسته نباشید
          میخاستم با نرم افزار emu8086 یک برنامه اسمبلی بنویسم و اون را داخل یک چیپ 8088 یا یک ریز پردازنده دیگه بریزم ولی کاملا گیج شدم.من یک برنامه میخام که بتونم داخلش اسمبلی برنامه بنویسم و خروجی Hex داشته باشه و میخام بدونم این برنامه که تبدیل به کد هگز شده رو چجوری داخل ریزپردازندم بریزم..ممنون میشم راهنمایی کنید

          دیدگاه

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