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

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

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

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

最新文章

  1. FFT 快速傅里叶变换浅析
  2. Sass-也许你想和CSS玩耍起来(下篇)
  3. webstorm使用技巧
  4. RecyclerView使用总结
  5. Linux高级编程--11.信号
  6. Git版本控制工具(三)----远程仓库GitHub的使用
  7. ecshop 改变sitemap.xml的位置
  8. (转)c语言_链表实例讲解(两个经典例子)
  9. HW4.4
  10. 第一个Spring MVC程序
  11. android开发_SimpleAdapter适配器
  12. git常用命令学习(转)
  13. 分区表在安装系统(MBR)丢失或损坏
  14. 数据的软删除-管理员的CRUD
  15. 如何量化考核技术人的KPI?
  16. 20175314 《Java程序设计》第九周学习总结
  17. linux运维工程师面试题收集
  18. latex之矩阵表示
  19. 【转】1.2 CDN的基本工作过程
  20. dwz 刷新当前navtab

热门文章

  1. 2019软工实践_Alpha(3/6)
  2. 【转】python requests库添加自定义cookie的方法
  3. [JDBC]查询结果集把字段名和字段值一起竖向输出
  4. REDIS中加锁和解锁问题
  5. 浏览器cookie数 跨站请求伪造 欧盟Cookie指令
  6. 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_38、源码编译安装Redis4.x
  7. 移动端IM系统的协议选型:UDP还是TCP?(转)
  8. ZingChart 隐藏数据点
  9. ISO/IEC 9899:2011 条款6.5.6——加法操作符
  10. Labelme数据转mask_rcnn数据格式