可编程计数阵列PCA (转)

2020-01-27 11:35发布

PCA概述

   PCA就是一个定时器(计数器),和一般定时器原理相似:当PCA被使能则PCA由初值开始定周期累加,然后读取PCA的值。我们通常的做法是比较PCA是否等于我们提前设定的定时标志寄存器的值,如果相等,则定时时间到。PCA也是这样,不过PCA已经给我们准备好了定时标志寄存器,也已经做好了比较机制,不再需要我们在程序中添加比较语句。

    PCA是一个16位定时器,它有5个定时标志寄存器(CCAPnH+CCAPnL,n=0,1,2,3,4),把PCA划分成5个定时模块,这5个模块分别有一个单片机引脚与之对应。与标准的定时器/计数器相比,PCA对CPU 的干扰小,定时更精确,减少了软件设计。

二 PCA相关寄存器

1.CMOD:PCA模式选择寄存器

位     7      6     5    4     3     2      1     0
值   CIDL   WDTE    -    -     -   CPS1   CPS0   ECF   

CIDL:0-单片机空闲模式PCA工作;1-单片机空闲模式PCA不工作
WDTE:0-定时模块4禁用看门狗;1-定时模块4启用看门狗
CPS1,CPS0:PCA定时频率选择位(具体请看DATASHEET)
ECF:1-使CF为1时会产生中断

2.CCON:PCA控制寄存器

位     7      6     5     4      3     2     1     0
值    CF     CR     -   CCF4   CCF3  CCF2  CCF1  CCF0

CF:PCA定时2BYTE溢出标志,当CF变高时,PCA会产生溢出中断,CF位必须软件清零,前提是ECF对CF使能
CR:PCA启停位,0-停止PCA计数,1-启动PCA计数
CCFn(n=0,1,2,3,4):当PCA某个模块检测到PCA定时器的值和自己的定时标志寄存器的值相等时,对应的CCFn会被硬件置位, CCFn必须软件清零,前提是对应的MAT对CCF使能

3.CCAPMn:PCA比较模式选择寄存器(n=0,1,2,3,4)

位     7      6      5      4     3     2     1     0
值     -    ECOM   CAPP   CAPN   MAT   TOG   PWM   ECCF

ECOM:0-关闭比较功能;1-打开比较功能
CAPP:1-PCA的下降沿捕捉定时器的值
CAPN:1-PCA的上升沿捕捉定时器的值(当CAPP和CAPN都为1时,上升沿和下降沿都捕捉)
MAT:1-使能定时时间与定时标志寄存器相等时CCF由硬件置位的功能
TOG:1-使能定时时间与定时标志寄存器相等时,该模块对应的管脚输出高电平的功能
PWM:1-脉宽调制功能打开;0-脉宽调制功能关闭
ECCF:1-使当CCF=1时可以产生中断

4.CCAPnH, CCAPnL (n=0,1,2,3,4):PCA定时标志寄存器

5.CH,CL:PCA定时寄存器

6.CEXn (n=0,1,2,3,4):与各模块相关的单片机引脚

三 PCA基本功能

PCA基本功能有5种:捕捉功能、16位软件定时器功能、高速输出功能、脉冲宽度调制功能PWM和看门狗功能,其中看门狗功能只有模块4支持,具体说明如下:

1.捕捉功能:

选择方法:ECCF=1

功能介绍:当给所用模块相应的管脚改变时,PCA会将当前定时器中的值捕捉到用户的定时标志寄存器中,捕捉后该模块的CCFn会被硬件置位,同时产生中断。

2.16位软件定时器功能:

       选择方法:ECOM=1;ECCF=1;MAT=1

       功能介绍:定时器值和定时标志寄存器的值相等时会有中断产生

3.高速输出功能:

选择方法:ECOM=1;TOG=1;MAT=1 ECCF=1

功能介绍:定时器值和定时标志寄存器的值相等时该模块相应的管脚上有触发产生(高电平)。

4.脉冲宽度调制功能:

选择方法:ECOM=1;PWM=1

功能介绍:此功能通过比较定时器的低字节和定时标志寄存器的低字节来在模块相应的管脚上输出PWM调制电平,当CL < CCAPnL 时输出值为低,当CL >= CCAPnL 时,输出值为高。

5.看门狗功能

选择方法:ECOM=1;MAT=1;TOG=1;WDTE=1

功能介绍:定时器值和定时标志寄存器的值相等时,看门狗产生复位。用户可以周期性改变CCAP4H和CCAP4L防止定时器值和定时标志寄存器的值相等,从而防止复位。此功能只有模块4可以使用。

四 注

       本文中的寄存器只有CCON可以位寻址,其他都不支持!

       本文所参考单片机为P89C66X!

来源:http://townsi.blog.hexun.com/12934682_d.html
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
llskym
1楼-- · 2020-01-27 13:02
PCA的捕获功能不错,呵呵……如果用来做固定时间的定时的话不如具有自动重装载功能的timer,PCA需要自己去计算下一次中断的产生时的比较值,pwm和高速输出没有用过,
烂泥桑
2楼-- · 2020-01-27 19:02
 精彩回答 2  元偷偷看……
1501697860
3楼-- · 2020-01-28 00:51
学习了,多谢

一周热门 更多>