$regfile = "m168def.dat" $crystal = 4000000 $hwstack = 40 $swstack = 30 $framesize = 60 Dim Keycode As Byte Declare Sub Frequency_set(byval Frequency As Single) ' Frequenzberechnung Config Kbd = Portd , Debounce = 30 , Delay = 10 Config Portb.1 = Output ' Lärm Ausgang Config Pinb.5 = Input ' DTMF/CTCSS - Umschaltung Config Watchdog = 16 Init: Portb.5 = 1 ' PullUp ein Dtmf Alias Pinb.5 Pcmsk2 = &B00001111 ' Maske für Pin Change setzen On Pcint2 Isr_pcint2 ' ' Enable Interrupts Stop Watchdog Do Keycode = Getkbd() If Keycode <> 16 Then Select Case Keycode Case 0 ' Taste D Keycode = 15 Case 1 ' Taste C Keycode = 14 Case 2 ' Taste B Keycode = 13 Case 3 ' Taste A Keycode = 12 Case 4 ' Taste # Keycode = 11 Case 5 ' Taste 9 Keycode = 9 Case 6 ' Taste 6 Keycode = 6 Case 7 ' Taste 3 Keycode = 3 Case 8 ' Taste 0 Keycode = 0 Case 9 ' Taste 8 Keycode = 8 Case 10 ' Taste 5 Keycode = 5 Case 11 ' Taste 2 Keycode = 2 Case 12 ' Taste * Keycode = 10 Case 13 ' Taste 7 Keycode = 7 Case 14 ' Taste 4 Keycode = 4 Case 15 ' Taste 1 Keycode = 1 End Select If Dtmf = 1 Then Enable Pcint2 Dtmfout Keycode , 60000 Disable Pcint2 Else Enable Pcint2 Config Timer1 = Timer , Compare A = Toggle , Prescale = 1 , Clear Timer = 1 Select Case Keycode Case 0 Call Frequency_set(67) ' 67 Hz Case 1 Call Frequency_set(77) ' 77 Hz Case 2 Call Frequency_set(82.5) ' 82,5 Hz Case 3 Call Frequency_set(88.5) ' 88,5 Hz Case 4 Call Frequency_set(91.5) ' 91,5 Hz Case 5 Call Frequency_set(100) ' 100 Hz Case 6 Call Frequency_set(103.5) ' 103,5 Hz Case 7 Call Frequency_set(123) ' 123 Hz Case 8 Call Frequency_set(136.5) ' 136,5 Hz Case 9 Call Frequency_set(141.3) ' 141,3 Hz Case 10 Call Frequency_set(165.5) ' 165,5 Hz Case 11 Call Frequency_set(183.5) ' 183,5 Hz Case 12 Call Frequency_set(199.5) ' 199,5 Hz Case 13 Call Frequency_set(203.5) ' 203,5 Hz Case 14 Call Frequency_set(206.5) ' 206,5 Hz Case 15 Call Frequency_set(210.7) ' 222 Hz End Select Disable Pcint2 End If End If Loop Sub Frequency_set(byval Frequency As Single) Local Tmp_single As Single Local Tmp_word As Word Tmp_single = Frequency * 2 Tmp_single = 4000000 / Tmp_single Tmp_word = Tmp_single Compare1a = Tmp_word End Sub Isr_pcint2: If Pind = 15 Then Start Watchdog Return End