原帖链接:https://www.cnblogs.com/wangh0802PositiveANDupward/archive/2012/07/22/2604074.html
PIC18F452(有两个ccp)每个CCP(捕捉/ 比较/PWM )模块有一个16位寄存器,它可以用作16位捕捉寄存器、16位比较寄存器或PWM 主/ 从占空比寄存器。除了特殊事件触发器之外,CCP1的操作和CCP2相同。 捕捉/ 比较/PWM 寄存器1(CCPR1)由两个 8 位寄存器组成:CCPR1L (低字节)和 CCPR1H(高字节)。CCP1CON 寄存器控制CCP1 的操作。 捕捉/ 比较/PWM 寄存器2(CCPR2)由两个 8 位寄存器组成:CCPR2L (低字节)和 CCPR2H(高字节)。CCP2CON 寄存器控制CCP2 的操作。 CCP模式-定时器资源:捕捉:Timer1或Timer3;比较:Timer1或Timer3;PWM:Timer2。
给CCPRx一个值, 开定时器 TMR1计数. 定时器可以零开始计数,不断和CCPRx的数据对比,如果相同则相应动作. (纯自动的,设定好CCPRx 并开启CCP模块就可以, )CCPRx不能自加.
CCP1CON 寄存器/CCP2CON 寄存器。 捕捉模式:在捕捉模式下,当RC2/CCP1 引脚上有事件发生时,CCPR1H:CCPR1L即捕捉TMR1 或TMR3 寄存器的16位计数值。事件定义如下:
• 每个下降沿发生
• 每个上升沿发生
• 每4 个上升沿发生
• 每16个上升沿发生
由控制位 CCP1M3:CCP1M0(CCP1CON<3:0>)来选择上述 4 种事件之一。当发生捕捉事件时,中断请求标志位 CCP1IF(PIR1<2> )置 1 ;该位必须用软件清零。如果在读出寄存器CCPR1中的值之前发生另一个捕捉,那么之前捕捉的值将会被覆盖。捕捉模式的改变会产生错误的捕捉中断。用户应保持
CCP1IE 位(PIE1<2> )为 0 以免发生错误中断,并且应该在任何操作模式改变后清零标志位CCP1IF。 通过设置CCP1M3:CCP1M0位可以选择四种预分频值设置。只要CCP模块关闭或没有设置为捕捉模式,就可将预分频器的计数器清零。这就意味着任何复位都可以将预分频器计数器清零。从一个捕捉预分频器切换到另一个捕捉预分频器可能产生中断。而且,预分频器计数器不会被清零,因此第一次捕捉可能是来自一个非零的预分频器。
|