打印
[信息发布]

Atmel Studio6.2的中断程序

[复制链接]
742|8
手机看帖
扫描二维码
随时随地手机跟帖
楼主
huahuagg| | 2025-2-21 18:03 | 显示全部楼层 回帖奖励 |倒序浏览
试试下面的代码
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/wdt.h> // 添加看门狗控制头文件

int main(void) {
    wdt_disable();  // 关键!禁用看门狗防止复位
    DDRB  = 0x80;   // PB7输出,其他输入
    PORTB = 0x00;   // 初始低电平
    EICRA = 0x02;   // INT0下降沿触发
    EIMSK = 0x01;   // 使能INT0中断
    sei();

    while(1) { __asm__ __volatile__("nop"); } // 避免空循环优化
}

ISR(INT0_vect) {
    PORTB ^= (1 << PB7); // 仅翻转PB7,避免副作用
}

使用特权

评论回复
沙发
huahuagg| | 2025-2-21 18:03 | 显示全部楼层
‌看门狗复位‌
ATmega芯片默认不启用看门狗,但部分烧录工具可能意外启用。添加wdt_disable()确保看门狗关闭。

‌中断误操作‌
原始代码使用PORTB=~PORTB会翻转所有PORTB引脚(包括输入引脚),可能导致上拉电阻异常。改为精准操作PB7。

‌信号抖动问题

使用特权

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

本版积分规则