Nun soll der kleine Lautsprecher des Pollin-Spiels "Lärm" machen
Das ist relativ simpel, da die Leute der Fa. Pollin das schon vorbereitet haben.
Die Initialisierungs-Routine AVRInit() findet man in der Datei nikospiel.c und beinhaltet unter anderem die Funktionalität, um Töne zu erzeugen.
Die Funktion AVRInit() muss im Hauptprogramm main() unbedingt aufgerufen werden:
// Unser zweites C-Programm für das Pollin-Spiel // Wir wollen Lärm machen! // Dieses Programm spielt die ersten fünf Töne der Tonleiter # include <stdlib.h> # include <avr/interrupt.h> # include "display.h" # include "delay.h" # include "nikospiel.c" int main(void) { AVRInit(); InitDisplay(); ClearDisplay(); while(1) { // Für OCR0A sind Werte von 1 bis 255 erlaubt // Dabei ist 255 der tiefste Ton! OCR0A=78; // Tonhöhe 1. Ton festlegen TCCR0A = 0b00010010; // Ton an Ssleep(1); TCCR0A = 0b00000010; // Ton aus! Ssleep(1); OCR0A=70; // Tonhöhe 2. Ton festlegen TCCR0A = 0b00010010; // Ton an Ssleep(1); TCCR0A = 0b00000010; // Ton aus! Ssleep(1); OCR0A=62; TCCR0A = 0b00010010; // Ton an Ssleep(1); TCCR0A = 0b00000010; // Ton aus! Ssleep(1); OCR0A=57; TCCR0A = 0b00010010; // Ton an Ssleep(1); TCCR0A = 0b00000010; // Ton aus! Ssleep(1); OCR0A=50; TCCR0A = 0b00010010; // Ton an Ssleep(1); TCCR0A = 0b00000010; // Ton aus! Ssleep(1); } } |
Wir "verlagern" die Klangerzeugung in eine Funktion
// Unser zweites C-Programm für das Pollin-Spiel // Die Klangerzeugung wird nun in eine eigene Funktion ausgelagert # include <stdlib.h> # include <avr/interrupt.h> # include "display.h" # include "delay.h" # include "nikospiel.c" int PlayTones(int Note) { OCR0A=Note; // Tonhöhe festlegen TCCR0A = 0b00010010; // Ton an Ssleep(1); TCCR0A = 0b00000010; // Ton aus! return 0; } int main(void) { AVRInit(); InitDisplay(); ClearDisplay(); while(1) { PlayTones(90); PlayTones(80); PlayTones(70); PlayTones(65); PlayTones(59); PlayTones(52); PlayTones(46); PlayTones(43); Ssleep(2); } return 0; } |
Die Noten bekommen Namen - Compiler-Direktiven
// Unser zweites C-Programm für das Pollin-Spiel // Auch dies hier sind Compiler-Direktiven: # include <stdlib.h> |
.