| 
 
| #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;
 }
 | 
 |