'*******************************************************************************
' STEROWNIK SYNTEZY CZESTOTLIWOSCI Z UKLADEM TSA6057
'*******************************************************************************
'Autor : Michał Wojtków
'Data : 4.01.2004
'e-mail: michallo4@wp.pl
'www : www.michallo.ll.pl
'GG# : 714371
'uwagi : program ustepniony dla www.easy-soft.prv.pl
'*******************************************************************************
' KONFIGURACJA PODSTAWOWA
'*******************************************************************************
$crystal = 16000000 'wybór procesora
Config Lcd = 16 * 4
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.6 , Rs = Portb.7
Cursor Off
Config Debounce = 30
Config Sda = Portc.1
Config Scl = Portc.0
Config Pinb.5 = Output
Config Pinc.6 = Input
Config Pinc.5 = Input
Config Pinc.4 = Input
Config Pinc.3 = Input
Config Pinc.2 = Input
Config Pina.4 = Output
Dim Db0 As Byte
Dim Db1 As Byte
Dim Db2 As Byte
Dim A As Byte
Dim Key As Byte
Dim _eep(3) As Byte
Dim Frequency As Word
Dim Mnoznik As Byte
Dim Pokazanaf As Long
Dim Pokazanaff As String * 10
Dim Pokazanafstr As String * 10
Podswietlanie Alias Portb.5
Set Podswietlanie
Portb.5 = 1
'*******************************************************************************
' poczatek programu
'*******************************************************************************
Gosub Odczyt_ustawien
Cls
Locate 1 , 4
Lcd "PLL-Driver"
Locate 2 , 6
Lcd "Welcome"
Wait 2
Cls
Locate 1 , 3
Lcd "Nie do konca"
Locate 2 , 1
Lcd "komercyjne radio"
Wait 2
'*******************************************************************************
' Petla glowna
'*******************************************************************************
Petla_glowna:
Cls
Locate 1 , 3
Pokazanaf = Frequency * Mnoznik
Pokazanaff = Str(pokazanaf)
Pokazanafstr = Format(pokazanaff , "00.0000")
Pokazanaff = Format(pokazanafstr , "000.0")
Lcd Pokazanaff : Lcd " MHz"
Podswitlanie_off:
For A = 1 To 250
Gosub Klawisz
If Key = 1 Then : Gosub Menu : End If
If Key = 4 Then : Goto Frequency : End If
Waitms 20
Next A
Reset Podswietlanie
Do
Gosub Klawisz
If Key = 1 Then : Gosub Menu : End If
If Key = 4 Then : Goto Frequency : End If
If Key = 5 Then : Set Podswietlanie : Goto Podswitlanie_off : End If
Loop
'*******************************************************************************
' OBSLUGA KLAWIATURY
'*******************************************************************************
Klawisz:
Key = 0
Debounce Pinc.6 , 0 , Przypisanie , Sub
Debounce Pinc.5 , 0 , Przypisanie , Sub
Debounce Pinc.4 , 0 , Przypisanie , Sub
Debounce Pinc.3 , 0 , Przypisanie , Sub
Debounce Pinc.2 , 0 , Przypisanie , Sub
Return
Przypisanie:
If Pinc.6 = 0 Then : Key = 1 : End If
If Pinc.5 = 0 Then : Key = 2 : End If
If Pinc.4 = 0 Then : Key = 3 : End If
If Pinc.3 = 0 Then : Key = 4 : End If
If Pinc.2 = 0 Then : Key = 5 : End If
Return
'*******************************************************************************
' menu
'*******************************************************************************
Menu:
Set Podswietlanie
Cls
Locate 1 , 1
Lcd "1-Setup 2-freq"
Locate 2 , 5
Lcd "3-format"
Waitms 500
Do
Gosub Klawisz
If Key = 1 Then : Goto Setup : End If
If Key = 2 Then : Goto Frequency : End If
If Key = 3 Then : Goto Formatt : End If
If Key = 5 Then : Goto Petla_glowna : End If
Loop
'*******************************************************************************
' setup
'*******************************************************************************
Setup:
Cls
Locate 1 , 1
Lcd "1-krok 2-PradPLL"
Locate 2 , 1
Lcd " 3-BS"
Waitms 500
Do
Gosub Klawisz
If Key = 1 Then : Goto Krok : End If
If Key = 2 Then : Goto Prad : End If
If Key = 3 Then : Goto Bs : End If
If Key = 5 Then : Goto Menu : End If
Loop
'*******************************************************************************
' KROK
'*******************************************************************************
Krok:
Cls
Locate 1 , 1
Lcd "Krok PLL: [kHz]"
Locate 2 , 1
Lcd "1-10 2-25"
Waitms 500
Do
Gosub Klawisz
If Key = 1 Then : Goto 10khz : End If
If Key = 2 Then : Goto 25khz : End If
If Key = 5 Then : Goto Setup : End If
Loop
'*******************************************************************************
' PRAD
'*******************************************************************************
Prad:
Cls
Locate 1 , 1
Lcd "Prad "
Locate 2 , 1
Lcd "1-5uA 2-500uA"
Waitms 500
Do
Gosub Klawisz
If Key = 1 Then : Goto Current1 : End If
If Key = 2 Then : Goto Current2 : End If
If Key = 5 Then : Goto Menu : End If
Loop
'*******************************************************************************
' Band Switch Output
'*******************************************************************************
Bs:
Cls
Locate 1 , 1
Lcd "Band Switch Out."
Locate 2 , 1
Lcd "1-Sink 2-Float"
Waitms 500
Do
Gosub Klawisz
If Key = 1 Then : Goto Sink : End If
If Key = 2 Then : Goto Float : End If
If Key = 5 Then : Goto Menu : End If
Loop
'*******************************************************************************
' 10khz
'*******************************************************************************
10khz:
Db2.6 = 1
Db2.7 = 0
Mnoznik = 100
Frequency = 9200
Gosub Konwersja
Goto Krok
'*******************************************************************************
' 12Khz
'*******************************************************************************
25khz:
Db2.6 = 0
Db2.7 = 1
Mnoznik = 250
Frequency = 3680
Gosub Konwersja
Goto Krok
'*******************************************************************************
' Current1:
'*******************************************************************************
Current1:
Db0.0 = 0
Gosub Konwersja
Goto Setup
'*******************************************************************************
' Current2:
'*******************************************************************************
Current2:
Db0.0 = 1
Gosub Konwersja
Goto Setup
'*******************************************************************************
' Sink Current:
'*******************************************************************************
Sink:
Db2.2 = 1
Gosub Konwersja
Goto Setup
'*******************************************************************************
' Floating:
'*******************************************************************************
Float:
Db2.2 = 0
Gosub Konwersja
Goto Setup
'*******************************************************************************
' frequency
'*******************************************************************************
Frequency:
Reset Podswietlanie
Cls
Locate 1 , 3
Pokazanaf = Frequency * Mnoznik
Pokazanaff = Str(pokazanaf) 'Frequency * Mnoznik
Pokazanafstr = Format(pokazanaff , "00.0000")
Pokazanaff = Format(pokazanafstr , "000.0")
Lcd Pokazanaff : Lcd " MHz"
Locate 2 , 1
Lcd "1-UP FREQ DOWN-2"
Waitms 500
Do
Gosub Klawisz
If Key = 1 Then : Gosub Up : End If
If Key = 2 Then : Gosub Down : End If
If Key = 3 Then : Gosub Konwersja : End If
If Key = 4 Then : Goto Petla_glowna : End If
If Key = 5 Then : Gosub Konwersja : Goto Menu : End If
Loop
'*******************************************************************************
' UP
' Zmiana częstotliwości w górę
'*******************************************************************************
Up:
Frequency = Frequency + 1
Pokazanaf = Frequency * Mnoznik
Pokazanaff = Str(pokazanaf) 'Frequency * Mnoznik
Pokazanafstr = Format(pokazanaff , "00.0000")
Pokazanaff = Format(pokazanafstr , "000.0")
Locate 1 , 1
Lcd " "
Locate 1 , 3
Lcd Pokazanaff : Lcd " MHz"
Return
'*******************************************************************************
' down
' Zmiana częstotliwości w dół
'*******************************************************************************
Down:
Frequency = Frequency - 1
Pokazanaf = Frequency * Mnoznik
Pokazanaff = Str(pokazanaf) 'Frequency * Mnoznik
Pokazanafstr = Format(pokazanaff , "00.0000")
Pokazanaff = Format(pokazanafstr , "000.0")
Locate 1 , 1
Lcd " "
Locate 1 , 3
Lcd Pokazanaff : Lcd " MHz"
Return
'*******************************************************************************
' format
' Ustawienie domyślnej konfiguracji i częstotliwości
'*******************************************************************************
Formatt:
Frequency = 9990
Db2.6 = 0
Db2.7 = 1
Db0.0 = 1
Db2.2 = 1
Gosub Konwersja
Gosub Odczyt_ustawien
Goto Petla_glowna
'*******************************************************************************
' odczyt ustawien z eeprom i wysłanie do TSA6057
'*******************************************************************************
Odczyt_ustawien:
For A = 1 To 3
Readeeprom _eep(a) , A
Waitms 50
Next A
Gosub Konwersja1
Gosub Tsa
If _eep(3).7 = 0 Then : Mnoznik = 100 : Else : Mnoznik = 250 : End If
Return
'*******************************************************************************
' TSA 6057
' Wysłanie danych do układu TSA6057 przez magistrale i2c
' UWAGA: jesli blednie podlaczymy układ lub zle ustawimy adres
' pojawi sie napis "brak TSA6057"
'*******************************************************************************
Tsa:
I2cstart
I2cwbyte 196
I2cwbyte 0
I2cwbyte Db0
I2cwbyte Db1
I2cwbyte Db2
I2cwbyte 0
I2cstop
If Err = 1 Then : Porta.4 = 0 : Wait 1 : End If
Return
'*******************************************************************************
' Konwersja danych
' Podstawia dane w celu zapisania ich w eeprom
'*******************************************************************************
Konwersja:
'Db0.0 = Prad
Db0.1 = Frequency.0
Db0.2 = Frequency.1
Db0.3 = Frequency.2
Db0.4 = Frequency.3
Db0.5 = Frequency.4
Db0.6 = Frequency.5
Db0.7 = Frequency.6
'********************
Db1.0 = Frequency.7
Db1.1 = Frequency.8
Db1.2 = Frequency.9
Db1.3 = Frequency.10
Db1.4 = Frequency.11
Db1.5 = Frequency.12
Db1.6 = Frequency.13
Db1.7 = Frequency.14
'********************
Db2.0 = Frequency.15
Db2.1 = 0
'Db2.2 = BS
Db2.3 = 0
Db2.4 = 0
Db2.5 = 1
'Db2.6 = krok
'Db2.7 = krok
'********************
_eep(1) = Db0
_eep(2) = Db1
_eep(3) = Db2
For A = 1 To 3
Writeeeprom _eep(a) , A
Waitms 50
Next A
Gosub Tsa
Return
'*******************************************************************************
' Konwersja1
' Podstawia dane po doczytaniu ich z eeprom
'*******************************************************************************
Konwersja1:
Db0 = _eep(1)
Db1 = _eep(2)
Db2 = _eep(3)
Frequency.0 = _eep(1).1
Frequency.1 = _eep(1).2
Frequency.2 = _eep(1).3
Frequency.3 = _eep(1).4
Frequency.4 = _eep(1).5
Frequency.5 = _eep(1).6
Frequency.6 = _eep(1).7
Frequency.7 = _eep(2).0
Frequency.8 = _eep(2).1
Frequency.9 = _eep(2).2
Frequency.10 = _eep(2).3
Frequency.11 = _eep(2).4
Frequency.12 = _eep(2).5
Frequency.13 = _eep(2).6
Frequency.14 = _eep(2).7
Frequency.15 = _eep(3).0
Return
'*******************************************************************************
' The End
'*******************************************************************************