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
Lesezeichen