chuandaoxy 发表于 2021-4-23 08:24

在c8051f里对应那个寄存器

最近在调试PCA,在STC里面是
CL = 0;
CH = 0;      //复位PCA寄存器

对应的c8051f里的是哪个寄存器?

ayb_ice 发表于 2021-4-23 08:40

每家模块的设计可能不一样,对应也没有太大意义
应该就是PCA计数的高低寄存器

chuandaoxy 发表于 2021-4-23 09:54

ayb_ice 发表于 2021-4-23 08:40
每家模块的设计可能不一样,对应也没有太大意义
应该就是PCA计数的高低寄存器
...

但是出现一个问题,stc的代码测量脉宽是正常的,转到c8051f就不对了,老在变化

下面的代码在stc没有问题,c8051F总是变化

PCA_interrupt() interrupt 6 using 1

{
    CCF0                     = 0;
    High.U8               = CCAP0H;
    High.U8               = CCAP0L;

    CCP_Bufer = High.U16;            //把脉宽时间保存到数组里面

   
   
    CL = 0;
    CH = 0;                                          //复位PCA寄存器
}

ayb_ice 发表于 2021-4-23 10:20

chuandaoxy 发表于 2021-4-23 09:54
但是出现一个问题,stc的代码测量脉宽是正常的,转到c8051f就不对了,老在变化

下面的代码在stc没有问题 ...

要飞读才可以,你去读的时候,计数器也在走,可能会出错误的数据,

先读高,再读低,再读高,如果高没有变化则是正确的,否则重复这个过程直到正确,

有些MCU有硬件功能,可以自动飞读(不需要重复这个过程),但对读取顺序有要求,需要参考手册

飞读是个基本概念,可以百度下

ayb_ice 发表于 2021-4-23 10:25

RT:

cainiao518 发表于 2021-4-23 10:33

chuandaoxy 发表于 2021-4-23 09:54
但是出现一个问题,stc的代码测量脉宽是正常的,转到c8051f就不对了,老在变化

下面的代码在stc没有问题 ...

仿真一下看看问题在哪

lyjian 发表于 2021-4-23 20:46

ayb_ice 发表于 2021-4-23 10:20
要飞读才可以,你去读的时候,计数器也在走,可能会出错误的数据,

先读高,再读低,再读高,如果高没有 ...

不是所有芯片都需要这样干。

lyjian 发表于 2021-4-23 21:47

这种问题不是该自己看规格书吗?
页: [1]
查看完整版本: 在c8051f里对应那个寄存器