在座的各位,有没有遇到过这种问题?
其中user.h 中的文件就是些头文件
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define u8 unsigned char
#define u16 unsigned int
Main.c 如下:
#include "user.h"
#define LED1_ON (PORTC &= ~(1 << PC1))
#define LED1_OFF (PORTC |= (1 << PC1))
u8 flag = 0;
void Key_Init(void)
{
DDRD &= ~(1 << PD2);
PORTD |= (1 << PD2);
DDRC |= (1 << PC1);
LED1_OFF;
MCUCR |= (1 << ISC01); //外部中断0 下降沿中断
GICR |= (1 << INT0); //使能中断
sei(); //开总中断
}
/*--------------------Main-------------------*/
int main(void)
{
Key_Init();
while(1)
{
if(flag == 0)
{
LED1_OFF;
}
else
{
LED1_ON;
}
}
}
/*--------------------End-------------------*/
SIGNAL(INT0_vect)
{
flag = !flag;
// PORTC ^= (1 << PC1);
}
这样子 就会不行,然而把主函数中的while(1)中的语句 放入中断函数中就可以,难道这是BUG?求解
|