سلام بر شما
البته باید بدانید چه فرکانسی هستید،سپس به کمک یک فرمول زمان تاخیر delay را بدست اورید .
اما اگر واقعا قصد شما،ساخت یک زمان دقیق است،باید از تایمر ها مجزا و به کمک وقفه های انها این مشکل رو حل کنید .
(که البته در مثال بالا شما از تایمر کانتر 1 ،که دقت بالایی دارد استفاده کردید.)
برای استفاده از تایمرها مجزا،شما باید بعد از مقدار دهی تایمر مد نظرتان. از توابع وقفه استفاده کنید، و بعد دستورات مد نظرتان را در انجا قید کنید.
به عنوان مثال:
Please Login or Register to see this codeبرای استفاده از بهتر از تایمرها،همیشه باید،از توابع وقفه ی استفاده کنید.
در مثال بالا،تایمر 0 میکروکنترولر، تا زمان 1 میلی ثانیه را می شمارد،(نسبتا دقیق و برای دقت بالا باید از کریستال استفاده کنید) سپس overflow می شود،یه به عبارت ساده تر،از حد و سقف مشخص توسط ما بیشتر میشود،سپس بعد از overflow شدن، دستورات وقفه را اجرا می کند.
پس هر دستوری که شما در تابع وقفه، بگذارید،بعد از overflow شدن تایمر،خوانده میشود .
در مثال بالا یک شرط گذاشته شده ، درصورتی که x تا عدد 1000 رسید، پورت D باید فعال شود. تابع هر 1 میلی ثانیه ی یک بار اجرا میشود،پس وقتی x به عدد 1000 میلی ثانیه می رسد،یعنی 1 ثانیه شده است .
باتشکر.