Zuletzt aktualisiert: 09.04.2023
Aquaristik
Modellbau
Software
3D-Druck
Garten
Radreisen
Kontakt
Impressum

LED mit sleep() blinken lassen

Das berühmte Hello-World-Programm sieht bei einem Mikrocontroller zum einen komplizierter aus, bewirkt aber keinen Text auf dem Bildschirm, sondern lediglich ein simples blinken einer angeschlossenen LED.
Im Folgenden wird ein Beispielprogramm gezeigt, das auf einem ATMega32 ausgeführt wird. Als Experimentierboard wurde das STK500 benutzt. Hierbei wird eine Schleife durchlaufen, in der Einschalten der LED, 1000 ms Warten, Ausschalten der LED und nochmals 1000 ms Warten endlos lange ausgeführt wird.
Das Programm kehrt nie zurück.
Um möglichst genau eine Zeit von 1 Sekunde warten zu können, benötigt die Datei "delay.h" die Festlegung der Quarzfrequenz, hier 1MHz.


#define F_CPU 1000000UL  // Frequenz des Quarzes, ohne Quarz standardmäßig 1MHz

#include <avr/io.h>
#include <util/delay.h>
#include <stdint.h>

// LED Defines
// Hier müssen die richtigen Angaben hin
#define LED_DDR		DDRC        //DDRA, DDRB...
#define LED_PORT	PORTC       //PORTA, PORTB...
#define LED_PORTPIN	PC1         //PA0, PA1..., PB0, PB1..., ...

int main(void){
	// Den Pin wo die LED angeschlossen ist als Ausgang setzen
	LED_DDR |= (1 << LED_PORTPIN);
	
	// Die LED die ganze Zeit an und aus schalten
	while(1){
		LED_PORT |= (1 << LED_PORTPIN);	// Den Portpin auf high setzen
		_delay_ms(1000);	// 1 sec warten
		LED_PORT &= ~(1 << LED_PORTPIN);  // Den Portpin auf low setzen
		_delay_ms(1000);	// 1 sec warten
	}
}


Download
Copyright © 2023 Evolutec Alle Rechte vorbehalten.