PIC单片机 捕捉功能为什么不能产生中断

[复制链接]
3004|6
 楼主| sdgsycy 发表于 2012-10-22 09:37 | 显示全部楼层 |阅读模式
#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;
}
yewuyi 发表于 2012-10-22 10:06 | 显示全部楼层
1、不能产生中断那肯定是代码那里没有配置好的原因,你对着数据手册中的步骤把所有的寄存器都设置好。
2、在PIC16上写中断程序,请务必养成良好习惯将中断标志位与中断容许位一起判断,虽然不这样未必100%产生错误,但多数情况下会错。
 楼主| sdgsycy 发表于 2013-1-22 14:41 | 显示全部楼层
yewuyi 发表于 2012-10-22 10:06
1、不能产生中断那肯定是代码那里没有配置好的原因,你对着数据手册中的步骤把所有的寄存器都设置好。
2、 ...

谢谢版主
zhenxing2000 发表于 2013-1-22 19:45 | 显示全部楼层
本帖最后由 zhenxing2000 于 2013-1-22 19:47 编辑

GIE = 1;
PEIE = 1;

楼主忘了这两个。
pengxiangbo00 发表于 2014-10-14 15:18 | 显示全部楼层
中断没开
十月风城 发表于 2014-10-15 12:45 来自手机 | 显示全部楼层
怎么都习惯把处理程序写在中断里!
liu0000feng 发表于 2015-4-23 17:26 | 显示全部楼层
不能产生中断那肯定是代码那里没有配置好的原因!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部