Lösung: Arduino UNO Zähler
C-Quelltext:
#define F_CPU 16000000UL
#include <avr/io.h>
#include <stdint.h>
int main(void)
{
DDRD = 0b11111111;
PORTD = 0b00000000;
TCCR1B = 0b00000101;
uint16_t zaehler = 0;
while (1)
{
zaehler = TCNT1;
PORTD = zaehler/256;
}
}
Quelltext: Erklärung
Compiler-Direktiven
#include
#include <avr/io.h>: AVR-I/O Bibliothek einbinden
#include <stdint.h>: Standard-Integer Bibliothek einbinden
main() Funktion
DDRD |= 0b11111111;
PORTD &= 0b00000000;
PortD als Ausgang definieren. Alle Pins sollen als Ausgang fungieren. Alle LEDs sollen aus sein.
TCCR1B = 0b00000101;
Zähler TC1 mit einem Prescaler von 1024 im Normalmodus Zählen.
uint16_t zaehler=0;
Variable zaehler als uint16_t deklarieren und mit 0 initialisieren.
Hauptschleife
-
zaehler abfragen
-
zaehler durch 256 dividieren (was einem Bitshifting von 8 Stellen nach rechts entspricht) und an PortD ausgeben
|