به نام خدا : این بار نوشتن نابع تاخیر زمانی با استفاده از تایمر/کانترصفر را پیگیری خواهیم کرد.
تایمر / کانتر صفر :این تامر /کانتر هشت بیتی بوده و درای حد اکثر مقدار (255) FFH
است .
ریجستر های تایمر / کانتر در حالت هشت پیشرفته که در این پروژه به کار می روند.
- ریجستر کنترل تایمر/کانتر صفر(TCCR0 )
- ریجستر خواندن و نوشتن در تایمر کانتر صفر(TCNT0)

برنامه به زبا c +توضیح
void delay_m(int n);//تابع به وجود اوردن تاخیر زمانیوقفه تایمر کانتر صفر در و معرفی دو متغیر timer2 , m1=زمان یک میلی ثانیه و شروع تایمر کانتر از 156
int timer21,m1;
interrupt [TIM0_OVF] void timer0_ovf_isr(void) {
TCNT0 = 156;
timer2++;
if ( timer2 == 10 ) { m1++; u1=0; }
}
void main(void)
{
TCCR0=0x01; // cs02=0 cs01=0 cs00=1 fCLK=I/O MODE=normal Clock source: System Clock
TCNT0=156; //مقدار رهی اولیه 156 (شروع تایمر کانتر از156)
TIMSK=0x03; // توانا ساز وقفه تایمر کانتر صفر
while(1){ // کدهای برنامه
}
}
// زمانی که متغیر ورودی تابع با مقدارورودی تابع برابر شود درستور خروج از حلقه اجرا می شود
void delay_m(int n){
m1=0;
while(1) { if (m1>n) { break; } ;
}
}
void delay_m(int n){
m1=0;
while(1) { if (m1>n) { break; };
}
}