PCA模块是“可编程计数器阵列”的缩写,英文名称是“Programmable Counter Array”,以下的说明均以SILICON LAB生产的C8051系列微型控制器为例。
PCA包括1个16位“定时器/计数器”和5个“捕获/比较模块”。16位定时器/计数器包括1个高8位寄存器(PCA0H)和1个低8位寄存器(PCA0L),每个捕获/比较模块还有各自的16位“捕获/比较寄存器”。
PCA的定时器/计数器在运行时必须基于某个“基准时钟频率”,通过设置相应的寄存器,可以选择以下几种:
- 系统时钟频率
- 系统时钟频率的12分之一:f_osc/12
- 系统时钟频率的4分之一:f_osc/4
- 外部晶振时钟源频率的8分之一:external f_osc/8
- 由定时器/计数器0的溢出率所决定的频率
- 通过ECI输入管脚设定的外部时钟信号的频率
第一. 通过PCA的模式选择寄存器(PCA0MD)选择基准时钟频率,模式选择寄存器如下图
- CIDL:设置PCA在CPU空闲模式下的模式
CIDL=0:PCA在CPU空闲模式下继续工作
CIDL=1:PCA在CPU空闲模式下停止工作 - WDTE:设置看门狗模式
WDTE=0:看门狗模式关闭
WDTE=1:启动捕获/比较模块4作为看门狗定时器 - WDLCK:看门狗锁定模式
WDLCK=0:看门狗解除锁定
WDLCK=1:看门狗被锁定,即看门狗有可能在下一次系统重置前不能屏蔽 - CPS2、CPS1、CPS0:设置时钟基准频率
- ECF:PCA定时器/计数器溢出中断使能标志
ECF=0:PCA定时器/计数器溢出时不产生中断
ECF=1:PCA定时器/计数器溢出标志位CF置1时产生中断
CPS2、CPS1、CPS0标志位配置表
第二. 通过PCA的控制寄存器(PCA0CN)可以对PCA的动作进行控制
- CF:PCA定时器/计数器溢出标志位
当PCA定时器/计数器溢出时,CF自定被硬件置1,此时如果PCA0MD中的ECF设置为1时,CPU执行中断处理。注意:中断处理结束后CF不能由硬件置0,必须由软件置0 - CR:定时器/计数器启停标志位
CR=0:定时器/计数器停止