简介:在有些应用场合下,CPU只需间断性工作或对外部事件作出处理,平时处于待机状态。PIC16C5X单片机有一种节能方式,睡眠(SLEEP)方式,在这种状态中,振荡驱动器停止工作, I/O口保持执行SLEEP指令前的状态,从而大大降低系统功耗。由于PIC16C5X单片机无中断功能,要退出睡眠方式,只有两种方法:
(1)“看门狗”(WDT)溢出。
(2)在复位脚加低电平,而使芯片复位。
本文采用第二种方法。在图1给出的例子中,PIC16C5X平时处于睡眠态,当任意一键按下时,将它从睡眠状态中唤醒,进行键盘处理。为便于说明,在本例中,SW1按下时,点亮,如下图所示
绿灯;当SW2按下时,红灯亮。读者可按实际需要编写处理程序,参见图2。
在进入睡眠态前,将键扫描输出线SCAN1和SCAN2置为低电平。这样,当进入睡眠状后,无键按下时,电容C充电充分,使PIC16C5X单片机复位脚保持着高电平。一旦有键按下,C通过电阻R2或R3放电,使C上的电压快速下降(大约1ms),从而将复位脚拉为低电平,迫使PIC16C5X退出睡眠态而进入复位。复位时,SCAN1和SCAN2自动从输出态变为输入态(高阻态),C的放电回路被阻断,VCC经电阻R1对C充电至高电平。
需注意的是,RC 值要选择恰当,使充放电周期小于PIC16C5X的复位时间(大约18ms)。更远远小于键按下的最小时间(大约50--100ms)。复位结束后,在程序中,每隔20ms将SCAN1和SCAN2置低电平一次以采样键值。为避免电容放电时间过长,将拉低,再次造成复位,每次扫描即SCAN1或SCAN2 为低电平的时间大约为10us。当键处理程序完成后,程序对键盘循环扫描直至键释放。然后将SCAN1和SCAN2输出置成低电平,并重新进入睡眠状态。 R4-R8主要用于防止C放电而可能对芯片造成的伤害。工作时序见图3所示。
关键字:PIC16C5X 单片机 睡眠状态 退出方法
引用地址:
PIC16C5X 单片机睡眠状态的退出方法
推荐阅读最新更新时间:2024-11-11 03:06
基于PIC单片机的智能目标跟踪系统设计方案
摘 要: 通过借鉴嵌入式系统在电子技术、信号处理以及计算机等领域应用的成功经验,在分析目标检测与跟踪算法的基础上,将目标检测与跟踪算法与嵌入式技术相结合,设计一种基于嵌入式PIC32单片机的目标检测与跟踪系统,可以实现目标检测跟踪系统的小型化,智能化,并以具体飞行目标为例进行了目标的识别和跟踪。 研究目的 随着现代社会对军用和民用设备需求的不断扩大及要求的不断提高,运动目标的识别和跟踪技术已经迅速发展成为现代信息处理领域中一项非常重要的技术,也是无人机野外战场侦察技术中的重点和难点,并在许多领域内发挥着不可替代的作用。目前,基于PC 机的目标检测与跟踪技术已趋于成熟,但其在嵌入式平台的应用研究还处于初级阶段。由于嵌入式系统具有
[单片机]
51单片机应用之无线通讯模块NRF24L01+
本教程关于NRF24L01+的内容十分详细,对于大家的学习和调试及其有帮助 内含详细教程: 单片机源程序如下: 接下来我们写发送程序: //********************************** // NRF24L01+模块发射程序 // 用8个LED调试 // Txz001 2012.05.16 //********************************** #include reg52.h typedef unsigned char uchar; //将无符号字节类型重定义为uchar typedef unsigned int uint; //将无符号整数类型重定义为Uint
[单片机]
STM32F3 “模数”单片机
STM32 F3系列是ST ARM Cortex-M4微控制器产品组合的入门级产品: 性能表现比STM32F1 系列更加出色,价格却灰常平易近人~~~ STM32F3系列支持: DSP指令 内置浮点单元 (FPU) 运行频率高达72MHz 快速12位5 MSPS和精密16位sigma-deltaADC、可编程增益放大器(4档增益、精确度为1%)、快速50 ns比较器和工作频率为144 MHz的多功能时钟控制单元 搭配ST独有的且基于内核耦合存储器(CCM-SRAM) 的程序加速 (Routine Booster) 功能,使电机控制等例行程序的执行速度可比原来提升43% 嵌入式DSC设计创新,玩转“模数”世界,有图有真相! ST
[单片机]
51单片机短时间延时
应用单片机的时候,经常会遇到需要短时间延时的情况。需要的延时时间很短,一般都是几十到几百微妙(us)。有时候还需要很高的精度,比如用单片机驱动 DS18B20的时候,误差容许的范围在十几us以内,不然很容易出错。这种情况下,用计时器往往有点小题大做。而在极端的情况下,计时器甚至已经全部派 上了别的用途。这时就需要我们另想别的办法了。 以前用汇编语言写单片机程序的时候,这个问题还是相对容易解决的。比如用的是12MHz晶振的51,打算延时20us,只要用下面的代码,就可以满足一般的需要: mov r0, #09h loop: djnz r0, loop 51 单片机的指令周期是晶振频率的1/12,也就是1us一个周期。mov r0, #
[单片机]
破解单片机的常用方法及其应对策略
1引言 单片机(Microcontroller)一般都有内部ROM/EEPROM/FLASH供用户存放程序。为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就是所谓拷贝保护或者说锁定功能。事实上,这样的保护措施很脆弱,很容易被破解。单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序。因此,作为电子产品的设计工程师非常有必要了解当前单片机攻击的最新技术,做到知己知彼,心中有数,才能有效防止自己花费大量金钱和时间辛辛
[单片机]
单片机教程实战2 蜂鸣器唱歌
利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机的基本发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。 单片机的基本发音实验 我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。 例如,要产生200Hz的音频信号,按图1接入喇叭(若属临时实验,也可将喇叭直接接在P1口线上),实验程序为: 其中子程序DEL为延时子程序,当R3为1时,延时时间约为20us,R3中存放延时常数,对200
[单片机]
51单片机驱动数码管(LED)时的注意事项
单片机输出驱动分为高电平驱动和低电平驱动两种方式。 所谓高电平驱动,就是端口输出高电平时的驱动能力,所谓低电平驱动,就是端口输出低电平时的驱动能力,当单片机输出高电平时,其驱动能力实际上是靠端口的上拉电阻来驱动的,实际测试表明,51单片机的上拉电阻的阻值在 330K左右,也就是说如果靠高电平驱动,本质上就是靠330K的上拉电阻来提供电流的,当然该电流是非常小的,小的甚至连发光二极管也难以点亮,如果要保证LED正常发光,必须要外接一个1K左右的上拉电阻,如果是一个led还好,要是10个、20个led的话,就要接10个、20个1K的上拉电阻,接电阻的本身是可以的,问题是接了上拉电阻以后,每当端口变为低电平0的时候,
[单片机]
【GD32 MCU 入门教程】一、GD32 MCU 开发环境搭建(2)使用 IAR 开发 GD32
IAR版本众多,版本之间的兼容性并不好,如果初次使用建议安装7.3以上的版本,安装好IAR以后再根据该文档来添加GD的器件型号,进行相关的debug工作。 2.1 在IAR中添加GD32 MCU Device 2.1.1 从官网上下载相应的GD32系列插件。 下面以GD32F30x系列为例,下载插件IAR_GD32F30x_ADDON.1.0.0.exe: 2.1.2 运行IAR_GD32F30x_ADDON.1.0.0.exe,单击start开始安装插件。 2.1.3 安装成功后单击Finish,结束插件安装。 2.2 在IAR中编译调试GD32 在上一小节中我们已经添加了GD32F30x系列的插件,这一小节我们介绍
[单片机]