اطلاعیه

Collapse
No announcement yet.

تابع تاخیر در WINAVR

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

    تابع تاخیر در WINAVR

    کسی می تونه در مورد کد های زیر توضیح بده

    void
    _delay_loop_1(uint8_t __count)
    {
    __asm__ volatile (
    "1: dec %0" "\n\t"
    "brne 1b"
    : "=r" (__count)
    : "0" (__count)
    );
    }
    void
    _delay_loop_2(uint16_t __count)
    {
    __asm__ volatile (
    "1: sbiw %0,1" "\n\t"
    "brne 1b"
    : "=w" (__count)
    : "0" (__count)
    );
    }

    #2
    پاسخ : تابع تاخیر در WINAVR

    این دو توابع اسمبلی هستن. اولی مشخص میکنه که یک حلقه به تعداد مشخص شده در پارامتر count_ اجرا بشه که یک مقدار تاخیر به اندازه سه برابر این مقدار ایجاد میشه. ضمنا مقدار این متغیر بعد از اجرای حلقه عوض میشه.
    دومی هم همینطور ولی دومی برای مقادیر تا 65535 هم کار میکنه.

    دیدگاه


      #3
      پاسخ : تابع تاخیر در WINAVR

      با سلام، :bye

      بطور خلاصه و مفید دو تا LOOP به زبان اسمبلی، معادل کدهای زیر برای هر کدوم از روتین های اشاره شده :

      for(unsigned char i =__count; i; i--); //_delay_loop_1

      for(unsigned short i =__count; i; i--); //_delay_loop_2
      مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

      Sh_Nourbakhsh@Yahoo.com

      http://s2.picofile.com/file/7170362468/_Wall_e_.jp

      دیدگاه

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