单片机检测矩形波

[复制链接]
 楼主| jiajs 发表于 2014-4-3 18:42 | 显示全部楼层 |阅读模式
我有一个传感器输出3.3V,100ms脉宽的矩形波,我想用单片机检测这个矩形波的高低电平变化,每次检测到高电平就让计数加1,怎么用C语言实现呢?
zhanghqi 发表于 2014-4-3 18:42 | 显示全部楼层
调用间隙小于100ms
bit b;
uchar counter;

void test(void)
{
    bit b2;

    b2 = SENSOR;
    if(b2!= b){
        counter++;
    }
    b = b2;
}
 楼主| jiajs 发表于 2014-4-3 18:43 | 显示全部楼层
谢谢你,但是我想问为什么没有用到while循环啊?这样监测完一次电平变化后不就停下了吗
zhaoxqi 发表于 2014-4-3 18:44 | 显示全部楼层
循环调用即可
那是你的事
huangchui 发表于 2014-4-3 18:45 | 显示全部楼层
在while语句中调用就可以了

#define          P_Signal        传感器待检测IO信号
bit        StatusCur;
unsigned int  RSignalCount;

void SignalChk(void)
{
         if(StatusCur!=P_Signal)
         {
            StatusCur=P_Signal;
            if(StatusCur==1)
                 {    RSignalCount++;  
                      .......        
                 }
         }
}
//-----------------------------------------
void main(void)
{
         .....
         while(1)
         {
                 ...your other code
                 SignalChk();
         }
}
zhenykun 发表于 2014-4-3 18:45 | 显示全部楼层
查询,中断,定时都可以用上.还要注意滤除干扰.
zhanghqi 发表于 2014-4-3 18:48 | 显示全部楼层
你这要求不高,完全可以查询处理
zhenykun 发表于 2014-4-3 18:48 | 显示全部楼层
是啊,楼主多虑了
 楼主| jiajs 发表于 2014-4-3 18:49 | 显示全部楼层
好的,我明白了
 楼主| jiajs 发表于 2014-4-3 18:49 | 显示全部楼层
先结贴了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

940

主题

11975

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部

940

主题

11975

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部