#include<pic.h>
__CONFIG(0x3f71);
unsigned char fun;
void csh(void);
void interrupt int_isr(void);
void delay(unsigned int);
void main(void)
{
csh();
while(1);
}
void interrupt int_isr(void)
{
if(CCP1IF==1)
{
CCP1IF=0;
fun++;
if(fun==1)
{
TMR1L=0;TMR1H=0;
CCP1CON=0;CCP1IF=0;//程序中要改变CCP的捕捉设置,在每次改变前,先关闭CCP模块
//再清CCP的中断标志,然后再进行新的捕捉设置,以避免产生错误的捕捉
CCP1CON=0b00000111;
RC0=1;
}
else if(fun==2)//第2次CCP2中断,捕捉16次上升沿的时间
{
CCP1CON=0;CCP1IF=0;
CCP1CON=0b00000101;
fun=0;
RC0=0;
}
}
}
void csh(void)
{
TRISC=0b00000100;
RC0=0;
CCP1CON=0b00000101;
TMR1L=TMR1H=0;
T1CON=0b00110001;
fun=0;
CCP1IE=1;
INTCON=0b11000000;
} |