zoukankan      html  css  js  c++  java
  • 【HC89S003F4开发板】 4端口消抖

    HC89S003F4开发板端口消抖

    一、前言

    看到资料里有中断消抖的例子,因为以前项目里有遇到高频干扰频繁退出休眠的情况,所以好奇用这个配置能不能解决。

    二、对demo进行修改

    • @实现效果 P01设置为下降沿中断,每进一次中断后唤醒掉电模式,LED1状态改变一次
    void main()
    {
    /************************************系统初始化****************************************/
    	WDTCCR = 0x00;						//关闭看门狗
    		                                //本例程为方便测试关闭看门狗,实际使用中,建议客户打开看门狗,详见WDT复位例程	
    	CLKSWR = 0x51;						//选择内部高频RC为系统时钟,内部高频RC 2分频,Fosc=16MHz
    	CLKDIV = 0x01;						//Fosc 1分频得到Fcpu,Fcpu=16MHz 
    /**********************************相关配置初始化**************************************/
    	P0M0 = P0M0&0xF0|0x08;		//P00设置为推挽输出
    /**********************************INT1配置初始化**************************************/
    	FREQ_CLK = 0x10;					//本例程涉及掉电模式,需指明当前系统时钟	
    	P0M0 = P0M0&0x0F|0x60;		//P01设置为上拉带施密特输入
    	P01DBC = 0xFF;						//设置消抖时间
    	//消抖时间计算
    	//分频系数*Tosc*P0xDBCT[5:0]-Tosc<消抖时间<分频系数*Tosc*(P0xDBCT[5:0]+1)-Tosc
    	//		  64*0.0625us*63-0.0625us<消抖时间<64*0.0625us*(63+1)-0.0625us
    	//					   251.9375us<消抖时间<255.9375us
    	PITS0 |= 0x04;						//INT1下降沿
    	IE |= 0x04;							  //打开INT1中断
    	EA = 1;								    //打开总中断
    	
    	while(1)
    	{
    		PCON |= 0x02;					  //进入掉电模式	
    	} 
    }
    
    /***************************************************************************************
      * @说明  	INT1中断服务函数
      *	@参数	无
      * @返回值 无
      * @注		无
    ***************************************************************************************/
    void INT1_Rpt() interrupt INT1_VECTOR 
    {
    	PINTF0 &=~ 0x02;					//清除INT1中断标志位
    	P0_0 =~ P0_0;						  //P00翻转					
    }
    
    

    三、实现效果

    • P0.1引脚用线引出,线另一端刮划GND,发现每次刮划,led就会多次闪烁。
    • 注释'PCON |= 0x02;',能正常消抖,每次刮划,led只一次亮或灭。

    四、进入掉电模式,消抖功能实现的原因

    image

    由此可以看出消抖功能电路是用系统时钟作为基准,当进入掉电模式后系统时钟会关闭,因此消抖功能失效。

    image

    使用空闲模式,可以使用消抖功能,但同时功耗和时钟成正比,需要权衡利弊。

  • 相关阅读:
    CentOS7.2中安装MongoDB
    django 面试题
    python pandas库——pivot使用心得
    归并排序
    python实现归并排序,归并排序的详细分析
    二分法查找
    二叉树的遍历
    RabbitMQ(python实现)学习之一:简单两点传输“Hello World”的实现
    邻接表存储图,DFS遍历图的java代码实现
    五、python使用模块
  • 原文地址:https://www.cnblogs.com/yywBlogW/p/11371394.html
Copyright © 2011-2022 走看看