Weitere Programmierbeispiele mit Atmel Studio
Abschlussbedingungen
Dieses Programm erzeugt eine hin-und rücklaufende Welle mit Interrupts in Atmel Studio. Der Hardwareaufbau entspricht dem Wellen-Programm der vorherigen Seite.
#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>
#include <avr/interrupt.h>
volatile int welle_links = 0; //volatile, da die Variable im Interrupt verändert wird
ISR(INT0_vect) { //Der Interrupt ändert nur die Variable und das Hauptprogramm reagiert darauf.
welle_links ^= 1; // Der Wert der Variablen wird zwischen 0 und 1 getoggelt
}
int main(void) {
DDRB |= 0b00111111; //Ausgänge setzen
EICRA |= (1<<ISC01) | (1<<ISC00); //Interrupt konfigurieren ...
EIMSK |= (1<<INT0);
sei(); //... und aktivieren
while (1) { // Endlosschleife
if(welle_links) { //Ist die Variable 1, läuft die Welle immer von links nach rechts, ...
for(int i = 5; i >= 0; i--) {
DDRB |= (1 << i);
_delay_ms(1000);
DDRB &= ~(1 << i);
}
}
else { // ...sonst immer von rechts nach links
for(int i = 0; i <= 5; i++) {
DDRB |= (1 << i);
_delay_ms(1000);
DDRB &= ~(1 << i);
}
}
}}
Zuletzt geändert: Montag, 28. Februar 2022, 12:45