Atmel Studio6.2的中断程序,真心没招了

2019-03-24 20:17发布

单片机是mega2560,程序已经够短了,PORTB7引脚永远都是高电平,中断有点像是复位,我真的没招了


代码::

#include <avr/io.h>
#include <avr/interrupt.h>

int main(void)
{
         DDRB=0x80;
         PORTB=0x00;
         EICRA=0x02;
         EIMSK=0x01;
         sei();
     while(1)
     {
         //TODO:: Please write your application code
     }
}

ISR(INT0_vect)
{
         PORTB=~PORTB;
}

求帮忙 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
digitaltek
1楼-- · 2019-03-24 23:17
确认一下开的中断对不对,如果开了中断没写中断函数就会复位
sjw1716094642
2楼-- · 2019-03-25 04:15
digitaltek 发表于 2014-8-12 15:23
确认一下开的中断对不对,如果开了中断没写中断函数就会复位

程序里少了对中断引脚的设置,DDRD=0x00;PORTD=0x01;但是加上也不行的。中断没有开错。对了,吧ISR里的中断向量改成别的向量,PORTB7就能输出低电平。不然从开机开始就是高电平,LED一直亮着,应该是系统一直在复位导致的。哎,头疼死了,换个编辑器想方便点,结果连个中断都不会用了
digitaltek
3楼-- · 2019-03-25 05:21
ISR(__vector_default)
{
        PORTB=~PORTB;
}
这样试试
sjw1716094642
4楼-- · 2019-03-25 08:03
digitaltek 发表于 2014-8-12 16:33
ISR(__vector_default)
{
        PORTB=~PORTB;

试了,还是不行,头疼死了

#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>
#include <avr/interrupt.h>
int main(void)
{
DDRB=0x80;
PORTB=0x80;
DDRD=0x00;
PORTD=0x01;
EICRA=0x02;
EIMSK=0x01;
sei();
    while(1)
    {
}
}
/*ISR(INT0_vect)
{
PORTB=0x00;
}*/
ISR(__vector_default)
{
PORTB=~PORTB;
}
dcexpert
5楼-- · 2019-03-25 11:54
解决了没有?
apitx
6楼-- · 2019-03-25 16:41
 精彩回答 2  元偷偷看……

一周热门 更多>