应该在每个通道设置一个定时器溢出次数累加变量,每个变量在中断中计算出方波的时间后清零。如: #pragma CODE_SEG NON_BANKED void interrupt 10 ISR1(void) {
C1CapTimeNew =TC2;
C1IntTimeNew=65536*C1TovCount + C1CapTimeNew - C1CapTimeOld ;
C1TovCount=0;
C1CapTimeOld=C1CapTimeNew;
}
void interrupt 9 ISR2(void) {
C2CapTimeNew=TC1;
C2IntTimeNew = 65536*C2TovCount + C2CapTimeNew - C2CapTimeOld ;
C2TovCount=0;
C2CapTimeOld=C2CapTimeNew;
}
void interrupt 16 Timer_Overflow_ISR(void) {
C1TovCount++; C2TovCount++; (void)TCNT;
} #pragma CODE_SEG DEFAULT
[此贴子已经被作者于2008-12-5 16:01:38编辑过] |