我正在做一个个人项目,其中涉及我按下一个按钮,该按钮使我可以切换两种模式。我有以下代码。我已经调试了按钮硬件Hardware debug Schematic
到目前为止,发生的事情是当我最初打开MCU的电源时,LED亮了。当我按下按钮时,LED熄灭。当我再次按下按钮时,LED会一直熄灭,直到我一遍又一遍地按下它。 LED将以随机间隔切换。
#ifndef F_CPU
#define F_CPU 16000000UL // 16 MHz clock speed
#endif
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdio.h>
#define SECUR PD2 //Mode button
#define DISAM PD3 //Mode LED
volatile uint8_t toggle0 = 1;
ISR(INT0_vect)
{
if (toggle0){
toggle0=0;
}
else{
toggle0=1;
}
}
int main(void)
{
DDRD |= (1<<3); // configure PORTD2 as input
DDRD &= ~(1<<2); // configure PORTD3 as output
EICRA |= (1 << ISC00)|(1 << ISC10); // set INT0 to trigger on Rising edge
EIMSK |= (1 << INT0); // Turns on INT0
sei(); // turn on interrupts
sei(); // Enable global interrupts
while (1)
{
if(toggle0)
{
PORTD |= (1<<PD3); // Mode LED off
}
else
{
PORTD &= ~(1<<PD3); //Mode LED on
}
}
}