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

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

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

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

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

时间: 2024-10-11 15:11:22

【HC89S003F4开发板】 4端口消抖的相关文章

【HC89S003F4开发板】 6crc校验

HC89S003F4开发板crc校验 前言 第一次用有带crc的mcu 使用资料自带的demo @实现效果 通过PC向MCU发送5个8位数据,MCU返回CRC校验值 void main() { /************************************系统初始化****************************************/ WDTCCR = 0x00; //关闭看门狗 //本例程为方便测试关闭看门狗,实际使用中,建议客户打开看门狗,详见WDT复位例程 CLKS

【HC89S003F4开发板】 2调度器

HC89S003F4开发板调度器调试 一.前言 逛论坛看到有人给HC89做了调度器,调度部分直接操作堆栈的. 下载链接 下载下来调试看看. 二.用户代码 @实现效果 编译后led灯闪烁 #include "HC51SRTOS.h" #include "math.h" //#define LED_RED P0_0 // 将P20设置为绿灯 sbit LED_RED = P0^0; sbit LED_GREEN = P0^1; /******************定义

【HC89S003F4开发板】9ASM写定时器1

HC89S003F4开发板ASM写定时器1 一.实现过程 1.外部寄存器设置 扩展 XSFR 采用和 XRAM 同样的访问方式,使用 MOVX A, @DPTR 和 MOVX @DPTR ,A 来进行读写. WDTCCR EQU 0FEA0H CLR A MOV DPTR,#WDTCCR MOVX @DPTR,A ; 关闭看门狗 2.设置定时器1 定时器计算方法 公式: 65536 - ((1/1000) / (1/(Fosc / Timer分频系数))) Fosc=16000000,Timer

【HC89S003F4开发板】 10汇编指令

HC89S003F4开发板汇编指令 一.数据传递类指令 MOV.MOVC.MOVX 1.MOV,用于片内数据存储器中的数据传递指令中. 2.MOVC是与ROM之间的数据传送,而MOVX是与外部RAM数据传送: 3.MOV就是移动的意思,C就是Code,代码的意思,X就是eXternal,外部的意思 MOVC就是读代码存储器,MOVX就是读写外部存储器,即外部RAM : 4.MOVC是读取ROM中的数据,只能读不能写(一般来说主要是用来读取常量或常量表) MOVX是读写外部扩展的RAM和扩展的IO

MiS603开发板 第五章 按钮去抖实验

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第五章 按钮去抖实验 按键的消抖,是指按键在闭合或松开的瞬间伴随着一连串的抖动,这样的抖动将直接影响设计系统的稳定性

专业监控CORTEX-A8开发板——TQ210V6底板端口参数

天嵌科技公司将在国庆推出cortex-a8系列的最新开发板——TQ210V6嵌入式开发板.TQ210V6的核心板参数已经提前公布,现公布完善的底板参数与端口,为嵌入式迷与厂商的研发打好基础. 众所周知,天嵌科技开发板的底板以稳定与多兼容著名,新出的TQ210V6开发板也一样,端口基本与TQ210之前的TQ210v4类似,兼容市面上大部分模块功能.TQ210V6开发板的底板配备USB host,串口,SDIO WIFI,SD卡,红外,温度传感器,SPI,Camera,Jtag,HDMI等多种接口.

TQ210v6开发板——工业音频端口编解码详细解析(图解)

TQ210V6开发板作为天嵌2014年隆重推出的最新210开发板,其端口设计对比以前的210开发板有一定的提升.下面,小编将为大家详细解析TQ210V6开发板的音频端口的编解码设计,还附有详细的音频接口详细解析图. TQ210v6的I2S音频电路采用Wolfson Microelectronics 音频转换芯片WM8960,WM8960是一款低功耗.高质量的立体编码解码器,专为便携式数字音频应用设计. WM8960集成了一个完整的麦克风接口和一个立体声耳机驱动器,由于不再需要单独的麦克风.扬声器

从简单的按键消抖开始

笔者正在接受FPGA的线上培训,以接近尾声,就水平来说算是入门.设计时发现做些设计总结非常重要,可以帮助自己理清思路,同时也能得到很好的复习,便于日后回顾.之前一直在做altera FPGA的相关学习,对xilinx还不是很熟悉,借着这个契机,将比较基础常用的设计在VIVADO开发环境中过一遍,对我来说是个不错的选择.废话不多说,进入今天的正题. 众所周知,硬件按键都存在机械抖动.所以一次人为按下的动作会触发数次按键按下的行为.所谓"按键消抖"模块的功能就是将抖动滤除掉,保证对按键状态

09A-独立按键消抖实验01——小梅哥FPGA设计思想与验证方法视频教程配套文档

芯航线--普利斯队长精心奉献 ? 实验目的: 1.复习状态机的设计思想并以此为基础实现按键消抖 2.单bit异步信号同步化以及边沿检测 3.在激励文件中学会使用随机数发生函数$random 4.仿真模型的概念 实验平台:芯航线FPGA核心板 实验原理: ????按键在电子设计中使用的最多,从复位到控制设置均可以看到其身影.现在按键的功能也种类也越来越多,例如多向按键.自锁按键.薄膜按键等.普通按键其硬件示意图如图9-1所示. 图9-1 按键示意图 芯航线开发板所载的为两脚贴片按键,分别位于开发板