打印

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

[复制链接]
1873|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;

楼主忘了这两个。

使用特权

评论回复
5
pengxiangbo00| | 2014-10-14 15:18 | 只看该作者
中断没开

使用特权

评论回复
6
十月风城| | 2014-10-15 12:45 | 只看该作者
怎么都习惯把处理程序写在中断里!

使用特权

评论回复
7
liu0000feng| | 2015-4-23 17:26 | 只看该作者
不能产生中断那肯定是代码那里没有配置好的原因!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

0

粉丝