打印

IO口监测问题

[复制链接]
1938|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lium|  楼主 | 2011-5-29 22:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我有一个传感器输出3.3V,100ms脉宽的矩形波,我想用单片机检测这个矩形波的高低电平变化,每次检测到高电平就让计数加1,怎么用C语言实现呢?
沙发
guoyt| | 2011-5-29 23:00 | 只看该作者
调用间隙小于100ms
bit b;
uchar counter;

void test(void)
{
    bit b2;

    b2 = SENSOR;
    if(b2!= b){
        counter++;
    }
    b = b2;
}

使用特权

评论回复
板凳
lium|  楼主 | 2011-5-29 23:16 | 只看该作者
谢谢你,但是我想问为什么没有用到while循环啊?这样监测完一次电平变化后不就停下了吗

使用特权

评论回复
地板
guoyt| | 2011-5-29 23:33 | 只看该作者
循环调用即可
那是你的事

使用特权

评论回复
5
老鱼探戈| | 2011-5-30 09:48 | 只看该作者
在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();
        }
}

使用特权

评论回复
6
老鱼探戈| | 2011-5-30 09:48 | 只看该作者
本帖最后由 老鱼探戈 于 2011-5-30 09:55 编辑

不小心发了两遍。。把这贴的内容删了...

使用特权

评论回复
7
lium|  楼主 | 2011-5-30 13:25 | 只看该作者
多谢,呵呵

使用特权

评论回复
8
zhuww| | 2011-5-30 13:49 | 只看该作者
查询,中断,定时都可以用上.还要注意滤除干扰.

使用特权

评论回复
9
yufe| | 2011-5-30 13:51 | 只看该作者
你这要求不高,完全可以查询处理

使用特权

评论回复
10
lium|  楼主 | 2011-5-30 14:18 | 只看该作者
好的,我明白了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

915

主题

9578

帖子

3

粉丝