我做了一个测脉冲个数的小程序,此段程序放在定时器T0中
3个变量 PF_IN是外部脉冲输入输入引脚
PUL是标志位
count是脉冲个数

if(PF_IN==0) PUL=1; //如果是低电平,标志位置1
if(PUL&PF_IN) //如果上升沿到来,脉冲数加1
{
count++;
PUL=0;<

展开全部
收起
3回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • 杨承俊

    17人对此回答表示赞同

    你的定时器中断多长时间一次?脉冲频率是多少?

    你把判定程序放在定时器中断里面,那么每次定时到了才判定的。如果脉冲频率太快会丢失的。

    建议用外部中断。中断一定要用边沿触发,比较准确的。

    /*-----------------------------
    外部中断0处理程序
    --------------------------------*/
    void INT0_P
    展开
    17
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 南风

    10人对此回答表示赞同

    建议采用中断来接收外部的脉冲数,采用边沿触发中断。有中断时,在中断程序中加1。

    当然你这种方法也可以用,但
    if(PUL&PF_IN) //如果上升沿到来,脉冲数加1
    改为 if(PUL&&PF_IN) 更好些,这只是建议。
    展开
    10
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 兵荒马乱

    9人对此回答表示赞同

    你这种计量方式非常不准确,即使成功做出来,误差也很大,建议用外部中断处理,至于出现数据量跳动的问题,可能是由于你的电路板问题造成信号的扰动,可以在外部中断的处理函数中再进行判断处理
    一般判断处理是进入中断,延时一个合理的时间,一般几个微秒,然后再判断一下此引脚的电平,如果满足中断,则进入处理程序,如果是干扰则跳出中断
    展开
    9
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部