做个io口的实物实验,仿真通过,实物通过。主函数如下。
while(1)
{
PORTD^=(1 << PD7); //PD7按位取反
delay_ms(1000); //延时1s
}
实物Led闪烁。仿真也没有问题。
接着做了外部中断0(低电平触发)仿真实验,通过。但是实物实验就没反应。
while(!(PIND&(1<<PD2)))
{
PORTD^=(1 << PD7); //PD7按位取反
delay_ms(1000); //延时1s
}
void init_devices(void) //初始化设置
{
CLI(); //清除所有中断
port_init(); //端口初始化
MCUCR = 0x00; //设置低电平触发
GICR = 0x40; //INT0使能
SEI(); //使能全局中断
}
问题就出在PD2的中断的硬件电路。
我实物电压测量如下,连接短路帽即按下开关,PD2为低电平。去掉短路帽,PD2为高电平。那么算正常。
但是实物Led就不是闪烁。仿真没有问题。怎么回事啊? |