' Hardware Pwm Abstimmung für das Pollin Tunermodul $regfile = "m16def.dat" $crystal = 1000000 Dim A As Integer 'Frequenzvariable Dim B As Bit 'keine Idee Dim E(10) As Eram Integer 'Speicher liste Dim Zaler As Byte Config Pind.5 = Output 'Pwm out Config Portd.6 = Output 'LED Config Portd.1 = Output 'Muting Config Pind.3 = Input 'Tuning hoch Config Pind.4 = Input 'tuning runter Config Pind.2 = Input 'Anschluss für das Stoppsignal vom Tunermodul Config Pind.0 = Input Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Prescale = 1 'Timer konfigurieren Waitms 100 'der Zaehler muss hochfahren :-) Tuning: Do ' Tuning Subrotine============================================================================ 'Tuning hoch--------------------------------------- If Pind.3 = 1 Then 'Wenn Taster gedrückt... Portd.1 = 0 ' Muting an Portd.6 = 1 ' LED an Do 'Tuning subrotine fuer hoch If A < 1023 Then 'im Falle eines ueberlaufes Tuning beenden A = A + 1 'Abstimmspannung um 1 Stufe erhöhen Compare1a = A 'Variable einlesen Waitms 20 Loop Until Pind.2 = 0 Or Pind.4 = 1 'ueberpruefen ob das stopsignal aktiv (oder anderer taster) End If Portd.6 = 0 'muting und led aus Portd.1 = 1 End If 'Tuning runter------------------------------------------------------ If Pind.4 = 1 Then Portd.1 = 0 'Audio muting einschalten Portd.6 = 1 'Led zeigt das laufende Tuning an Do If A > 1 Then A = A - 1 Compare1a = A Waitms 20 Loop Until Pind.2 = 0 Or Pind.3 = 1 End If Portd.6 = 0 Portd.1 = 1 End If 'ende des Tunigblockes====================================================================== 'beginn des speicher und wiederaufrufbereiches If Pind.0 = 1 Then 'wenn der aufruf oder abspeichertaster gedruekt wurde Waitms 1000 If Pind.0 = 1 Then 'und nach einer Sekunde immernoch gedruekt ist 'Beginn des Abspeicherns----------------------------------------- Zaler = 0 'Zaehler reseten Do 'ein lehrer Speicherplatz wird ausfindeg gemacht Zaler = Zaler + 1 'Zaehler auf 1 If Zaler = 10 Then 'falls der Zaehler auf 10 steht und somit der speicher voll zum Programmstart zuruek Goto Tuning End If Loop Until E(zaler) = -1 'diese Schleife solange wiederholen, bis eine lehre Variable gefunden wurde (FFFF....) E(zaler) = A 'der aktuell eingestellte Sender wird in den Speicher uebernommen Do 'WARTEN BIS DER Taster losgelassen wurde Loop Until Pind.0 = 0 Goto Tuning 'ab nach oben Else 'falls der Taster vor dem Ablauf einer Sekunde losgelassen wurde 'in den Aufruf bereich wechseln-------------------------------------- Zaler = 0 'Zaehler resetten Do If Pind.0 = 1 Then 'Wenn der Abspeichertaster erneut gedruekt wird in den Normalbetrieb zurueck Do Loop Until Pind.0 = 0 Goto Tuning End If '======================================================================= If Pind.3 = 1 Then 'wenn tuning up gedruekt wird Zaler = Zaler + 1 'sendespeicher um eins erhoehen If Zaler = 10 Then Zaler = 1 'ueberlauf schutz A = E(zaler) Compare1a = A Do Loop Until Pind.3 = 0 End If If Pind.4 = 1 Then If Zaler = 0 Then Zaler = 10 Zaler = Zaler - 1 A = E(zaler) Compare1a = A Do Loop Until Pind.4 = 0 End If Loop End If End If Loop End