Hi,
laut Wiki gibt es sind die verschiedenen Frequenzen von dem Ton ja
2 oder 4 kHz (Stadtbetrieb) oder 0,5 und 2 kHz (Landbetrieb). Was man jetzt
braucht ist eigentlich nur ne Routine die die Frequenzen erzeugt. Für
Sachen die Frequenzen und Timer betreffen gibt es ein schönes Programm
im Downloadbereich, das rnAvr heißt. Dort kann man die beiden Frequenzen
die man haben will eintragen und man bekommt dementsprechend den
Timervorgabewert und den Prescaler. Bei 1Mhz wären das
2kHz : Timervorgabe = 194 ; Prescaler = 8
4kHz : Timervorgabe = 6 ; Prescaler = 1
Des Weiteren wird gleich ein Programm generiert in dem die Werte
eingetragen sind, das hab ich mal mit deinem zusammengegebracht.
Im Simulator funktioniert es, musst es evt. noch mal anpassen.
Code:$regfile = "m48def.dat" $crystal = 1000000 $baud = 1200 'mit 4kHz anfangen Config Timer0 = Timer , Prescale = 1 On Timer0 Timer_irq Dim Timervorgabe As Integer Timervorgabe = 6 Ddrd = &B11110000 Config Portd.4 = Output Lautsprecher Alias Portd.4 Dim I As Byte I = 0 Dim A As Byte A = 0 Enable Timer0 Enable Interrupts Do 'Dieser Teil dauert pro Durchlauf 3*80ms = 240ms Portd.5 = 1 : Portd.6 = 0 : Portd.7 = 0 Waitms 80 Portd.5 = 0 : Portd.6 = 1 : Portd.7 = 0 Waitms 80 Portd.5 = 0 : Portd.6 = 0 : Portd.7 = 1 Waitms 80 I = I + 1 If I = 4 Then If A = 1 Then Config Timer0 = Timer , Prescale = 1 Timervorgabe = 6 A = 0 Else Config Timer0 = Timer , Prescale = 8 Timervorgabe = 194 A = 1 End If I = 0 End If Loop 'Dies ist der Programmteil, der in dem von ihnen gewählten 'Intervall aufgerufen wird Timer_irq: Timer0 = Timervorgabe Toggle Lautsprecher Return







Zitieren

Lesezeichen