华秋商城
直播中

刘丽菲

8年用户 986经验值
私信 关注
[问答]

C8051单片机PCA计数功能能直接读取PCA0CPH0 PCA0CPL0的值吗?

我要实现的功能是:计数P0^2口接收多少个负跳变信号, 直接读取PCA0CPH0    PCA0CPL0 的值,这样有没有问题???没有问题的话,请看下面我为什么得不到想要的结果
PCA配置:
void PCA0_Init()
{
SFRPAGE = PCA0_PAGE;
PCA0CN    = 0x40;            //允许PCA0计数器/定时器
PCA0MD    = 0x08;           //PCA 时钟选择系统时钟  22118400MHZ
PCA0CPM0  = 0x10;         //PCA  Module0--下降沿--P0^2
PCA0CPH0  =   0;
PCA0CPL0  =   0;
}
现给P0^2输入一个负跳变电平,我将PCA0CPH0    PCA0CPL0 输出发现PCA0CPH0=0XBC   PCA0CPL0 = 0XB8     为什么不是 PCA0CPH0= 0X00    PCA0CPL0 = 0X01?

回帖(7)

朱红艳

2020-3-11 12:32:57
XBR1要设置PCA连到引脚,EIE1允许PCA中断,需要软件清除中断标志位,你用最简单的方法,点个灯就能观测到是否真的中断了,还有,也没必要一定用PCA0CPH0来计数
举报

杨红

2020-3-11 12:47:56
PCA0CPH0、PCA0CPL0 是发生跳变时的时间值,计跳变个数要用中断,或者用C0、C1的外部计数模式
举报

刘景

2020-3-11 13:01:28
直接用定时器的计算功能
或者PCA时钟源直接设成ECI
举报

王慕涛

2020-3-11 13:19:12
ECI设在P0^2口
直接读PCA0CPL0PCA0CPH0
举报

更多回帖

发帖
×
20
完善资料,
赚取积分