Gehörtest

Elektronik-Labor  Projekte  Mikrocontroller  TLScript  




Anders als beim Original kann nun die Beep-Frequenz in weiten Grenzen geändert werden. Eine grobe Einstellung ist im TestLab möglich. Mit der Spezialfinktion Call 241 kann man die PWM-Frequenz des Ausgangs auch feiner einstellen. Die maximale Frequenz ist 187,5 kHz. Sie ergibt sich aus der Taktfrequenz von 48 MHz und der PWM-Auflösung von 256 Stufen. 48000 / 256 = 187,5. Mit dem Poti im Baukasten lässt sich die Frequenz zwischen 735 Hz und 187,5 kHz einstellen.

              Rem Sound1
0x1164  PWM2 = 100
              L1:
0x3C00  A = AD0
0x21F1  Call L241:
0x1964  Delay ms = 100
0x2001  Jmp L1:

Dieses kleine Programm reicht schon, um die Hörgrenze mehrerer Personen zu vergleichen. Hörst du noch was? Wenn man es genauer wissen will, muss die aktuelle Frequenz ausgegeben werden. Die Frequenz in ganzen kHz ist 188 / A.



              Rem Sound2
0x1164  PWM2 = 100
              L1:
0x3C00  A = AD0
0x21F1  Call L241:
0x1A01  Delay s = 1
0x3400  B = A
0x01BC  A = 188
0x2D00  A = A / B
0x4200  Print A
0x2001  Jmp L1:


Wenn das Programm auch ohne den PC laufen soll, muss man etwas mehr Aufwand treiben und das kleine Display mit einsetzen. Nun wird die Frequenz automatisch von 20 kHz bis 2 kHz heruntergefahren. Sobald man etwas hört. kann man die Taste drücken, um die Anzeige und den Ton anzuhalten. Das Programm wurde am Ende ins EEPROM gebrannt und steht nun immer bereit. Wer jetzt ins Elektronik-Labor kommt, kann sich diesem einfachen Hörtest unterziehen.

              Rem Sound3
0x09FE  Pdir = 254
0x0A01  Pullup = 1
0x1164  PWM2 = 100
0x0108  A = 8
0x0200  B = 0
0x3B00  [B+] = A
              L1:
0x0200  B = 0
0x3A00  A = [B+]
0x21F1  Call L241:
0x3400  B = A
0x01BC  A = 188
0x2D00  A = A / B
0x04FA  D = 250
0x2117  Call L2:
0x0201  B = 1
0x4000  A = Pin0
0x2406  If A<B JMP L1:
0x0200  B = 0
0x3A00  A = [B+]
0x2800  A = A + 1
0x0200  B = 0
0x3B00  [B+] = A
0x2006  Jmp L1:
              L2:
0x3600  C = A
0x020A  B = 10
0x2D00  A = A / B
0x3400  B = A
0x3100  A = A Shl 1
0x1320  A = A OR = 32
0x1301  A = A OR 1
0x4500  Pout = A
0x1901  Delay ms = 1
0x3500  A = B
0x020A  B = 10
0x2C00  A = A * B
0x3400  B = A
0x3700  A = C
0x2B00  A = A - B
0x3100  A = A Shl 1
0x1301  A = A OR 1
0x4500  Pout = A
0x1901  Delay ms = 1
0x3700  A = C
0x2617  D*Jmp L2:
0x0202  B = 2
0x222F  If A=B Jmp L3:
0x4800  Ret
              L3:
0x0109  A = 9
0x0200  B = 0
0x3B00  [B+] = A
0x4800  Ret


Elektronik-Labor  Projekte  Mikrocontroller  TLScript