程序吐下如下:
void IC_Init(void){
TSCR1=0x80;//时钟允许
TSCR2=0x04;//div by 16
TCTL3=0x40;//c-输入捕捉7任何沿有效,
TCTL4=0x01;//0表示ICx禁止, 1表示上升沿, 2表示下降沿, 3表示任何沿
TIE =0x81;//每一位对应相应通道中断允许,0表示禁止中断
TIOS =0x00;//每一位对应通道的: 0输入捕捉,1输出比较
}
unsigned char Tc0IsrFlag=0;
unsigned char Tc0FirstIsrFlag=1,Input_Num;
int tc0=0,tc0last=0;
int period=0;
void main(void) {
DDRB=0xff;
setbusclock();
PWM_Init();
IC_Init();
EnableInterrupts;
for(;;){
if(Tc0IsrFlag){
tc0=TC0;
if(Tc0FirstIsrFlag==1) Tc0FirstIsrFlag=0;
else period=tc0-tc0last;
tc0last=tc0;
Tc0IsrFlag=0;
}
}
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 8 ISR_TimerChan0(void) {
Tc0IsrFlag=1;
TFLG1_C0F=1;
}
我单步执行的时候,程序进入中断以后就一直在中断服务程序里面,回不到主程序。不知道问题出在哪儿?哪位高手帮我看一下 |