受控计数,做过的兄弟进来指点一二

heshu   2007-3-22 07:58 楼主
想作一个频率计,用INT0控制闸门,用T0计数,就是T0受控INT0计数,工作方式1,但是在单片机的程序中在那里可以收到计数器的值,T0受控于INT0后,INT0是否还可以开中断?那位有相关的例子,最好是C51的,麻烦指点一下,兄弟初学。拜托拜托

回复评论 (5)

直接求代码的?晕

这个控制逻辑并不是很复杂哈!!
点赞  2007-3-22 09:26
我手边的书找不到类似的例子,非商业用途,只好看看那位兄弟能帮忙了。分不够可以再加
点赞  2007-3-22 10:14
不知道你用的什么单片机.给个思路.
你可以在中断到来的时刻开定时器,也就是在INT0中断程序中开定时器T0,INT0下次中断在来得时候读计时变量(该变量是与T0计时有关的变量)
点赞  2007-3-23 16:36
完全可以,比如读脉宽
点赞  2007-3-23 17:14
给一个框架,大伙一起看看能行不...不过你没有确定的时间轴,你怎么计算频率呢,我在想这个问题

state //INT0状态机,只有0和1两种状态.分别表示开始和结束

void INT0()
{
    state = !state;
    switch (state)
    {
        case BEGIN:
        {
            OpenT1();//打开T1开始计数,同时做T1相关的配置什么的,具体就是环境的初始化
            break;   
        }   
        case END:
        {
            Filter(ClostT1());//关毕T1同时返回计数值,相关的运算也隐藏里面,放进数字滤波器,
            break;
        }
        default:
            DEBUG("ERROE");//跑飞了!!!
    }   
}

Filter();//自己建立的数字滤波机制,推荐使用队列方式

getFrequency(int Times);//CPU等待方式,传入次数,表示取最近多少次取到的频率,经由数字滤波器产生.
点赞  2007-3-23 22:25
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复