Witajcie. Problem powstał w związku z tematem https://www.elektroda.pl/rtvforum/topic2624943.html
Mam napisany fragment programu sterujący syntezą PLL. Teraz muszę dorobić fragmenty odpowiadające za zmianę częstotliwości góra/dół oraz zapis i odczyt stacji z pamięci. Czy ktoś mógłby mi w tym pomóc?
Oczywiście wszystko ma działać w Bascomie.
EDIT:
Załączam to, co do tej pory powstało. Zamiast wyświetlać np. 98.10 - wyświetla 9810. Tuning góra/dół nie za bardzo działa. Może ktoś zauważy jakiś błąd, coś poprawi.
Mam napisany fragment programu sterujący syntezą PLL. Teraz muszę dorobić fragmenty odpowiadające za zmianę częstotliwości góra/dół oraz zapis i odczyt stacji z pamięci. Czy ktoś mógłby mi w tym pomóc?
Oczywiście wszystko ma działać w Bascomie.
EDIT:
Załączam to, co do tej pory powstało. Zamiast wyświetlać np. 98.10 - wyświetla 9810. Tuning góra/dół nie za bardzo działa. Może ktoś zauważy jakiś błąd, coś poprawi.
Cytat:
$regfile = "attiny2313.dat" 'informuje kompilator o pliku dyrektyw mikrokontrolera
$crystal = 4000000 'kwarc 4MHz
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Config Pind.2 = Input 'strojenie w górę
Config Pind.3 = Input 'strojenie w dół
Config Portd.5 = Input 'czujnik mono/stereo
Config Portd.0 = Output 'data pin5 lm7001
Config Portd.1 = Output 'Clock pin4 lm7001
Config Portd.4 = Output 'CE pin3 lm7001
Reset Portd.0 'wstępne ustawienie stanów na portach
Reset Portd.1
Reset Portd.4
Reset Portd.5
Set Pind.2
Set Pind.3
Declare Sub Synteza
Declare Sub Zegarek
Declare Sub Wyswietlaj
Dim A As Byte
Dim Freq As Word
Dim Sterowanie As Byte
Dim Wynik As Long
Dim Pcz As Word
Dim Fpom As Word
Dim Zmiana As Bit
Freq = 1536 'odpowiada częstotliwości 87.5MHz
Pcz = 214 'pośrednia częstotliwość 10,7MHZ
Zmiana = 0
Cursor Off
Call Synteza
Cls
Lcd " TECHNICS"
Wait 1
Call Synteza
'-------------------- główna pętla programowa ----------------------------------
Do
Set Pind.2
Set Pind.3
Call Synteza
Loop
End
'-------------------- podprogram zegara ----------------------------------------
Sub Zegarek
Waitus 10
Set Portd.1
Waitus 10
Reset Portd.1
Waitus 10
End Sub
'-------------------- podprogram syntezy ---------------------------------------
Sub Synteza
Debounce Pind.2 , 0 , Up , Sub 'tuning w górę
Debounce Pind.3 , 0 , Dn , Sub 'tuning w dół
Sterowanie = &B11001001 'ustawia parametry LM7001
If Freq < 1536 Then Freq = 1946 'jak jedziemy w dół, przy 87,5MHz przeskakuje na 108
If Freq > 1946 Then Freq = 1536 'jak jedziemy w górę, przy 108MHz przeskakuje na 87,5
Fpom = Freq
Reset Portd.1 ' ustawienie lini CL=0
Set Portd.4 ' ustawienie lini CE=1
For A = 0 To 13 ' wysyłanie bitów częstotliwości D0 - D13
If Fpom.a = 1 Then ' bit po bicie
Set Portd.0
Else
Reset Portd.0
End If
Call Zegarek ' po każdym bicie takt zegara
Next A '
Reset Portd.0 ' wysłanie T0=0
Call Zegarek ' takt zegara
Reset Portd.0 ' wysłanie T1=0
Call Zegarek ' takt zegara
For A = 0 To 7 ' wysyłanie bitów sterujących LM7001
If Sterowanie.a = 1 Then ' B0,B1,B2,TB,R0,R1,R2,S
Set Portd.0
Else
Reset Portd.0
End If
Call Zegarek ' po każdym bicie takt zegara
Next A '
Reset Portd.4 ' koniec transmisji CE=0
Call Wyswietlaj ' wyświetlenie nowej częstotliwości
End Sub
'-------------------------------------------------------------------------------
Sub Wyswietlaj
Cls
Wynik = Freq + Pcz
Wynik = Wynik * 5
Lcd "FM " ; Wynik ; " MHz "
Locate 1 , 15
If Pind.5 = 0 Then
Lcd "ST"
Else
Lcd "MO"
End Sub
'--------------------- polecenia tuningu ---------------------------------------
Up:
Do
Incr Freq
Loop
Return
Dn:
Do
Decr Freq
Loop
Return
