高手看看,我这个程序中断可以进入,就是测的频率是乱的。单片机PICF18F65J90
==============================================================================//
// CCP1中断处理函数
// CCP1扑捉工作于4M晶振
//===================================================================================//
void interrupt low_priority CCP1int(void)
{ if(!PIR3bits.CCP1IF)
{PIE3bits.CCP1IE=1;
GIEL=1;
return;
}
if(CCP1gdflag)
{CCP1CON=0x04; //下降沿捕捉
TMR1ON=0; //定时器处理
TMR1IF=0;
TMR1H=0x00;
TMR1L=0x00; //定时器延时
TMR1ON=1; //重开定时器
CCP1gdflag=0;
}
else
{dy_cj.adre[0]=CCPR1L;
dy_cj.adre[1]=CCPR1H;
CCP1intflag=1;
}
PIR3bits.CCP1IF=0;
PIE3bits.CCP1IE=1;
}
void main(void)
{ CCP1CON=0x05; //上升沿捕捉
CCP1gdflag=1; //上升沿标识位
CCP1intflag=0; //下降沿中断标识位,置1表示产生了中断
PIE3bits.CCP1IE=1;
GIEL=1;GIEH=1;
loop=1000;
while(--loop>0)
{delayms(1);asm("clrwdt");
if(CCP1intflag) break;
} //等待一次测量结束
PIE3bits.CCP1IE=0;
GIEL=0;GIEH=0;
TMR1ON=0; //定时器处理
TMR1IF=0;
TMR1H=0x00;
TMR1L=0x00;
} |