打印

PIC16F877A CCP1输入捕捉问题

[复制链接]
3129|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tjx727|  楼主 | 2009-9-18 15:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我用PROTEUS用定时器0产生一个1MS脉宽的信号,然后用CCP1来进行捕捉,但是不进中断,麻烦哪位熟悉的帮我分析下.是不是初始化有问题,刚接触这个芯片,不熟悉.下面是部分程序和电路图.
void init_cpp1()
{


GIE=0;
//
关闭中断

PEIE=0;
//
关闭外设中断

CCP1IF=0;
//
清零CCP1标志位

CCP1IE=1;
//
CCP1中断

CCP1CON=0X04;
//
首先设置CCP1捕捉每个脉冲的下降沿

T1CON=0x01;//
开启同步外部时钟输入,开启定时器1


PEIE=1;


GIE=1;


CCPR1L=0;


CCPR1H=0;

}
void interrupt ISR(void)
{

uint n;


GIE=0;


if(CCP1IF)


{


CCP1IF=0;//


n=CCPR1H*256+CCPR1L;


period=n-lastcap;


lastcap=n;




}



if(T0IF)


{



TMR0=0xF3;//
此处必须得重载

T0IF=0;


osc=(~osc)&0x01;



PORTA=osc;


}


GIE=1;

}

1.JPG (78.51 KB )

1.JPG
沙发
chen3bing| | 2009-9-18 17:08 | 只看该作者
RC2即CCP1要设为输入。

使用特权

评论回复
板凳
tjx727|  楼主 | 2009-9-19 20:53 | 只看该作者
我设为输入了,只是初始化在程序的最前面,我没有贴出来。
后来我把定时器0给关闭了,不用定时器0来作为信号发生器,用另外的信号发生器(在Proteus里面有现成的),初始化还是没有改变什么就可以了。
我想可能是因为我进中断的时候,将判断CCP1中断写在前面的,但是每次进中断的时候都需要先进后面的定时器中断,然后才会出现一个上升沿或者一个下降沿。所以这个地方有冲突。
虽然我将定时器0屏蔽掉以后,能够捕捉到了,但是我刚刚想到或许可以将CCP1中断写在定时器0中断的后面,这样就可以利用定时器0产生的方波并用CCP1捕捉功能捕捉出来。

使用特权

评论回复
地板
tjx727|  楼主 | 2009-9-19 20:54 | 只看该作者
还是要感谢chen3bing的回答。

使用特权

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

本版积分规则

个人签名:我们在追忆中展望­ 在展望中  调整着向前的步伐 个人新浪微博:http://t.sina.com.cn/tjx727­

30

主题

322

帖子

0

粉丝