打印
[AVR单片机]

ATmega16A启用外部中断功能后 变成了 复位功能

[复制链接]
2015|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xintuxing|  楼主 | 2013-6-9 21:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xintuxing 于 2013-6-9 21:28 编辑

采用的编译环境是 AVR Studio 6.0。
没有启用JTAG 调试(因为没有设备),程序直接通过ISP 下载到单片机运行。外部中断用按钮连接。
程序如下:
#include<avr/io.h>
#include<avr/interrupt.h>
int main(void)
{
        DDRA=0xff;//此IO口用于控制8个LED灯
        PORTA=0x01;
        DDRD=0;//置为输入
        MCUCR=(1<<ISC11);//外部中断1为下降沿触发(按照资料已试过其余3种触发方式)
        GICR |= (1<<INT1);//使能INT1 (INT0也试过了)
        GIFR |= (1<<INTF1);//可不要
        sei();//使能全局中断
        while(1);//等待中断
}
SIGNAL(SIG_INTERRUPT1)
{
        PORTA<<=1;//左移一位
}

硬件连接很简单:外部中断1连接一个按钮,按钮接地,IO 口A接8个LED

相关帖子

沙发
xintuxing|  楼主 | 2013-6-9 21:57 | 只看该作者
ICC AVR 编译的程序却可以正常使用,试问AVR Studio 有哪些需要设置的?

使用特权

评论回复
板凳
xintuxing|  楼主 | 2013-6-10 10:56 | 只看该作者
问题解决:中断向量名应为:INT1_vect
中断函数:
SIGNAL(INT0_vect)
{
   ``````
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

9

帖子

1

粉丝