اطلاعیه

Collapse
No announcement yet.

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

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

    #16
    پاسخ : یک برنامه کوچک تاخیر یک ثانیه ای می خواستم

    دوست عزیز اول باید ببینی که فرکانس کریستالی که به میکرو وصل کردی چقدره. بعد اون عدد رو به 12 تقسیم کن و بعد عکسش کن. این عدد به دست اومده زمانیه که برای اجرای یک machine cycle از CPU وقت گرفته میشه.
    برای مثال اگر کریستال شما 12MHz هست، 12MHz/12=1MHz
    حالا اگر یک مگاهرتز رو عکس کنی درمیاد یک میکروثانیه که معادل با همون MC هست.
    خب حالا برای درست کردن تاخیر 1 ثانیه برای این مثال باید کدی نوشته بشه که یک میلیون ماشین سایکل انجامش طول میکشه.
    توجه داشته باشید که دستور DJNZ دو ماشین سایکل و دستور MOV یک ماشین سایکل زمان نیاز دارند.
    بعلاوه نمی تونید در یک رجیستر عادی عددی بزرگتر از 255 ذخیره کنید و همچنین دستور DJNZ DPTR, Lable غلطه.
    در مورد ضرب یا جمع کد زیر رو در نظر بگیرید:
    mov a, 5
    l3: mov r1, 10
    l2: mov r2, 20
    l1: djnz r2, l1
    djnz r1, l2
    djnz a, l3

    در این کد خط اول یک بار
    خط اول 1 بار
    خط دوم 5 بار
    خط سوم 5x10 بار
    خط چهارم 5x10x20 بار
    خط پنجم 5x10 بار
    خط ششم 5 بار
    اجر میشن. حالا با همین روش میتونی مقدار هایی که من همینجوری 5 و 10 و 20 دادم رو جوری حساب کنی که مجموع ضرب هاشون بشه یک میلیون (1 ثانیه)
    و مطلب آخر هم در مورد Proteus: روی این نرم افزار اصلا در کارهایی که به زمان وابسته است در حالت real-time اصلا حساب نکنید! چون جواب درستی بهتون نمیده. ولی پایین صفحه زمان رو نشون میده. از اون طریق میتونی بفهمی که آیا واقعا تاخیر یک ثانیه بوده یا نه.

    دیدگاه


      #17
      پاسخ : یک برنامه کوچک تاخیر یک ثانیه ای می خواستم

      نوشته اصلی توسط kasper
      راستش این کامپایلر که شما معرفی کردی کار نکرد.نمی دونم مشکل از چی بود ولی هر فایلی حتی با پسوند ASM. را روش میندازم همون ارور همیشگی محیط DOS را می دهد که دو گزینه CANCEL و IGNORE دارد.اصلا ولش کن.من با همون فرانکلین کار می کنم.اخه هنوز اونقدر حرفه ای نشدم که فرانکلین واسم کافی نباشه.
      سلام و معذرت به خاطر تاخیر در جواب
      این که اون اسمبلر کار نمی کنه مشکل از سیستم شماست.
      شما اون فایلهای EXE و فایل ASM رو بریزید توی یک درایو.
      بعد وارد محیط داس بشید و اسم اون درایو رو به این صورت تایپ کنید مثلاً: ""
      بعد این عبارت رو تایپ کنید: asm51 program.asm
      و بعد این عبارت رو : oh program.obj

      در ضمن استفاده از این اسمبلر اصلاً نشانه حرفه ای بودن نیست. ما بی سواتا اینجوری ایم دیجه :mrgreen:

      چاکریم

      دیدگاه


        #18
        پاسخ : یک برنامه کوچک تاخیر یک ثانیه ای می خواستم

        خیلی از اسمبلر ها باید توی شاخه ای ریخته بشن که اسم اون شاخه DOS-Compatible باشه.
        مثلا آدرسی مثل C:\Documents and Settings\Administrator\Desktop با فرمت آدرس در DOS سازگاری نداره.
        برای اینکه خیالت راحت باشه اسمبلر و فایلت رو توی شاخه ای مثل C:\assem بربز.
        من یک اسمبلر خیلی کوچیک دارم که همیشه به دردم خورده ولی مثل اینکه توی این سایت نمیشه چیزی پلود کرد. نه؟

        دیدگاه

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