در واقع تاخیر هم یکی از کارهایی هست که میتونید با تایمر انجام بدید. میشه
اینجوری مطلب رو کمی روشن تر کرد:تایمر جدا از برنامه ای که شما
نوشتید و در حال اجرا هست کار خودش رو انجام میده و در واقع یک شمارنده
مستقل هست که تنظیماتش رو شما انجام میدید. وظیفه تایمر در واقع شمارش هست و
زمانی که این شمارش به حد تعیین شده ای برسه میتونه پردازشگر رو به اجرای
دستوراتی خاصی هدایت کنه.از اونجا که تایمر دقیق هست معمولا در زبان
های سطح بالا و متوسط برای ایجاد تاخیر هم از اون استفاده میشه چون تاخیری
که تابع تاخیر در زبان سطح بالا ایجاد میکنه خیلی دقیق نیست. به همین خاطر
هست که در خیلی از موارد از تایمر برای ایجاد تاخیر هم استفاده میشه، تفاوت
تایمر میکرو با تایمری که شما خودتون ممکن هست با برنامه نویسی بسازید در
این هست که تایمر شما از روی کدهای نوشته شده شما اجرا میشه و CPU رو به
خودش مشغول میکنه ( از روی نرم افزاری که شما نوشتید اجرا میشه )، به این
معنی که اگر برنامه شمارش شما داره اجرا میشه نمیتونید کار دیگه ای انجام
بدید، اما زمانی که از تایمر خود میکرو استفاده میکنید این تایمر مستقل از
اجرای کد عمل میکنه، با این روش پردازشگر میتونه کار خودش رو انجام بده و
زمانی که تایمر وقفه رو اعلام کرد ( زمان تغیین شده سپری شد ) کاری که براش
در نظر گرفته شده بوده انجام میشه ( کدی که نوشته بودید براش رو اجرا
میکنه ) در واقع دلیل وجود تایمر در میکرو این هست که شما بتونید کنترل
زمان رو مستقل از کدهایی که در حال اجرا هتسند در دست بگیرید.به عنوان
مثال برای روشن و خاموش کردن LED در 1 ثانیه من تفاوت کار با تایمر برای
ایجاد تاخیر و کار بدون تایمر رو مینویسم:اگر شما از تایمر استفاده
نکنید و تاخیر 1 ثانیه رو با کدی که نوشتید دست کنید: اول طبق برنامه LED
مثلا خاموش میشه، حالا کد مربوط به تاخیر شروع به اجرا شدن میکنه یعنی
پردازشگر مشغول میشه به اجرای کد تاخیر، در این حالت پردازشگر نمیتونه تا
این 1 ثانیه تاخیر تمام نشده کار دیگری انجام بده، مگر اینکه تاخیر رو
بیخیال بشه و به قسمت دیگری از کد بره و اجرا کنه، پس در نتیجه پردازشگر
شما باید 1 ثانیه درگیر با تاخیر باشه و بعد که اجرای این کد یک ثانیه تمام
شد ادامه برنامه که روشن کردن LED هست رو انجام بده.حالا اگر شما برای
ایجاد این تاخیر از تایمر استفاده کنید: اول شما تنظیمات تایمر رو انجام
میدید ( برای مدت 1 ثانیه مقدار دهی میکنید و مشخص میکنید که زمان تایمر که
تمام شد LED رو روشن کنه و بعد تایمر رو فعال میکنید ) حالا بعد برنامه
اصلی شروع به اجرا شدن میکنه که در واقع LED خاموش میشه، تایمر حالا داره
به صورت مجزا کار خودش رو انجام میده و شما میتونید توی این فرصت یک ثانیه
پردازشگر رو به هر کار دیگه ای که بخواید مشغول کنید، یک ثانیه تایمر که
تمام بشه CPU خود به خود هر جای برنامه باشه اون رو موقتا نگه میداره و
دستورات مربوط به تایمر رو اجرا میکنه ( که در اینجا روشن کردن LED بود )
بعد دوباره بر میگرده و ادامه کاری که انجام میداد رو انجام میده.پس
مشخص شد که توی این حالت شما میتونید به جای اینکه پردازشگر رو با حلقه های
تاخیر درگیر کنید میتونید در این زمان از اون استفاده های دیگه بکنید ضمن
اینکه عملیات تاخیر هم داره توسط تایمر کنترل میشه و زمانی که وقتش رسید
کدهای مربوطه خود به خود اجرا میشه.پس به طور خلاصه: تایمر میکرو وسیله
ایست برای کنترل زمان که به صورت سخت افزاری مستقل از پردازشگر عمل میکنه.امیدوارم
بد توضیح نداده باشم. اگر جایی اشتباه بود دوستان لطف کنند اصلاح کنند