【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只一次亮或灭。
四、进入掉电模式,消抖功能实现的原因
由此可以看出消抖功能电路是用系统时钟作为基准,当进入掉电模式后系统时钟会关闭,因此消抖功能失效。
使用空闲模式,可以使用消抖功能,但同时功耗和时钟成正比,需要权衡利弊。
【HC89S003F4开发板】 4端口消抖的更多相关文章
- 【HC89S003F4开发板】 1环境搭建
HC89S003F4开发板环境搭建 一.概述 芯圣电子做活动,一个开发板只用一块钱,买过来玩玩.︿( ̄︶ ̄)︿ 全套资料可以在论坛或qq群里下载.总之先安装个环境先. 二.安装Keil C51 作为增 ...
- 【HC89S003F4开发板】 10汇编指令
HC89S003F4开发板汇编指令 一.数据传递类指令 MOV.MOVC.MOVX 1.MOV,用于片内数据存储器中的数据传递指令中. 2.MOVC是与ROM之间的数据传送,而MOVX是与外部RAM数 ...
- 【HC89S003F4开发板】9ASM写定时器1
HC89S003F4开发板ASM写定时器1 一.实现过程 1.外部寄存器设置 扩展 XSFR 采用和 XRAM 同样的访问方式,使用 MOVX A, @DPTR 和 MOVX @DPTR ,A 来进行 ...
- 【HC89S003F4开发板】 8c转义成汇编工程
HC89S003F4开发板建立汇编工程 选择编译文件 @选用开发板闪灯例程,将例程删除多余的注释,后面生成的文件会更直观. #define ALLOCATE_EXTERN #include " ...
- 【HC89S003F4开发板】 7ASM&C混合编程
HC89S003F4开发板ASM&C混合编程 一.前言 在配套资料里有实现ASM&C混合编程的说明文档,这里来实现这个功能. 二.实现ASM&C混合编程 1.打开 Keil 工 ...
- 【HC89S003F4开发板】 2调度器
HC89S003F4开发板调度器调试 一.前言 逛论坛看到有人给HC89做了调度器,调度部分直接操作堆栈的. 下载链接 下载下来调试看看. 二.用户代码 @实现效果 编译后led灯闪烁 #includ ...
- 【HC89S003F4开发板】 6crc校验
HC89S003F4开发板crc校验 前言 第一次用有带crc的mcu 使用资料自带的demo @实现效果 通过PC向MCU发送5个8位数据,MCU返回CRC校验值 void main() { /** ...
- 【HC89S003F4开发板】 3串口调试
HC89S003F4开发板串口调试 使用资料自带的demo 主程序 /************************************系统初始化************************ ...
- 01.arduino uno开发板入门
01.所需工具 -Ariduino uno开发板一块 -对应的usb数据线 -杜邦线若干 -一些用以测试的电子元器件 02.安装arduino IDE 打开官网链接https://www.arduin ...
随机推荐
- mui openWindow方法详细说明
mui.openWindow({ url: 'xxx.html', //String类型,要打开的界面的地址 id: 'id', //String类型,要打开的界面的id styles: { //We ...
- 清理Windows.edb
解决Windows.edb文件巨大的windows 10问题的另一个快速解决方法是删除Windows.edb文件. 步骤1:在任务管理器中终止SearchIndexer.exe --按Ctrl + A ...
- mysql批量更新update中的锁表机制
mysql的行锁是通过索引加载的,即行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描,行锁则无法实现,取而代之的是表锁. CREATE TABLE SIMPLE_USER( I ...
- 多层If语句 和 表格驱动 的对比
网文提到表格驱动,总喜欢拿一层if做例子,然而这样未免也太简单. 下文是三层缩进的if和表驱动比较,大家可自行判断优劣. 业务是这样的,某景点分旺季票价和淡季票价,淡季票为旺季的一半,15岁以下孩子再 ...
- web常用服务架构
架构风格就是一种项目的设计模式.常见的架构风格有基于客户端与服务端的.基于组件模型的(EJB).分层架构(MVC).面向服务架构(SOA)等. 一.单体架构 单体架构也称为单体系统或单体应用,就是一种 ...
- 教你玩转Linux—用户账号的管理
用户账号的管理工作主要涉及到用户账号的添加.修改和删除.添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号.用户组.主目录和登录Shell等资源.刚添加的账号是被锁定的,无法使用. 1.添 ...
- C++ STL排序问题
/* stl排序 */ #include <iostream> #include <map> #include <vector> #include <list ...
- linux后台启动springboot并指定日志文件名称
如果用nohup启动jar包的话,默认的日志文件就是nohup.out,那么如果启动多个jar包的话,看日志文件就麻烦了,因为他们都会写入到nohup.out文件中. 所以我们来指定一下不同jar包的 ...
- ES6深入浅出-13 Proxy 与 Reflect-3.Vue 3 将用 Proxy 改写
如果说想打印出来年龄,但是有没有年龄的这个key值 把创建年龄写在一个按钮上面 通过一个事件来做. 点击创建年龄的按钮,给obj.age设置为18,但是页面的双向绑定并没有显示出来. 因为不响应式,为 ...
- URL相关的工具类
package com.opslab.util.web; import com.opslab.util.CharUtil;import com.opslab.util.CharsetUtil;impo ...