我用PROTEUS用定时器0产生一个1MS脉宽的信号,然后用CCP1来进行捕捉,但是不进中断,麻烦哪位熟悉的帮我分析下.是不是初始化有问题,刚接触这个芯片,不熟悉.下面是部分程序和电路图.
void init_cpp1()
{
GIE=0;
//关闭中断
PEIE=0;
//关闭外设中断
CCP1IF=0;
//清零CCP1标志位
CCP1IE=1;
//开CCP1中断
CCP1CON=0X04;
//首先设置CCP1捕捉每个脉冲的下降沿
T1CON=0x01;//开启同步外部时钟输入,开启定时器1
PEIE=1;
GIE=1;
CCPR1L=0;
CCPR1H=0;
}
void interrupt ISR(void)
{
uint n;
GIE=0;
if(CCP1IF)
{
CCP1IF=0;//
n=CCPR1H*256+CCPR1L;
period=n-lastcap;
lastcap=n;
}
if(T0IF)
{
TMR0=0xF3;//此处必须得重载
T0IF=0;
osc=(~osc)&0x01;
PORTA=osc;
}
GIE=1;
} |