- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
PAGE1
PAGE1
21.低功耗编程技巧
21.1理解低功耗模式
低功耗模式是单片机设计中的一项重要特性,特别是在电池供电的嵌入式系统中。PIC18F46J50系列单片机提供了多种低功耗模式,包括休眠模式(SleepMode)、空闲模式(IdleMode)和低功耗运行模式(Low-PowerRunMode)。这些模式通过减少单片机的活动部分和降低时钟频率来实现功耗的降低。
21.1.1休眠模式(SleepMode)
休眠模式是功耗最低的模式之一,单片机在该模式下几乎停止所有操作,仅保留最基本的时钟源和一些必要的模块。在休眠模式下,CPU和大多数外设都会停止工作,以最大限度地减少功耗。
进入休眠模式
要使PIC18F46J50进入休眠模式,可以通过调用SLEEP()函数来实现。以下是一个简单的示例代码:
#includexc.h
voidmain(void){
//配置引脚和外设
TRISA=0x00;//设置RA为输出
ANSELA=0x00;//关闭RA的模拟功能
LATA=0x01;//设置RA0为高电平
//进入休眠模式
SLEEP();//使单片机进入休眠模式
//从休眠模式唤醒后执行的代码
LATA=0x00;//设置RA0为低电平
while(1);//空循环
}
21.1.2空闲模式(IdleMode)
空闲模式比休眠模式的功耗稍高,但它允许CPU停止工作,而外设继续保持运行。这种模式适用于需要外设(如定时器或通信接口)继续工作的场合。
进入空闲模式
要使PIC18F46J50进入空闲模式,可以通过设置SLEEP位来实现。以下是一个示例代码,展示了如何在定时器中断后进入空闲模式:
#includexc.h
#includepic18f46j50.h
#includeinterrupts.h
//定义定时器0中断服务例程
void__interrupt()Timer0_ISR(void){
if(INTCONbits.TMR0IF){
//清除中断标志
INTCONbits.TMR0IF=0;
//进入空闲模式
SLEEP();
}
}
voidmain(void){
//配置引脚和外设
TRISA=0x00;//设置RA为输出
ANSELA=0x00;//关闭RA的模拟功能
LATA=0x01;//设置RA0为高电平
//配置定时器0
T0CON=0x00;//选择内部时钟源,预分频器1:256
TMR0H=0x00;//初始化定时器0高字节
TMR0L=0x00;//初始化定时器0低字节
INTCONbits.TMR0IE=1;//使能定时器0中断
INTCONbits.GIE=1;//使能全局中断
//主循环
while(1){
//执行一些操作
LATA=0x02;//设置RA1为高电平
__delay_ms(500);//延时500毫秒
LATA=0x00;//设置RA1为低电平
__delay_ms(500);//延时500毫秒
}
}
21.1.3低功耗运行模式(Low-PowerRunMode)
低功耗运行模式允许单片机在较低的时钟频率下运行,从而减少功耗。这种模式适用于需要CPU继续执行任务但功耗要求较低的场合。
设置低功耗运行模式
要使PIC18F46J50在低功耗运行模式下工作,可以通过配置OSCCON寄存器来选择较低的时钟源。以下是一个示例代码,展示了如何设置低功耗运行模式:
#includexc.h
#includepic18f46j50.h
voidmain(void){
//配置引脚和外设
TRISA=0x00;//设置RA为输出
ANSELA=0x00;//关闭RA的模拟功能
LATA=0x01;//设置RA0为高电平
您可能关注的文档
- Microchip 系列:PIC18F46J50 系列 (低功耗)_2.PIC18F46J50系列概述.docx
- Microchip 系列:PIC18F46J50 系列 (低功耗)_3.低功耗特性与设计.docx
- Microchip 系列:PIC18F46J50 系列 (低功耗)_4.硬件结构与引脚配置.docx
- Microchip 系列:PIC18F46J50 系列 (低功耗)_5.内存与存储器结构.docx
- Microchip 系列:PIC18F46J50 系列 (低功耗)_6.时钟系统.docx
- Microchip 系列:PIC18F46J50 系列 (低功耗)_7.电源管理.docx
- Microchip 系列:PIC18F46J50 系列 (低功耗)_8.复位与低功耗模式.docx
- Microchip 系列:PIC18F46J50 系列 (低功耗)_9.外设功能.docx
- Microchip 系列:PIC18F46J50 系列 (低功耗)_10.ADC模块.docx
- Microchip 系列:PIC18F46J50 系列 (低功耗)_11.DAC模块.docx
文档评论(0)