سلام
من به یه مشکلی با استفاده از تایمر ها برخورد کردم که می خواستم نظر شما اساتید رو جویا بشم. من برای راه اندازی و استفاده از تایمر ها از این دستورات استفاده کردم. (کامپایلرم CCS 4.105 هست و ورژن پروتوس هم 7.6 سوریس پک 4)
برای پیکربندی تایمرها setup_timer_X (mode)
مقداردهی تایمر ها set_timerX(value) or set_rtcc (value)
مقدار گیری از تایمر ها: value=get_timerX()
محاسبه زمان: 4*(1/xtal) * Prescaler * ((256|| 65536)- set_timer0(value))
با این معلومات این برنامه ی بسیار ساده رو نوشتم که تو اون ی به متغیر های on_time و off_time عدد می دم م خروجی رو روی پایه ی A.0 می بینم اما برنامه زمان ها اصلا درست کار نمی کنن.جالب تر اینکه من با استفاده از delay همون کاری که با تونستم زمان هایی که می خوام رو پیاده سازی کنم که برنامه ی اونم گذاشتم.
میشه ببینین مشکل من کجاست و راه حلش چیه؟
void main(){
unsigned int16 a,b,on_time=0,off_time=0;
on_time=30360;
off_time=30360;
set_tris_a(0x00);
while(true){
//time=4*prescaler*(1/xtal)*(65536-value)
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
do{
output_high (PIN_A0);
set_timer1(on_time);
a=get_timer1();
}while(a==0);
do{
output_low (PIN_A0);
set_timer1(off_time);
b=get_timer1();
}while(b==0);
}
}
================================
اینم برنامه با delay
void main(){
unsigned int16 a,b,on_time=0,off_time=0;
on_time=30360;
off_time=30360;
set_tris_a(0x00);
while(true){
//time=4*prescaler*(1/xtal)*(65536-value)
while(true){
output_high(PIN_A0);
delay_ms(on_time);
output_low(PIN_A0);
delay_ms(off_time);
}
}
================================================== ========
من به یه مشکلی با استفاده از تایمر ها برخورد کردم که می خواستم نظر شما اساتید رو جویا بشم. من برای راه اندازی و استفاده از تایمر ها از این دستورات استفاده کردم. (کامپایلرم CCS 4.105 هست و ورژن پروتوس هم 7.6 سوریس پک 4)
برای پیکربندی تایمرها setup_timer_X (mode)
مقداردهی تایمر ها set_timerX(value) or set_rtcc (value)
مقدار گیری از تایمر ها: value=get_timerX()
محاسبه زمان: 4*(1/xtal) * Prescaler * ((256|| 65536)- set_timer0(value))
با این معلومات این برنامه ی بسیار ساده رو نوشتم که تو اون ی به متغیر های on_time و off_time عدد می دم م خروجی رو روی پایه ی A.0 می بینم اما برنامه زمان ها اصلا درست کار نمی کنن.جالب تر اینکه من با استفاده از delay همون کاری که با تونستم زمان هایی که می خوام رو پیاده سازی کنم که برنامه ی اونم گذاشتم.
میشه ببینین مشکل من کجاست و راه حلش چیه؟
void main(){
unsigned int16 a,b,on_time=0,off_time=0;
on_time=30360;
off_time=30360;
set_tris_a(0x00);
while(true){
//time=4*prescaler*(1/xtal)*(65536-value)
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
do{
output_high (PIN_A0);
set_timer1(on_time);
a=get_timer1();
}while(a==0);
do{
output_low (PIN_A0);
set_timer1(off_time);
b=get_timer1();
}while(b==0);
}
}
================================
اینم برنامه با delay
void main(){
unsigned int16 a,b,on_time=0,off_time=0;
on_time=30360;
off_time=30360;
set_tris_a(0x00);
while(true){
//time=4*prescaler*(1/xtal)*(65536-value)
while(true){
output_high(PIN_A0);
delay_ms(on_time);
output_low(PIN_A0);
delay_ms(off_time);
}
}
================================================== ========
دیدگاه