پاسخ : یک برنامه کوچک تاخیر یک ثانیه ای می خواستم
دوست عزیز اول باید ببینی که فرکانس کریستالی که به میکرو وصل کردی چقدره. بعد اون عدد رو به 12 تقسیم کن و بعد عکسش کن. این عدد به دست اومده زمانیه که برای اجرای یک machine cycle از CPU وقت گرفته میشه.
برای مثال اگر کریستال شما 12MHz هست، 12MHz/12=1MHz
حالا اگر یک مگاهرتز رو عکس کنی درمیاد یک میکروثانیه که معادل با همون MC هست.
خب حالا برای درست کردن تاخیر 1 ثانیه برای این مثال باید کدی نوشته بشه که یک میلیون ماشین سایکل انجامش طول میکشه.
توجه داشته باشید که دستور DJNZ دو ماشین سایکل و دستور MOV یک ماشین سایکل زمان نیاز دارند.
بعلاوه نمی تونید در یک رجیستر عادی عددی بزرگتر از 255 ذخیره کنید و همچنین دستور DJNZ DPTR, Lable غلطه.
در مورد ضرب یا جمع کد زیر رو در نظر بگیرید:
در این کد خط اول یک بار
خط اول 1 بار
خط دوم 5 بار
خط سوم 5x10 بار
خط چهارم 5x10x20 بار
خط پنجم 5x10 بار
خط ششم 5 بار
اجر میشن. حالا با همین روش میتونی مقدار هایی که من همینجوری 5 و 10 و 20 دادم رو جوری حساب کنی که مجموع ضرب هاشون بشه یک میلیون (1 ثانیه)
و مطلب آخر هم در مورد Proteus: روی این نرم افزار اصلا در کارهایی که به زمان وابسته است در حالت real-time اصلا حساب نکنید! چون جواب درستی بهتون نمیده. ولی پایین صفحه زمان رو نشون میده. از اون طریق میتونی بفهمی که آیا واقعا تاخیر یک ثانیه بوده یا نه.
دوست عزیز اول باید ببینی که فرکانس کریستالی که به میکرو وصل کردی چقدره. بعد اون عدد رو به 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
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 اصلا حساب نکنید! چون جواب درستی بهتون نمیده. ولی پایین صفحه زمان رو نشون میده. از اون طریق میتونی بفهمی که آیا واقعا تاخیر یک ثانیه بوده یا نه.
دیدگاه