Forum: Mikrocontroller und Digitale Elektronik Bascom8051+Sound+Timer


von Uli S. (pumuckel123)


Lesenswert?

Hallo Leute, ich habe ein Problem und bitte um Eure Hilfe. Ich habe mit 
einem 89c5131 eine Schaltung aufgebaut, bei der ich verschiedene Töne 
ausgeben will. Da der "Sound" Befehl in Bascom keine befriedigenden 
Ergebnisse liefert, es lässt sich offensichtlich nur ein Ton einstellen, 
wollte ich die gewünschten Töne per Timer erzeugen. Die Tonerzeugung per 
Timer klappt auch aber es geht weder ein 2.Timer noch ein Wait Befehl. 
Im Anhang ist meine kleine Testroutine.
Vielleicht hat einer von Euch eine Lösung parat!!!
Danke für Eure Hilfe
Gruss Uli
'Sound test

$large

$regfile = "89C5131.dat"
$crystal = 24000000


Declare Sub Initialisieren
Declare Sub Ton_test

Dim I As Integer , Ii As Integer , Warte As Integer

Config Timer0 = Timer , Gate = Internal , Mode = 2
Config Timer1 = Timer , Gate = Internal , Mode = 2

On Timer0 Timer_0_int
Load Timer0 , 100
Enable Timer0


On Timer1 Timer_1_int
Load Timer1 , 100
Enable Timer1

Enable Interrupts



Config Lcd = 20 * 4
Speaker Alias P0.0

D_up Alias P3.1
D_down Alias P3.0
F_up Alias P3.3
F_down Alias P3.2


Call Initialisieren
'main Loop


Lowerline
Lcd "     Main Loop !    "
Cursor Off
Ii = 8
Start Timer0
Do
 Locate 4 , 1
 Lcd "                "
  For Ii = 8 To 16
   Locate 4 , 1
   Lcd Ii

   Warte = 1
   Start Timer1
   Do
   Loop Until Warte >= 20000
   Stop Timer1
  Next Ii
Loop

Sub Initialisieren
Cls
I = 0
Ii = 1
Warte = 1

End Sub

Timer_0_int:
I = I + 1
If I = Ii Then
I = 0
Speaker = Not Speaker
End If
Return

Timer_1_int:
Warte = Warte + 1
Return

End

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.