|
楼主 |
发表于 2009-8-15 11:40:46
|
显示全部楼层
上面的程序有问题,通过努力已经把睡眠模式写好了。
调试没问题了,现在拿出来共享!
#include<iom16v.h>
#include<macros.h>
#pragma interrupt_handler int1_:3
unsigned int num=0;
void delay_nms(unsigned int t)
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<1141;j++);
}
//=================================
void sleep_mode()//睡眠模式函数
{
MCUCR=BIT(SM1); //设定为掉电模式
MCUCR|=BIT(SE);//sleep必须紧跟其后
asm("sleep");//进入睡眠状态
}
//================================
void main()
{
unsigned int i,j;
DDRB=0XFF;
PORTB=0XFF;
MCUCR|=BIT(ISC11);//外部中断下降沿触发
GICR|=BIT(INT1);
SREG|=BIT(7);
while(1)
{
PORTB=0XFF;
delay_nms(1000);
sleep_mode();
//NOP();
PORTB=0XFE;
delay_nms(1000);
}
}
//========================
void int1_()//只是用来唤醒mcu,没有其它意义
{
num=5;
} |
|