首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

AVR单片机电源治理_睡眠模式(低功耗模式)实验(基于ATmega8)

2012-12-15 
AVR单片机电源管理_睡眠模式(低功耗模式)实验(基于ATmega8)先看芯片手册吧(偷下懒,直接上传截图了)。这是对

AVR单片机电源管理_睡眠模式(低功耗模式)实验(基于ATmega8)

先看芯片手册吧(偷下懒,直接上传截图了)。

AVR单片机电源治理_睡眠模式(低功耗模式)实验(基于ATmega8)

这是对电源及睡眠模式的一个简述,并介绍了进入模式时和唤醒之后的处理(第二段一定好好吸收哦)。

AVR单片机电源治理_睡眠模式(低功耗模式)实验(基于ATmega8)

这是控制寄存器的设定进入不同模式的设定,根据需要进入不同的模式。

下面两张图片是对每个SLEEP模式的详细说明。

AVR单片机电源治理_睡眠模式(低功耗模式)实验(基于ATmega8)

AVR单片机电源治理_睡眠模式(低功耗模式)实验(基于ATmega8)

看到这里,也算了解了。

下面发段代码:

 

/*********************************************************** 文  件  名 : main.c * 描      述 : 低功耗模式的探究* 创  建  人 : 夏玉峰  * 单      位 : 佳木斯大学 信息电子技术学院 电子协会 * 日      期 : 2012.12.9* 开 发 环 境: 开发环境:ICCAVR 7.22    硬件平台:ATmega8   晶    振:8MHZ* 邮      箱 : xiayufeng90520@163.com* 版  本  号 : 1.00**********************************************************/#include<iom8v.h>#include<macros.h>#include"xiaofeng_delay.h"/*******************************************函数 名称: Port_Init功     能: IO初始化参     数: 无返 回 值 : 无/********************************************/void Port_Init(void){    PORTB = 0xFF;    DDRB  = 0xFF;DDRD=0X00;PORTD=0XFF;}/*******************************************函数 名称: Port_Init功     能: IO初始化参     数: 无返 回 值 : 无/********************************************/void Power_Init(void){MCUCR |= 0X20;//掉电模式,外部中断0低电平触发GICR |= 0X40; //外部中断0使能SREG |= 0X80;//使能总中断}/*******************************************函数 名称: Device_Init功     能: 器件初始化参     数: 无返 回 值 : 无/********************************************/void Device_Init(void){Port_Init();       //IO端口初始化Power_Init();      //外部中断,省电模式,初始化}/*******************************************函数 名称: main功     能: 主函数参     数: 无返 回 值 : 无/********************************************/void main(void){unsigned char i;Device_Init();while(1){ for (i=0;i<10;i++){PORTB &= ~BIT(1);delay_nms(300);PORTB |= BIT(1);delay_nms(300);} MCUCR |= 0x80;       //使能休眠 asm("sleep"); for (i=0;i<10;i++){PORTB &= ~BIT(2);delay_nms(300);PORTB |= BIT(2);delay_nms(300);}}}/*******************************************函数名称: void int0_isr(void)功    能: 外部中断0的服务函数参    数: 无返 回 值: 无/********************************************/#pragma interrupt_handler int0_isr:2void int0_isr(void){unsigned char i;for (i=0;i<10;i++){PORTB &= ~BIT(0);delay_nms(300);PORTB |= BIT(0);delay_nms(300);}}


下面程序截图仿真截图:

进入程序首先执行第二个灯闪烁,

AVR单片机电源治理_睡眠模式(低功耗模式)实验(基于ATmega8)

闪烁停止,说明进入睡眠模式,

AVR单片机电源治理_睡眠模式(低功耗模式)实验(基于ATmega8)

摁下按键,第一个灯开始闪烁,说明单片机被唤醒,进入外部中断服务函数,

AVR单片机电源治理_睡眠模式(低功耗模式)实验(基于ATmega8)

第三个灯开始闪烁,说明中断服务函数执行完毕,执行SLEEP指令后面的程序。

AVR单片机电源治理_睡眠模式(低功耗模式)实验(基于ATmega8)

有很多不足,也为有兴趣的朋友,做个例子吧,一起学习一下吧。

 

 

 

热点排行