• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

pic18f25k22 捕获只有ccp2能打开,其它打开均没有进中断

#include

#include

#include__PROG_CONFIG(1,IESO_OFF&FOSC_HSHP);  //PIC的配置字1__PROG_CONFIG(2,BORV_285&WDTEN_OFF);  //PIC的配置字2__PROG_CONFIG(3,MCLRE_EXTMCLR&CCP2MX_PORTC1&CCP3MX_PORTB5);  //PIC的配置字

3__PROG_CONFIG(4,0x0081); //PIC的配置字

4__PROG_CONFIG(5,0xC00F);  //PIC的配置字

5__PROG_CONFIG(6,0xE00F);  //PIC的配置字

6__PROG_CONFIG(7,0x400F);  //PIC的配置字7

#define LED   LATC0

//*******************************************************************////                 

 系统初始化/

/*******************************************************************//void System_Init(void){OSCCON = 0b11100100;            //内部8MHz //bit6-4 //111 = HFINTOSC – (16 MHz)//110 = HFINTOSC/2 – (8 MHz) //101 = HFINTOSC/4 – (4 MHz) //100 = HFINTOSC/8 – (2 MHz)//011 = HFINTOSC/16 – (1 MHz)OSCTUNE= 0b01000000;            //使能PLL 4X倍频,出厂校准TRISC0=0;//led显示   WPUB   = 0b00011000;            //RB3,RB4按键上拉   LATA  = 0x00;LATB  = 0x00; //数据锁存为全0LATC  = 0x00;}//========================================================================//// CCP3捕获模块初始化 ////==============================================================//void CCP_Init(void){ TRISC2=1;//ccp1输入TRISC1=1;//ccp2输入TRISB5=1;//ccp3输入TRISB0=1;//ccp4输入CCP1CON=0b00000101;//0111 = 捕捉模式:每16 个上升沿CCP2CON=0b00000101;//0111 = 捕捉模式:每16 个上升沿CCP3CON=0b00000101;//0101 = 捕捉模式:每个上升沿捕捉一次CCP4CON=0b00000101;//0100 = 捕捉模式:每个下降沿捕捉一次 //在捕捉/比较模式下 CCP2 以 Timer1 作为定时器//在捕捉/比较模式下 CCP1 以 Timer1 作为定时器CCPTMRS0=0b00000000;//在捕捉/比较模式下 CCP4 以 Timer3 作为定时器//在捕捉/比较模式下 CCP3 以 Timer3 作为定时器//CCPTMRS1=0b00000000;//TMR1GE=0;//TMR3GE=0;T1CON=0X01;//开启定时器1===8分频T3CON=0X31;//开启定时器3===8分频T5CON=0X31;TMR1IE=0;TMR3IE=0;TMR1L = 0;TMR1H = 0;TMR3L = 0;TMR3H = 0;TMR5L = 0;TMR5H = 0;CCPR1H=0;CCPR1L=0;CCP1IF=0;CCP1IE=1;CCPR2H=0;CCPR2L=0;CCP2IF=0;CCP2IE=1;CCPR3H=0;CCPR3L=0;CCP3IF=0;CCP3IE=1;CCPR4H=0;CCPR4L=0;CCP4IF=0;CCP4IE=1;}static void interrupt SystemISR(void)      //系统中断{if(CCP3IF){CCP3IF=0;LED=~LED; TMR1H=0;   //清定时器1重新定时   TMR1L=0;}}void main(){System_Init();CCP_Init();LED=1;PEIE=1; //(TM2中断为外设中断)所有未被屏蔽的外设中断1开放0关闭GIE=1; //使能所有未被屏蔽的中断1使能0关闭//TRISC2=1;while(1);}

全部回复(1)
正序查看
倒序查看
lingyan
LV.8
2
2017-11-08 07:17
学习了,中断优先级设置了没有?
0
回复