码迷,mamicode.com
首页 > 其他好文 > 详细

【HC89S003F4开发板】 4端口消抖

时间:2019-08-18 10:04:39      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:tor   不能   图片   oid   状态改变   int   err   计算   因此   

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只一次亮或灭。

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

技术图片

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

技术图片

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

【HC89S003F4开发板】 4端口消抖

标签:tor   不能   图片   oid   状态改变   int   err   计算   因此   

原文地址:https://www.cnblogs.com/yywBlogW/p/11371394.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!