stc单片机PCA高速输出脉冲程序

stc单片机PCA高速输出脉冲程序,第1张

CCON = 0//初始化PCA控制寄存器,PCA定时器停止,清除CF标志,清除模块中断标志

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的记数就是负 正脉宽

假设检测的是高电平的脉冲,基本的思路就是首先等待上升沿的到来,开始计时,然后等到下降饥毕沿到来的时候,停止计时就可以知道这个高电平的脉冲时间。

检测上升沿和下降沿,你可以考虑,在绝磨循环里面直接判断电平是否有变烂宏芹化,或者是利用外部中断进行判断。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12299766.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存