#include //Globale Variablen char Variable1; char Variable2; //Schleife mit Timer0 --> Pause; Länge wird über OPTION und die Voreinstellung des Timer0 eingestellt void pause (void) { OPTION=3; //Vorteiler vom Timer0 TMR0=Variable1; //Hier wird eingestellt ab wann der Timer0 anfängt zu zählen while (TMR0); //Wenn der Timer0 überläuft ist die while-Schleife zuende } void Ton (void) //Hier werden die Töne als Rechtecksignal erzeugt { GPIO.0=0; //GP0=0V ; Hier wird der Ausgangspin gewählt pause(); GPIO.0=1; //GP0=5V pause(); } void main (void) { char x; //Variable für die Schleife CMCON.0=1; //Der PIC12F629 verfügt über Komperatoren, CMCON.1=1; //da wir sie aber nicht benutzen, CMCON.2=1; //schalte ich sie immer standardmäßig ab. TRISIO=0b.0000.0000; //Alle I/O Pins OUT, außer GPIO3 weil dieser nur als Eingang konfiguriert werden kann Start: //Sprungpunkt für die Endlosschleife x=128; //128, weil Variable2=0; //nullen der Variable, weil nach dem POR (Power on reset) ein zufälliger wert im RAM steht while (x) //die while-Schleife läuft solange bis x==0 { Variable1=127+Variable2; //Anfangsfrequenz ist definiert durch die 127 mit denen der Timer0 gefüttert wird (hab gemessen Impulsdauer ca.3,77ms/265Hz) Ton(); //Aufruf der Tonerzeugung Variable2++; //Dadurch das wir jetzt auf Variable2 immer eins draufaddieren wird die Frequenz immer höher x--; //damit die Schleife nicht gleich 0 wird } goto Start; //wir fangen wieder von vorne an }