|
本帖最后由 zcjxjw 于 2013-10-19 17:24 编辑
下面和附件中的程序我用ICCAVR7.22编译后通电,首先灯闪5下后常亮(灯控正),把INT0搭铁灯灭,但再把INT0松开和搭铁灯保持常灭无反应. 请问那不对 cpu用内部4m 看门狗不用
avrINT0按键唤醒后不能正常工作,但要是用看门狗复位就一切正常. 说明cpu还是没有真正完全唤醒,但一直指不到原因,看别人的程序也没什么要特别设置的
谢!
//------------------------测试MCU休眠-----2010.05.12 8:13--------------------------------------
//时钟频率:4M
//iccavr7编译
#include <iom8v.h>
#include <macros.h>
#define INT8U unsigned char
#define INT16U unsigned int
//---------------------延时程序-------------------------------------------------
void delay(unsigned int s)
{
unsigned int i;
for(i=0; i<s; i++);
for(i=0; i<s; i++);
}
//------------------------中断服务程序------------------------------------------
#pragma interrupt_handler int0:2
void int0(void)
{
MCUCR&=~(1<<SE); //清休眠标志
CLI();
SEI();
}
//--------------------------主程序---------------------------------------------
void main(void)
{ INT8U i;
CLI(); //disable all interrupts
PORTB = 0xFF;
DDRB = 0x01; //PB0接发光二极管
PORTC = 0x7F;
DDRC = 0x00;
PORTD = 0xFF;
DDRD = 0x00; //PD2为int0接一对地按键
MCUCR = 0x20;//掉电模式,低电平触发
GICR = 0x40;
SEI();
while(1)
{ //-------------------------------休眠之前灯闪5次---------------------
for(i=0;i<10;i++)
{
if(i%2)
{
PORTB|=1<<PB0;
delay(60000);
delay(60000);
}
else
{
PORTB&=~(1<<PB0);
delay(60000);
delay(60000);
}
}
//----------------MCU休眠-----------------------------------------------
MCUCR|=(1<<SE); //设置MCU休眠模式:掉电模式
asm("SLEEP"); //
asm("NOP"); //
asm("NOP"); //
asm("NOP"); //
asm("NOP"); //
}
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|