// 用INT0开始启动T2,用TCNT2做计数器结果,大于T2的用f做T2的循环次数+TCNT2做结果。 用T2定时器可以做1-50HZ的频率测量吗?我的这个程序不行,测的频率不稳定。 #pragma interrupt_handler timer2_ovf_isr:5 void timer2_ovf_isr(void) { if(f>6550) { TIMSK&=~(1<<TOIE2); //T2 中断禁止 f=0; //force =2 real_f=0; // errpres=0; } else f++; } //************************************************* //external interupt on INT0 //************************************************* #pragma interrupt_handler int0_isr:2 void int0_isr(void) { if(f>0&f<6550) { errpres=f*255;//+TCNT2; real_f=(int)errpres/10; //低频 } else if(f==0) { errpres=255-TCNT2; real_f=(int)errpres/1.78; } else ; f=0; }
|