CL = 0 //复位PCA计数寄存器
CH = 0
CMOD = 0x02 //设置PCA时钟源为sysclock/2,禁止PCA定时器溢出中断
value = T100KHz //计算PCA输出100K方波应设定的值
CCAP0L = value //将值得低8位赋给CCAP0L
CCAP0H = value >>8 //高8位赋给CCAP0H
value += T100KHz //累加,为下一次赋值做好准备。//这个地方绝对不能注释掉,产生方波就靠它了。腔扰
CCAPM0 = 0x4d //PCA模块1为16位定时器模式,同时反转CEX0(P1.3)口
CR = 1 //PCA定时器开始工作
EA=1 //开中断
========================================================
void pca_isr()interrupt 7 using 1
{
CCF0=0
CCAP0L=value
CCAP0H=value>>8
//value +=T100KHZ//累加,这个地方也绝对不能注释掉。要产生方消圆如波,拿启就得每次在原值的基础上加上同样的值。
}
提供个思路给你局扮计源悉数器 模式
将脉冲接入定时器0的GATE 和中断0
将脉冲反向接入定时器1的GATE和中断1
让后在中断0里面读取 定时器1的计数器 并雹腊乎清零
让后在中断1里面读取 定时器0的计数器 并清零
这样
定时器1的记数就是 正脉宽
定时器0的记数就是负 正脉宽
假设检测的是高电平的脉冲,基本的思路就是首先等待上升沿的到来,开始计时,然后等到下降饥毕沿到来的时候,停止计时就可以知道这个高电平的脉冲时间。检测上升沿和下降沿,你可以考虑,在绝磨循环里面直接判断电平是否有变烂宏芹化,或者是利用外部中断进行判断。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)