[AVR单片机] AVR外部中断0实验问题

[复制链接]
2057|4
 楼主| clleady 发表于 2010-4-16 13:08 | 显示全部楼层 |阅读模式
#pragma interrupt_handler int0_isr:iv_INT0
void int0_isr(void)
{
//uchar i;
//for(i=0;i<5;i++)
while(~(PORTD&(1<<PD2)))
{
PORTC=~PORTC;
delay_ms(1000);
}
}

我做了个LED中断闪烁仿真,设置为低电平外部中断。
做了2种
1,功能描述,当按下按钮,灯闪烁5次。(通过for循环成功实现)
2,功能描述,当按下按钮,开始闪烁,直到放开按钮,结束闪烁。(通过 while(~(PORTD&(1<<PD2)))失败)
难道2的解决方案一定要用检查标志位寄存器吗?
SHSLZHZ 发表于 2010-4-16 13:21 | 显示全部楼层
1# clleady
脚的判断要用PIN的,因此你得改成:
while(~(PIND&(1<<PD2)))就对了
 楼主| clleady 发表于 2010-4-16 13:45 | 显示全部楼层
while(~(PIND&(1<<PD2)))也不对。
SHSLZHZ 发表于 2010-4-16 14:48 | 显示全部楼层
说错了,应写成:
while(!(PIND&(1<<PD2)))就对了
 楼主| clleady 发表于 2010-4-16 15:16 | 显示全部楼层
谢谢指教。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:活到老学到老

219

主题

477

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部