3432|0

141

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

15F104E应用之五:频率检测控制,带延时输出 [复制链接]

/***********************************************************
15F104E应用之五:频率检测控制,带延时输出
P3.2是输入端口,可以是光电,霍尔等等,,
***********************************************************/
#include
#include
#define Fosc (11059200)  //Board cyrstal
sbit     shuiwei = P3^4;//
sbit     baojin = P3^5;//
sbit     dcf = P3^0; //
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//主循环相关变量的定义
unsigned int TCNT0 = 0;
//基准定时器的初始化声明
void Timer0_Init(void);
//////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////
//元器件采样脉冲变量定义
unsigned int OneSecondCounter = 0;
unsigned int pulse_counter = 0;
volatile unsigned int  current_speed = 0;
//采用下降沿计脉冲,初始化函数声明
void INT0_Init(void);
//////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////
//引脚定义
sbit     Pump_Relay = P3^1;
   
//相关变量定义
unsigned int speed_lower_limit =0;
unsigned char speed_lower_time = 0;
unsigned char lower_limit_continue_second = 0;
//相关函数声明
void Pump_Handler(void);
//////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Main Function
////////////////////////////////////////////////////////////////////////////////////////////////////////////
void main(void){
    Timer0_Init();
    INT0_Init();
    speed_lower_limit = 3; //频率设定值,修改此处
speed_lower_time = 3;  //延时输出时间设定,修改此处
    while(1){  
        while(TCNT0<4608){  //5ms base time
            TCNT0 = TH0*256 + TL0;   
        };
        TCNT0 = 0;//clear
        TH0 = 0x00;
        TL0 = 0x00;
        Pump_Handler();
    }
}
void Timer0_Init(void){
    TMOD = (TMOD&0xf0)| 0x01; //Timer0, Time mode, 16-bit.
    TH0 = 0x00; //Load Initial value
    TL0 = 0x00;
    TR0 = 1; //Stratup Timer0
}
//中断服务子程序
void INT0_Handler(void) interrupt IE0_VECTOR using 0{
    ++pulse_counter;   
}
void INT0_Init(void){
    EX0 = 1; //Enable External Interrupt 0
    IT0 = 1; //下降沿有效
EA  = 1; //Enable
}
void Pump_Handler(void){
        if(++OneSecondCounter==200){
            OneSecondCounter = 0;
            current_speed = pulse_counter;
            pulse_counter = 0;  
            //下限的工作条件处理
            if( (current_speed>speed_lower_limit) ||(current_speed==speed_lower_limit) ){
                ++lower_limit_continue_second;
                if(lower_limit_continue_second                     Pump_Relay = 1;
                }
                else if(lower_limit_continue_second==speed_lower_time){
                    Pump_Relay = 0;
                }
                else{
                    if(lower_limit_continue_second>200){ //就是保证继电器正常工作.
                       lower_limit_continue_second = speed_lower_time;
                    }
                    Pump_Relay = 0;
                }   
            }
            else{//if(current_speed                 Pump_Relay = 1;
                lower_limit_continue_second = 1;  //下限的工作.
            }
  }
          if (shuiwei==1&&baojin==1)
    {
             dcf=0;
     }
   else
    {
             dcf=1;
}
}
此帖出自51单片机论坛
点赞 关注
个人签名shop33392572.taobao.com
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
直播时间:3月12日(周三)上午10:00
直播奖励:多功能榨汁机、蓝牙音箱、手机支架

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表