Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota

Pytania, kody i porady dotyczące nie tylko Bascom.
Awatar użytkownika
kulamario
Posty: 207
Rejestracja: 17 sie 2015, 20:05
Lokalizacja: Greystones
Kontakt:

Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota

Post autor: kulamario » 20 lis 2018, 12:23

Jak zapisać w eprom i odczytać to może jakoś bym to zrobił bo bawiłem się już eprom em i wewnętrznym i zewnętrznym
Problem mam jak zrobić ze by tylko przy pierwszym ruszeniu programu przejść przez defaultowe ustawienia tda a potem to jak było ustawione ze by czytał
tu mam zagwoztke jak to zrobić
bo wartości to i w ram można trzymać i w pcf od zegarka tez oba mają zasilanie 24/7
Awatar użytkownika
niveasoft
Posty: 1215
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota

Post autor: niveasoft » 20 lis 2018, 18:41

Z RAM`em by Ci raczej nie wyszło bo ten soft się ciągle resetuje przy Standby.
Mam nadzieje, że wiecej tego softu nie zobaczę ;) Nie wiem dlaczego Farmer to tak skopał. Do tego mariaż funkcji od Mundi i klops gotowy :D
Nie żeby to nie działało tylko jest tu straszny bigos :D Ahahaha
Dlatego podmień te dwa Sub`y i dodaj te kilka zmiennych Eram i powinno śmigać ;)
Dobrze by było jak byś miał Bascom 2081 bo w nim jest nowa funkcja która uaktualnia eeprom tylko jak się wartość zmieni. To powinno w tym programie dłużej pożyć.
Osobiście wolę opcję "Autosave" po określonym czasie. Czyli skończyłes sie bawić w kręcenie gałką to dopiero po 5s zapis do Eeprom.
  1. Const Updateeeprom = 1 'nowa funkcja Bascom
  2. '------------------------------------------------------------------------------------------------------------------------------------------
  3. Dim Input_value_ee As Eram Byte
  4. Dim Input_gain_value_ee As Eram Byte
  5. Dim Volume_value_ee As Eram Byte
  6. Dim Bass_tone_value_ee As Eram Byte
  7. Dim Middle_tone_value_ee As Eram Byte
  8. Dim Heigh_tone_value_ee As Eram Byte
  9. Dim Balance_r_ee As Eram Byte
  10. Dim Balance_l_ee As Eram Byte
  11. Dim Myval As Byte , Ee_default As Eram Byte
  12.  
  13. Myval = Ee_default
  14. If Myval <> 0 Then
  15.  Ee_default = 0
  16.  
  17.  Input_value_ee = 0
  18.  Input_gain_value_ee = 2
  19.  Volume_value_ee = 45
  20.  Bass_tone_value_ee = 9
  21.  Middle_tone_value_ee = 7
  22.  Heigh_tone_value_ee = 9
  23.  Balance_r_ee = 0
  24.  Balance_r_ee = 0
  25.  
  26.  
  27. End If
  28.  
  29. '///////////////////////////////////////////////////////////////////////////////
  30. 'Funkcja wspólna dla wszystkich ustawien
  31.  
  32. Sub Setting_function()
  33.  
  34.  
  35.  
  36.    If Encoder_a = 1 Or Command = 17     ' or command = 86 Then    'Sprawdz enkoder
  37.       If Functional_value < Limit_value_max Then            'Zapobiegaj przepelnieniu
  38.          Functional_value = Functional_value + 1            'Zwieksz wartosc funkcji o 1
  39.          Call Transfer                                      'Funkcja do transferu
  40.       End If
  41.    End If
  42.  
  43.    If Encoder_b = 1 Or Command = 16     ' or command = 85 Then
  44.  
  45.       If Functional_value > Limit_value_min Then
  46.          Functional_value = Functional_value - 1
  47.          Call Transfer
  48.       End If
  49.    End If
  50.  
  51.  
  52.    Select Case Press_button                                 'Przy pewnym stanie opcji wywolywania klawiatury
  53.       Case 1 : Volume_value_ee = Functional_value
  54.       Case 2 : Input_value_ee = Functional_value
  55.       Case 3 : Input_gain_value_ee = Functional_value
  56.       Case 4 : Bass_tone_value_ee = Functional_value
  57.       Case 5 : Middle_tone_value_ee = Functional_value
  58.       Case 6 : Heigh_tone_value_ee = Functional_value
  59.  
  60.  
  61.       Case 7 : Balance_r_ee = Functional_value
  62.       Case 8 : Balance_l_ee = Functional_value
  63.  
  64.  
  65.    End Select
  66.  
  67.  
  68. End Sub
  69.  
  70.  
  71. Sub Settings_tda7439()
  72.  
  73.  
  74.    Adres_tda7439 = &H88                                     'adres chipa urzadzenia TDA7439
  75.    Register = &B00000000                                    'Wybierz rejestr wejsciowy
  76.    Input_value = Input_value_ee                             'Wybierz wejscie 1
  77.    Functional_value = Input_value                           'Wartosc poczatkowa rejestru multipleksera wejsciowego jest przypisana do wartosci funkcji
  78.    Call Transfer                                            'Funkcja wywolania dla transferu danych
  79.  
  80.    Adres_tda7439 = &H88                                     'adres chipa urzadzenia TDA7439
  81.    Register = &B00000001                                    'Podadres rejestru kontroli wzmocnienia wejscia
  82.    Input_gain_value = Input_gain_value_ee
  83.    Functional_value = Input_gain_value                      'Wybierz wzmocnienie wejscia (20db)
  84.    Call Transfer                                            'Funkcja wywolania dla transferu danych
  85.  
  86.    Adres_tda7439 = &H88
  87.    Register = &B00000010
  88.  
  89.    Volume_value = Volume_value_ee
  90.  
  91.    'readeeprom Volume_value , 2
  92.  
  93.  
  94.    Functional_value = Volume_value                          'Ustaw glosnosc na -10db
  95.    Call Transfer                                            'Funkcja wywolania dla transferu danych
  96.  
  97.    Adres_tda7439 = &H88
  98.    Register = &B00000011                                    'Rejestr  Bass
  99.    Bass_tone_value = Bass_tone_value_ee                     'Wybierz Bass 0db
  100.    Functional_value = Bass_tone_value
  101.    Call Transfer                                            'Funkcja wywolania dla transferu danych
  102.  
  103.    Adres_tda7439 = &H88
  104.    Register = &B00000100                                    'Rejestr srodek
  105.    Middle_tone_value = Middle_tone_value_ee                 'srodek 0db
  106.    Functional_value = Middle_tone_value
  107.    Call Transfer                                            'Funkcja wywolania dla transferu danych
  108.  
  109.    Adres_tda7439 = &H88
  110.    Register = &B00000101                                    'Rejestr wysokie tony
  111.    Heigh_tone_value = Heigh_tone_value_ee                   'wysokie tony 0db
  112.    Functional_value = Heigh_tone_value
  113.    Call Transfer                                            'Funkcja wywolania dla transferu danych
  114.  
  115.    Adres_tda7439 = &H88
  116.    Register = &B00000110                                    'Rejestr Balans prawy kanal                                        RIGHT SPEAKER
  117.    Balance_r = Balance_r_ee                                 '0db Balans_R
  118.    Functional_value = Balance_r
  119.    Call Transfer                                            'Funkcja wywolania dla transferu danych
  120.  
  121.    Adres_tda7439 = &H88
  122.    Register = &B00000111                                    'Rejestr Balans lewy kanal                                             LEFT SPEAKER
  123.    Balance_l = Balance_l_ee
  124.    Functional_value = Balance_l                             '0db Balans lewy
  125.    Call Transfer                                            'Funkcja wywolania dla transferu danych
  126.  
  127.  
  128. End Sub
  129.  
  130.  
Awatar użytkownika
kulamario
Posty: 207
Rejestracja: 17 sie 2015, 20:05
Lokalizacja: Greystones
Kontakt:

Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota

Post autor: kulamario » 21 lis 2018, 4:01

Bascoma nowego nie mam
będę musiał usiąść na spokojnie i protestować to co mi dałeś
dam znać - tylko czy mój bascom skompiluje to ?
ja mam 2.0.7.8
Awatar użytkownika
niveasoft
Posty: 1215
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota

Post autor: niveasoft » 21 lis 2018, 12:51

Tu nawet nie ma nad czym kombinować. Zmieniłem dwa Suby po to by było jak najmniej roboty (zmian). Normalnie to pewnie w każdym z subów trzeba by zapamiętywać wartości które akurat zmieniasz a tak program sam wie w czym gmerasz i zapamiętuje właściwą.

Sub Set_TDA czy jak mu tam odtąd korzysta już z zapisów w eeprom a wszystko co było przedtem na sztywno jest jednokrotnie wpisywane do eeprom podczas pierwszego uruchomienia. Potem co zmienisz to już Set_TDA tego użyje.

Sprawdź swój email ;)
Awatar użytkownika
kulamario
Posty: 207
Rejestracja: 17 sie 2015, 20:05
Lokalizacja: Greystones
Kontakt:

Re: Przedwzmacniacz na TDA7439 prośba o dopisanie ustawień zegara i pilota

Post autor: kulamario » 22 lis 2018, 11:24

Do dałem Suby do programu ogólnie wszystko chodzi tz zapamiętuje ustawienia ale jak ściszę na 0 to już nie pod głośni tz na LCD się zmienia ale nie pod głośnia dźwięku
tylko reset pomaga lub ustawienie na jakies wartości volume i włączenie i wyłącznie
  1. 'TDA7439 - 15 listopad 20018    kulamario@yahoo.ie
  2. 'dodany pilot
  3. 'volume up/down
  4. 'ON/OFF z pilota i guzika
  5. 'Mute
  6. 'Funkcje dodane caly pilot zrobiony 20/11/2018
  7. '--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  8. $regfile = "m16def.dat"
  9. $crystal = 8000000                                          '11059200
  10. $swstack = 64
  11. $hwstack = 64
  12. $framesize = 200
  13.  
  14. $include "Config_PCF8583.bas"
  15.  
  16. Config Portc.5 = Output : Relay Alias Portc.5 : Set Relay
  17.  
  18.  
  19. Config Submode = New
  20.  
  21. Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.1 , Db6 = Portd.7 , Db7 = Portd.0 , E = Portd.5 , Rs = Portd.6       'PCB
  22. Config Lcd = 16x2
  23.  
  24. 'Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0       'ZL3AVR
  25. 'Config Lcd = 20x4
  26.  
  27. Initlcd
  28.  
  29. Cursor Off
  30.  
  31. 'Waitms 1000
  32.  
  33. 'Variable for Data to TDA7439
  34. '----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  35. ' konfiguracja RC5
  36.  
  37. Config Rc5 = Pinc.3 , Timer = 2 , Wait = 250
  38.  
  39. 'Config Rc5 = Pinc.3 , Timer = 2
  40.  
  41. Dim Address As Byte , Command As Byte
  42.  
  43. '------------------------------------------------------------------
  44.  
  45. Dim Second As Byte
  46. Dim Minute As Byte
  47. Dim Hour As Byte
  48. Dim Day As Byte
  49. Dim Month As Byte
  50. Dim Year As Word
  51. Dim Weekday As Byte
  52.  
  53. Dim Blad As Byte
  54. Dim Ilosc_dni As Byte
  55. Dim Rok_przestepny As Byte
  56.  
  57. ' pocz¹tkowe wartoœci
  58.  
  59. Second = 0                                                  ' 00:00:00
  60. Minute = 0
  61. Hour = 0
  62. Day = 1                                                     ' 01.01.2000
  63. Month = 1
  64. Year = 2000
  65. Weekday = 6                                                 ' sobota
  66.  
  67. '---------------------------------------------------------------------------------------------------------------------------------------------
  68.  
  69. Declare Sub Memory_on_off()
  70.  
  71. Declare Sub Pwr_on()
  72. Declare Sub Pwr_off()
  73.  
  74. Dim Pwr As Bit
  75. Pwr = 1
  76.  
  77.  
  78. dim Mute_func as byte
  79. 'Mute_func =0
  80.  
  81. Dim Input_value_ee As Eram Byte
  82. Dim Input_gain_value_ee As Eram Byte
  83. Dim Volume_value_ee As Eram Byte
  84. Dim Bass_tone_value_ee As Eram Byte
  85. Dim Middle_tone_value_ee As Eram Byte
  86. Dim Heigh_tone_value_ee As Eram Byte
  87. Dim Balance_r_ee As Eram Byte
  88. Dim Balance_l_ee As Eram Byte
  89. Dim Myval As Byte , Ee_default As Eram Byte
  90.  
  91. Myval = Ee_default
  92. If Myval <> 0 Then
  93.  Ee_default = 0
  94.  
  95.  Input_value_ee = 0
  96.  Input_gain_value_ee = 2
  97.  Volume_value_ee = 45
  98.  Bass_tone_value_ee = 9
  99.  Middle_tone_value_ee = 7
  100.  Heigh_tone_value_ee = 9
  101.  Balance_r_ee = 0
  102.  Balance_r_ee = 0
  103.  
  104.  
  105. End If
  106.  
  107. '----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  108. Dim Input_value As Byte                                     'Zmienna dla multipleksera wejsciowego
  109. Dim Input_gain_value As Byte                                'Zmienna dla poziom wejscia
  110. Dim Volume_value As Byte                                    'Zmienna dla Volume
  111. Dim Bass_tone_value As Byte                                 'Zmienna dla Bas
  112. Dim Middle_tone_value As Byte                               'Zmienna dla tony srodek
  113. Dim Heigh_tone_value As Byte                                'Zmienna dla tony wysokie
  114. Dim Limit_value_max As Byte                                 'Zmienna wartosci graniczna w gore
  115. Dim Limit_value_min As Byte                                 'Zmienna wartosci graniczna w dól
  116.  
  117. Dim Balance_r As Byte                                       'Zmienna dla Balans R
  118. Dim Balance_l As Byte                                       'Zmienna dla Balans L
  119.  
  120. Dim Value As Byte                                           'Wartosc zapisana w rejestrze
  121.  
  122. Dim Adres_tda7439 As Byte                                   'Adres i2c TDA
  123.  
  124. Dim Register As Byte                                        'Zdefiniuj rejestr, w którym zapisano wartosc
  125.  
  126.  
  127. Dim Press_button As Byte                                    'Zmienna do okreslenia nacisniecia klawisza, a tym samym mozliwosc wprowadzenia róznych ustawien
  128. Dim Functional_value As Byte                                'Zmienna jest zdefiniowana dla wszystkich zmiennych poszczególnych ustawien
  129. Dim Held_var As Bit                                         'Zmienna wyswietla sie po nacisnieciu przycisku
  130. Dim Encoder_a As Bit                                        'Zmienna wskazuje, czy przycisk zostal nacisniety
  131. Dim Encoder_b As Bit                                        'Zmienna pokazuje, czy przycisk zostal nacisniety
  132. Dim Button As Bit                                           'Zmienna do okreslenia, czy nacisnieto przycisk wyboru
  133.  
  134. Dim Tmpin As Byte
  135. Dim Count As Word
  136. Dim Tmp_1 As Byte , Tmp_2 As Byte , Db As String * 5 , Tone As String * 6 , Vol_out As String * 7
  137.  
  138. Dim Tone1 As Byte
  139.  
  140. Dim Tone11 As Byte                                          'Tone11 to jest napis z bufora right,left
  141.  
  142. Deflcdchar 1 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 32
  143. Deflcdchar 2 , 32 , 14 , 14 , 14 , 14 , 14 , 32 , 32
  144. Deflcdchar 3 , 4 , 14 , 14 , 14 , 14 , 14 , 4 , 32
  145. Deflcdchar 4 , 32 , 32 , 32 , 21 , 32 , 32 , 32 , 32
  146. Deflcdchar 5 , 6 , 14 , 30 , 30 , 30 , 14 , 6 , 32
  147.  
  148. Declare Sub Bar_vol(byval Vol_out As String , Byval Vol_val As Byte , Byval Sel As Byte)       'bargraf od volume
  149.  
  150. Declare Sub Bar_balans(byval Tone11 As String , Byval Tmp_11 As Byte)       'bargraf od balansu
  151.  
  152. Declare Sub Bargraph_settings(byval Tone As String , Byval Tmp_1 As Byte)       'bargraf od ustawien tonow
  153.  
  154. Declare Sub Settings_tda7439()
  155. Declare Sub Mute()
  156. Declare Sub Selection()
  157. Declare Sub Balance_left()
  158. Declare Sub Balance_right()
  159. Declare Sub Select_input()
  160.  
  161. Declare Sub Change_settings()
  162. Declare Sub Setting_function()
  163.  
  164. Declare Sub High_tones()
  165. Declare Sub Inputgain()
  166. Declare Sub Volume()
  167. Declare Sub Bass()
  168. Declare Sub Middle_tones()
  169.  
  170. Declare Sub Button_test()
  171. Declare Sub Transfer()
  172. Declare Sub Main()
  173. Declare Sub Lcd_init()
  174. Declare Sub Tin(byval Tin_val As Byte)
  175.  
  176. declare sub  Displaytime()
  177.  
  178. 'Ports I2C ATMEGA
  179. '4K7 pullup SCL & SDA
  180.  
  181. Config Scl = Portc.0
  182. Config Sda = Portc.1
  183.  
  184. Config I2cdelay = 20
  185.  
  186. 'Zdefiniuj dla przycisków sterujacych i zdefiniuj je jako wejscia
  187. Dim Sw_cnt As Byte , Lock As Byte
  188. Config Pind.2 = Input : Portd.2 = 1                         'Encoder A
  189. Config Pind.3 = Input : Portd.3 = 1                         'Encoder B
  190. Config Pinc.2 = Input : Portc.2 = 1 : Switch Alias Pinc.2   'switch
  191.  
  192. Config Pinb.0 = Input : Portb.0 = 1 : on_off Alias Pinb.0   'switch on/off
  193.  
  194. Config Debounce = 50
  195. '---------------------------------------------------------------------------------
  196.  
  197. On Int0 Int0_isr
  198. Enable Int0
  199. Config Int0 = Falling
  200.  
  201. Enable Interrupts
  202.  
  203. 'Standart Register
  204.  
  205. Call Settings_tda7439()
  206.  
  207.  
  208. Press_button = 1                                            'Ustaw przycisk, aby ustawic domyslny
  209.  
  210. Cls
  211.  
  212. Locate 1 , 1
  213. Lcd " System TDA7439 "
  214. Locate 2 , 1
  215. Lcd "Wait a moment..."
  216.  
  217. Waitms 1500
  218. Cls
  219. Display Off
  220. '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  221. 'Funkcja aby sprawdzic stan przycisków
  222.  
  223. Call Select_input
  224.  
  225.  
  226. 'Call Volume
  227.  
  228. Display On
  229.  
  230.  
  231. Blad = Pcf8583_storetime(second , Minute , Hour , Day , Month , Year)       ' zapis do Pcf8583
  232.  
  233.  
  234.  
  235. '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  236. 'Funkcja do sprawdzania, czy zostal nacisniety przycisk
  237. Sub Button_test()
  238.  
  239.    Encoder_a = 0
  240.    Encoder_b = 0
  241.    Button = 0
  242.  
  243.    If Tifr.ocf2 = 1 Then                                   'minê³o 10ms, flagê ustawia Timer
  244.       Tifr.ocf2 = 1                                         'flagi kasuje siê wpisuj¹c jeden, nie zero
  245.  
  246.  
  247.       If Switch = 0 Then                                    'jeœli wciœniêto przycisk
  248.          If Lock = 0 Then                                   'a jeszcze nie ma blokady
  249.             If Sw_cnt < 50 Then                             'tu jesteœmy co 10ms i jeœli jeszcze nie osi¹gneliœmy granicy
  250.                Incr Sw_cnt                                  'to dodajemy do licznika Sw_cnt
  251.             Else                                            'jeœ³i granica osi¹gniêta
  252.                Lock = 1                                     'zablokuj dodawanie a¿ do puszczenia przycisku
  253.                Call Memory_on_off()
  254.  
  255.                '->tu dajemy to co ma sie dziac po dlugim nacisnieciu
  256.  
  257.             End If
  258.          End If
  259.       Else                                                  'kiedy zwalniamy przycisk
  260.          If Lock = 0 Then                                   'a nie by³o to d³ugie wciœniêcie
  261.             If Sw_cnt > 3 Or Command = 82 Then Call Selection       'sprawdŸ czy to nie drganie styków 3x10ms = 30ms
  262.  
  263.          End If                                             '->zmieñ stan pierwszej diody
  264.          Lock = 0 : Sw_cnt = 0                              'wy³¹cz blokadê i zeruj licznik
  265.       End If
  266.  
  267.  
  268.    End If
  269.  
  270. End Sub
  271.  
  272.  
  273. '---------------------------------------------------------------------------------------------------------------------------------------
  274.  
  275.  
  276.  
  277. '---------------------------------------------------------------------------------------------------------------------------------------
  278.  
  279. '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  280. 'Funkcja do zmiany ustawien Bass Treble Middle itp.
  281. Sub Change_settings()
  282.  
  283.    If Button = 1 Then
  284.       Count = 0
  285.       If Press_button > 8 Then
  286.          Press_button = 1                                   'Po dotarciu na koniec, nacisnij klawisz resetowania
  287.       End If
  288.    End If
  289.  
  290.  
  291.    Select Case Press_button                                 'Przy pewnym stanie opcji wywolywania klawiatury
  292.       Case 1 : Call Volume
  293.       Case 2 : Call Select_input
  294.       Case 3 : Call Inputgain
  295.       Case 4 : Call Bass
  296.       Case 5 : Call Middle_tones
  297.       Case 6 : Call High_tones
  298.  
  299.  
  300.       Case 7 : Call Balance_right
  301.       Case 8 : Call Balance_left
  302.  
  303.  
  304.    End Select
  305.  
  306.    Button = 0                                               'Zresetuj przycisk wyboru
  307.    Waitms 80
  308. End Sub
  309.  
  310. '///////////////////////////////////////////////////////////////////////////////
  311. 'Funkcja wspólna dla wszystkich ustawien
  312.  
  313. Sub Setting_function()
  314.  
  315.  
  316.  
  317.    If Encoder_a = 1 Or Command = 17 or command = 86 Then    'Sprawdz enkoder
  318.       If Functional_value < Limit_value_max Then            'Zapobiegaj przepelnieniu
  319.          Functional_value = Functional_value + 1            'Zwieksz wartosc funkcji o 1
  320.          Call Transfer                                      'Funkcja do transferu
  321.       End If
  322.    End If
  323.  
  324.    If Encoder_b = 1 Or Command = 16 or command = 85 Then
  325.  
  326.       If Functional_value > Limit_value_min Then
  327.          Functional_value = Functional_value - 1
  328.          Call Transfer
  329.       End If
  330.    End If
  331.  
  332.  
  333.    Select Case Press_button                                 'Przy pewnym stanie opcji wywolywania klawiatury
  334.       Case 1 : Volume_value_ee = Functional_value
  335.       Case 2 : Input_value_ee = Functional_value
  336.       Case 3 : Input_gain_value_ee = Functional_value
  337.       Case 4 : Bass_tone_value_ee = Functional_value
  338.       Case 5 : Middle_tone_value_ee = Functional_value
  339.       Case 6 : Heigh_tone_value_ee = Functional_value
  340.  
  341.  
  342.       Case 7 : Balance_r_ee = Functional_value
  343.       Case 8 : Balance_l_ee = Functional_value
  344.  
  345.  
  346.    End Select
  347.  
  348.  
  349. End Sub
  350.  
  351.  
  352. '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  353. 'Funkcja dla multipleksera wejsciowego
  354.  
  355. Sub Select_input()
  356. 'Set In_shift
  357.    If Held_var = 0 Then                                     'Zapobiec po prostu zmianie wejsc poprzez przytrzymanie klawiszy
  358.       Limit_value_max = 3                                   'Zapobiegaj przepelnieniu
  359.       Limit_value_min = 0
  360.       Register = &B00000000                                 'Wybierz rejestry dla multipleksera wejsciowego
  361.       Functional_value = Input_value                        ' Wartosc funkcji jest przypisana do ustawien wejsc
  362.       Call Setting_function
  363.       Input_value = Functional_value
  364.       Tmpin = Input_value + 1                               'Stara zmienna zostanie zastapiona nowa wartoscia
  365.       Cls
  366.       Locate 1 , 6
  367.       Lcd "INPUT"
  368.       Locate 2 , 1
  369.  
  370.       Select Case Input_value
  371.  
  372.          Case 3 : Lcd "      CD"
  373.          Case 2 : Lcd "      FM"
  374.          Case 1 : Lcd "    USB DAC"
  375.          Case 0 : Lcd "     PHONE"
  376.       End Select
  377.  
  378.       Waitms 300
  379.    End If
  380. End Sub
  381.  
  382.  
  383.  
  384.  
  385.  
  386. '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  387. 'Funkcja do ustawiania czulosci wejsciowej
  388.  
  389. Sub Inputgain()
  390.    Local Tmpa As Byte
  391.    Limit_value_max = 15                                     'Ogranicz wzmocnienie wejsciowe do 30 db
  392.    Limit_value_min = 0
  393.    Register = &B00000001                                    'Wybierz rejestr dla regulacji czulosci
  394.    Functional_value = Input_gain_value                      'Wartosci funkcji przypisuje sie wejsciowa wartosc wzmocnienia
  395.  
  396.    Call Setting_function
  397.    Input_gain_value = Functional_value
  398.    Tmpa = Input_gain_value * 2
  399.    Call Tin(input_gain_value)
  400. End Sub
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408. '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  409. 'Funkcja do zmiany glosnosci
  410.  
  411. Sub Volume()
  412.  
  413.    Local S_1 As String * 7
  414.    Local Vol_value As Byte
  415.    Limit_value_max = 49                                     'volume jest ograniczony do góry
  416.    Limit_value_min = 0
  417.    Register = &B00000010                                    'Wybierz rejestr dla glosnosci
  418.    Functional_value = Volume_value
  419.  
  420.    Call Setting_function
  421.  
  422.    Volume_value = Functional_value
  423.  
  424.  
  425.    Select Case Input_value
  426.  
  427.       Case 3 : S_1 = "CD"
  428.       Case 2 : S_1 = "FM"
  429.       Case 1 : S_1 = "USB DAC"
  430.       Case 0 : S_1 = "PHONE"
  431.  
  432.    End Select
  433.  
  434.  
  435.    Vol_value = Volume_value - 50
  436.    Vol_value = Not Vol_value
  437.  
  438.    Call Bar_vol(s_1 , Vol_value , 1)
  439.  
  440.  
  441.  
  442.    'writeeeprom Volume_value , 2
  443.  '-------------------------------------------------------------------------------------------------------------------------------------
  444.  
  445.   'blad= Pcf8583_gettime()                       ' odczytaj godzinê i date z uk³adu PCF8583 , funkcja zwraca kod b³êdu
  446.  
  447.    '          If Blad = 2 Then                               ' je¿eli uszkodzona data
  448.  
  449.  
  450.     '               Locate 1 , 1 : Lcd "  USTAW ZEGAR!  "        ' wyœwietl komunikat
  451.      '              Locate 2 , 1 : Lcd Spc(16)
  452.                                                                                                           ' sprawdzanie PCF8583
  453.  
  454.       '       Elseif Blad = 1 Then                           ' je¿eli b³¹d magistrali I2C
  455.  
  456.  
  457.        '            Locate 1 , 1 : Lcd "B{003}{001}d:"           ' wyœwietl komunikat
  458.         '           Lcd Spc(11)
  459.          '          Locate 2 , 1 : Lcd "magistrala I2C  "
  460.  
  461.  
  462.           '   Elseif Blad = 0 Then                           ' je¿eli prawid³owo odczytane dane
  463.            '    Call Displaytime()                           ' wyœwietl zegar
  464.  
  465.             'end if
  466. '-------------------------------------------------------------------------------------------------------------------------------------
  467.  
  468. End Sub
  469.  
  470.  
  471. '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  472. 'Funkcja basów
  473.  
  474. Sub Bass()
  475.    Local Tmpa As String * 6
  476.    Limit_value_max = 14
  477.    Limit_value_min = 0
  478.    Register = &B00000011                                    'Wybierz rejestr dla bass
  479.    Functional_value = Bass_tone_value
  480.    Tone1 = 1
  481.    Call Setting_function
  482.    Bass_tone_value = Functional_value
  483.    Call Bargraph_settings( "BASS" , Bass_tone_value)
  484. End Sub
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491. '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  492. 'Funkcja srodkowych tonow
  493.  
  494. Sub Middle_tones()
  495.    Local Tmpa As String * 6
  496.    Limit_value_max = 14
  497.    Limit_value_min = 0
  498.    Register = &B00000100
  499.    Functional_value = Middle_tone_value                     'Wybierz rejestr dla tonow srednich
  500.    Tone1 = 1
  501.    Call Setting_function
  502.    Middle_tone_value = Functional_value
  503.    Call Bargraph_settings( "MIDDLE" , Middle_tone_value )
  504.  
  505.  
  506.  
  507. End Sub
  508.  
  509.  
  510.  
  511.  
  512.  
  513. '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  514. 'Funkcja wysokich tonow
  515.  
  516. Sub High_tones()                                            'NOP
  517.    Local Tmpa As String * 6
  518.    Limit_value_max = 14
  519.    Limit_value_min = 0
  520.    Register = &B00000101                                    'Wybierz rejestr dla tonow wysokich
  521.    Functional_value = Heigh_tone_value
  522.    Tone1 = 1
  523.    Call Setting_function
  524.    Heigh_tone_value = Functional_value
  525.    Call Bargraph_settings( "TREBLE" , Heigh_tone_value)
  526. End Sub
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536. '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  537. 'Funkcja do regulacji balansu prawego kanalu
  538.  
  539. Sub Balance_right()
  540.    Local Tmpa As String * 7
  541.    Limit_value_max = 79                                     'ograniczyc do -79db
  542.    Limit_value_min = 0
  543.    Register = &B00000110
  544.    Functional_value = Balance_r
  545.    Tone11 = 1                                               'Tone11 to jest napis z bufora right,left
  546.    Call Setting_function
  547.    Balance_r = Functional_value
  548.  
  549.    Call Bar_balans( "RIGHT " , Balance_r )
  550.  
  551.    'Cls
  552. '   Locate 1 , 1
  553. '   Lcd "BALANCE R "                                            '; Tmpin ; "  "
  554. '   Locate 2 , 1
  555. '   Lcd Balance_R ; "           "
  556. End Sub
  557.  
  558.  
  559.  
  560.  
  561.  
  562. '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  563. 'Funkcja do regulacji balansu lewego kanalu
  564.  
  565. Sub Balance_left()
  566.    Local Tmpa As String * 7
  567.    Limit_value_max = 79                                     'ograniczyc do -79db
  568.    Limit_value_min = 0
  569.    Register = &B00000111
  570.    Functional_value = Balance_l
  571.    Tone11 = 1                                               'Tone11 to jest napis z bufora right,left
  572.    Call Setting_function
  573.    Balance_l = Functional_value
  574.    Call Bar_balans( "LEFT " , Balance_l )
  575.  
  576.  
  577.   ' Cls
  578. '   Locate 1 , 1
  579. '   Lcd "BALANCE L "                                            ' ; Tmpin ; "  "
  580. '   Locate 2 , 1
  581. '   Lcd Balance_L ; "           "
  582.  
  583. End Sub
  584.  
  585. '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  586. 'Funkcja rozpoznawana po nacisnieciu przycisku wyboru
  587.  
  588. Sub Selection()
  589.  
  590.    Button = 1
  591.  
  592.    Incr Press_button
  593.  
  594.    Call Change_settings
  595.  
  596.    Waitms 200
  597.  
  598.  
  599. End Sub
  600.  
  601. '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  602. 'Funkcja do przesylania danych do TDA
  603.  
  604. Sub Transfer()
  605.  
  606.    Value = Functional_value                                 'Wartosc funkcji jest zapisywana do zmiennej wyjsciowej                                            'Led ein
  607.    If Tone1 = 1 Then
  608.       Tone1 = 0
  609.       Select Case Value
  610.  
  611.          Case 0 : Value = 0
  612.          Case 1 : Value = 1
  613.          Case 2 : Value = 2
  614.          Case 3 : Value = 3
  615.          Case 4 : Value = 4
  616.          Case 5 : Value = 5
  617.          Case 6 : Value = 6
  618.          Case 7 : Value = 7
  619.          Case 8 : Value = 15
  620.          Case 9 : Value = 14
  621.          Case 10 : Value = 13
  622.          Case 11 : Value = 12
  623.          Case 12 : Value = 11
  624.          Case 13 : Value = 10
  625.          Case 14 : Value = 9
  626.          Case 15 : Value = 8
  627.  
  628.       End Select
  629.    End If
  630.  
  631.    I2cstart                                                 'Rozpocznij wysylanie
  632.    If Err = 0 Then
  633.       I2cwbyte Adres_tda7439                                'Wyslij na adres TDA
  634.       If Err = 0 Then
  635.          I2cwbyte Register                                  'Wybierz rejestr
  636.          I2cwbyte Value                                     'Zapisz wartosc w rejestrze
  637.          I2cstop                                            ' Stop
  638.       End If
  639.    End If
  640.    Waitms 20
  641.  
  642.  
  643.  
  644.  
  645. End Sub
  646.  
  647.  
  648.  
  649.  
  650. '--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  651.  
  652. '--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  653.  
  654. Sub Pwr_on()
  655.  
  656.    start watchdog
  657.  
  658.    Waitms 100
  659.  
  660.    stop watchdog
  661.  
  662. End Sub
  663.  
  664.  
  665. '------------------------------------------------------------------------------------------------------------------------------------------
  666.  
  667.  
  668. Sub Pwr_off()
  669.  
  670.  
  671.  
  672.  
  673.    Cls
  674.  
  675.    Locate 1 , 1
  676.    Lcd "   System OFF   "
  677.  
  678.    Waitms 1000
  679.  
  680.    Display Off
  681.  
  682.    Reset Relay
  683.  
  684.    Ddrd = &B00000000
  685.  
  686. End Sub
  687.  
  688.  
  689. '-------------------------------------------------------------------------------------------------------------------------------------------
  690.  
  691.  
  692. Sub Memory_on_off()
  693.  
  694.    Pwr = Not Pwr
  695.  
  696.    If Pwr = 1 Then
  697.  
  698.       Call Pwr_on()
  699.  
  700.    Else
  701.  
  702.       Call Pwr_off()
  703.  
  704.    End If
  705.  
  706. End Sub
  707.  
  708.  
  709.  
  710. '------------------------------------------------------------------------------------------------------------------------------------------
  711.  
  712. Sub Settings_tda7439()
  713.  
  714.  
  715.    Adres_tda7439 = &H88                                     'adres chipa urzadzenia TDA7439
  716.    Register = &B00000000                                    'Wybierz rejestr wejsciowy
  717.    Input_value = Input_value_ee                             'Wybierz wejscie 1
  718.    Functional_value = Input_value                           'Wartosc poczatkowa rejestru multipleksera wejsciowego jest przypisana do wartosci funkcji
  719.    Call Transfer                                            'Funkcja wywolania dla transferu danych
  720.  
  721.    Adres_tda7439 = &H88                                     'adres chipa urzadzenia TDA7439
  722.    Register = &B00000001                                    'Podadres rejestru kontroli wzmocnienia wejscia
  723.    Input_gain_value = Input_gain_value_ee
  724.    Functional_value = Input_gain_value                      'Wybierz wzmocnienie wejscia (20db)
  725.    Call Transfer                                            'Funkcja wywolania dla transferu danych
  726.  
  727.    Adres_tda7439 = &H88
  728.    Register = &B00000010
  729.  
  730.    Volume_value = Volume_value_ee
  731.  
  732.    'readeeprom Volume_value , 2
  733.  
  734.  
  735.    Functional_value = Volume_value                          'Ustaw glosnosc na -10db
  736.    Call Transfer                                            'Funkcja wywolania dla transferu danych
  737.  
  738.    Adres_tda7439 = &H88
  739.    Register = &B00000011                                    'Rejestr  Bass
  740.    Bass_tone_value = Bass_tone_value_ee                     'Wybierz Bass 0db
  741.    Functional_value = Bass_tone_value
  742.    Call Transfer                                            'Funkcja wywolania dla transferu danych
  743.  
  744.    Adres_tda7439 = &H88
  745.    Register = &B00000100                                    'Rejestr srodek
  746.    Middle_tone_value = Middle_tone_value_ee                 'srodek 0db
  747.    Functional_value = Middle_tone_value
  748.    Call Transfer                                            'Funkcja wywolania dla transferu danych
  749.  
  750.    Adres_tda7439 = &H88
  751.    Register = &B00000101                                    'Rejestr wysokie tony
  752.    Heigh_tone_value = Heigh_tone_value_ee                   'wysokie tony 0db
  753.    Functional_value = Heigh_tone_value
  754.    Call Transfer                                            'Funkcja wywolania dla transferu danych
  755.  
  756.    Adres_tda7439 = &H88
  757.    Register = &B00000110                                    'Rejestr Balans prawy kanal                                        RIGHT SPEAKER
  758.    Balance_r = Balance_r_ee                                 '0db Balans_R
  759.    Functional_value = Balance_r
  760.    Call Transfer                                            'Funkcja wywolania dla transferu danych
  761.  
  762.    Adres_tda7439 = &H88
  763.    Register = &B00000111                                    'Rejestr Balans lewy kanal                                             LEFT SPEAKER
  764.    Balance_l = Balance_l_ee
  765.    Functional_value = Balance_l                             '0db Balans lewy
  766.    Call Transfer                                            'Funkcja wywolania dla transferu danych
  767.  
  768.  
  769. End Sub
  770.  
  771.  
  772. Do
  773.  
  774.  
  775.    '-----------------------------------------------------------------------------------------------------------------------------------------------------
  776.  
  777.    if on_off = 0 then
  778.       call Memory_on_off()                                  'switch ON/OFF
  779.    end if
  780.  
  781.  
  782.  
  783.    '-----------------------------------------------------------------------------------------------------------------------REMOTe CONTROLER--------------
  784.  
  785.    Getrc5(address , Command)                                'read if we have remote ir command
  786.  
  787.    If Address = 0 Then
  788.  
  789.       Command = Command And &B01111111
  790.  
  791.    End If
  792.  
  793.  
  794.    Select Case Command
  795.  
  796.       '---- 8codes for remote , change code to your suit ! ----------------
  797.  
  798.       'Case 87 : Call Selection()                         'remote command code for OK
  799.  
  800.       Case 16 : Call Volume()                             'remote command code for VOL +
  801.       Case 17 : Call Volume()                               'remote command code for VOL -
  802.  
  803.       Case 13 : Call Mute()
  804.  
  805.       Case 12 : Call Memory_on_off()
  806.  
  807.       case 85 : call Change_settings()      'lewo
  808.       case 86 : call Change_settings()      'prawo
  809.  
  810.  
  811.    End Select
  812.  
  813.  
  814.  
  815.    If Count < 181 Then Incr Count                           'menu exit time
  816.    If Count = 180 Then                                      ' set to main volume
  817.       Press_button = 1
  818.  
  819.       Call Volume
  820.  
  821.    End If
  822.  
  823.    Waitms 10
  824.  
  825.    Call Button_test
  826.  
  827. Loop
  828.  
  829. End
  830.  
  831.  
  832. Sub Tin(byval Tin_val As Byte)
  833.    Cls
  834.    Select Case Tin_val
  835.       Case 0 : Db = " +0db"
  836.       Case 1 : Db = " +2db"
  837.       Case 2 : Db = " +4db"
  838.       Case 3 : Db = " +6db"
  839.       Case 4 : Db = " +8db"
  840.       Case 5 : Db = "+10db"
  841.       Case 6 : Db = "+12db"
  842.       Case 7 : Db = "+14db"
  843.       Case 8 : Db = "+16db"
  844.       Case 9 : Db = "+18db"
  845.       Case 10 : Db = "+20db"
  846.       Case 11 : Db = "+22db"
  847.       Case 12 : Db = "+24db"
  848.       Case 13 : Db = "+26db"
  849.       Case 14 : Db = "+28db"
  850.       Case 15 : Db = "+30db"
  851.    End Select
  852.    Tin_val = Tin_val + 1
  853.    Locate 1 , 1
  854.    Lcd "GAIN IN  "
  855.    Locate 1 , 12
  856.    Lcd Db
  857.    Locate 2 , 1
  858.    Lcd Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4)
  859.    Locate 2 , Tin_val
  860.    Lcd Chr(2)
  861.  
  862. End Sub
  863.  
  864. Sub Bargraph_settings(byval Tone As String , Byval Tmp_1 As Byte)
  865.    Cls
  866.    Select Case Tmp_1
  867.       Case 0 : Db = "-14db"
  868.       Case 1 : Db = "-12db"
  869.       Case 2 : Db = "-10db"
  870.       Case 3 : Db = " -8db"
  871.       Case 4 : Db = " -6db"
  872.       Case 5 : Db = " -4db"
  873.       Case 6 : Db = " -2db"
  874.       Case 7 : Db = " -0db"
  875.       Case 8 : Db = " +2db"
  876.       Case 9 : Db = " +4db"
  877.       Case 10 : Db = " +6db"
  878.       Case 11 : Db = " +8db"
  879.       Case 12 : Db = "+10db"
  880.       Case 13 : Db = "+12db"
  881.       Case 14 : Db = "+14db"
  882.    End Select
  883.  
  884.    Tmp_2 = Tmp_1 + 1
  885.    Locate 1 , 1
  886.    Lcd Tone ; "  "
  887.    Locate 1 , 11
  888.    Lcd Db
  889.    Locate 2 , 1
  890.    Lcd Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(1) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4)
  891.    Locate 2 , Tmp_2
  892.  
  893.    If Tmp_2 = 8 Then
  894.       Lcd Chr(3)
  895.    Else
  896.       Lcd Chr(2)
  897.    End If
  898. End Sub
  899.  
  900.  
  901.  
  902. Sub Bar_balans(byval Tone11 As String , Byval Tmp_11 As Byte)
  903.  
  904.    Local Help1 As Single
  905.  
  906.    Help1 = Tmp_11 / 5
  907.  
  908.    Cls
  909.    Select Case Help1                                        'Tmp_11
  910.       Case 0 : Db = "-100%"
  911.       Case 1 : Db = "-94%"
  912.       Case 2 : Db = "-88%"
  913.       Case 3 : Db = "-82%"
  914.       Case 4 : Db = "-76%"
  915.       Case 5 : Db = "-64%"
  916.       Case 6 : Db = "-58%"
  917.       Case 7 : Db = "-50%"
  918.       Case 8 : Db = "-42%"
  919.       Case 9 : Db = "-38%"
  920.       Case 10 : Db = "-32%"
  921.       Case 11 : Db = "-26%"
  922.       Case 12 : Db = "-18%"
  923.       Case 13 : Db = "-10%"
  924.       Case 14 : Db = "-0%"
  925.  
  926.  
  927.    End Select
  928.  
  929.    Tmp_2 = Help1 + 1
  930.    Locate 1 , 1
  931.    Lcd Tone11 ; "  "                                        'Tone11 to jest napis z bufora right,left
  932.    Locate 1 , 12
  933.    Lcd Db
  934.    Locate 2 , 1
  935.    Lcd Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4)
  936.    Locate 2 , Tmp_2
  937.  
  938.    Lcd Chr(2)
  939.  
  940.  
  941.  
  942. End Sub
  943.  
  944.  
  945.  
  946.  
  947.  
  948. Sub Bar_vol(byval Vol_out As String , Byval Vol_val As Single , Byval Sel As Byte)
  949.  
  950.    Local Tt As Single
  951.  
  952.    Cls
  953.  
  954. '--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  955.    If Vol_val = 0 Then
  956.  
  957.       Call Mute()                                              'moje mute
  958.  
  959.       end if
  960.  
  961. '--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  962.  
  963.  
  964.  
  965.    If Sel = 1 Then
  966.       Tt = Vol_val / 3.0625
  967.  
  968.       Tmp_2 = Tt
  969.       Locate 1 , 1
  970.  
  971.       Lcd Vol_out ; " "                                     '; Tmpin
  972.       Locate 1 , 11
  973.       If Vol_val < 10 Then Lcd " "
  974.       Lcd " -" ; Vol_val ; "db"
  975.    End If
  976.  
  977.    If Sel = 2 Then
  978.       Tmp_2 = Vol_val + 1
  979.  
  980.       Locate 1 , 1
  981.       Lcd Vol_out
  982.       Locate 1 , 11
  983.       If Vol_val < 10 Then Lcd " "
  984.       Lcd "  " ; Vol_val ; "db"
  985.    End If
  986.  
  987.  
  988.    Locate 2 , 1
  989.    Lcd Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4) ; Chr(4)
  990.    Locate 2 , Tmp_2
  991.    Lcd Chr(2)
  992.  
  993. End Sub
  994.  
  995.  
  996.  
  997.  
  998. End
  999.  
  1000.  
  1001. Sub Mute()
  1002.  
  1003.    If Mute_func = 0 Then
  1004.       Mute_func = 1
  1005.  
  1006.           'MUTE ON
  1007.  
  1008.       Register = &B00010110                                       'Speaker attenuate R + bus increment
  1009.       Value = &B01111000
  1010.  
  1011.       I2cstart
  1012.       If Err = 0 Then
  1013.          I2cwbyte Adres_tda7439                                'Wyslij na adres TDA
  1014.          If Err = 0 Then
  1015.             I2cwbyte Register                                  'Speaker attenuate R + bus increment
  1016.             I2cwbyte Value                                     'Mute R ON
  1017.             I2cwbyte Value                                     'Mute L ON
  1018.             I2cstop
  1019.          End If
  1020.       End If
  1021.  
  1022.       cls
  1023.  
  1024.       locate 1,1
  1025.       lcd "    M U T E    "
  1026.  
  1027.  
  1028.    Else
  1029.  
  1030.       Mute_func = 0
  1031.  
  1032.  
  1033.           'MUTE OFF
  1034.  
  1035.       Register = &B00010110                                       'Speaker attenuate R + bus increment
  1036.       Value = &B00000000
  1037.  
  1038.       I2cstart
  1039.       If Err = 0 Then
  1040.          I2cwbyte Adres_tda7439                                'Wyslij na adres TDA
  1041.          If Err = 0 Then
  1042.             I2cwbyte Register                                  'Speaker attenuate R + bus increment
  1043.             I2cwbyte Value                                     'Mute R OFF
  1044.             I2cwbyte Value                                     'Mute L OFF
  1045.             I2cstop
  1046.  
  1047.             Call Volume()
  1048.  
  1049.          End If
  1050.       End If
  1051.  
  1052.  
  1053.  
  1054.    End If
  1055.  
  1056. End Sub
  1057.  
  1058. '-------------------------------------------------------------------------------
  1059.  
  1060. Sub Displaytime()
  1061.  
  1062.    Locate 1 , 1
  1063.    If Hour < 10 Then Lcd "0" : Lcd Hour ; ":"
  1064.    If Minute < 10 Then Lcd "0" : Lcd Minute ; ":"
  1065.    If Second < 10 Then Lcd "0" : Lcd Second
  1066.  
  1067.    Lcd Spc(16)                                         ' 16 spacji
  1068.  
  1069.  
  1070.    Locate 2 , 1
  1071.    Lcd Lookupstr(weekday , Weekdays) ; " "
  1072.    If Day < 10 Then Lcd "0" : Lcd Day ; "-"
  1073.    If Month < 10 Then Lcd "0" : Lcd Month ; "-" ; Year
  1074.    Lcd Spc(2)                                               ' 2 spacji
  1075.  
  1076. End Sub
  1077.  
  1078. '-------------------------------------------------------------------
  1079. Weekdays:
  1080.    Data "Nie" , "Pon" , "Wto" , "Sro" , "Czw" , "Pt " , "Sob"
  1081.  
  1082. '-------------------------------------------------------------------
  1083. Monthlengths:
  1084.    Data 0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31
  1085.  
  1086. '-------------------------------------------------------------------
  1087.  
  1088.  
  1089. Int0_isr:
  1090.  
  1091.    Disable Int0
  1092.  
  1093.    If Pind.3 = 0 Then
  1094.  
  1095.       Count = 0
  1096.  
  1097.       If Press_button = 1 Or Press_button = 2 Then
  1098.  
  1099.          Encoder_a = 1
  1100.          Encoder_b = 0
  1101.  
  1102.       Else
  1103.  
  1104.          Encoder_a = 0
  1105.          Encoder_b = 1
  1106.  
  1107.       End If
  1108.  
  1109.  
  1110.       Button = 0
  1111.  
  1112.       Held_var = 0
  1113.  
  1114.  
  1115.  
  1116.       Call Setting_function
  1117.       Call Change_settings
  1118.  
  1119.  
  1120.    Else
  1121.  
  1122.       Count = 0
  1123.  
  1124.       If Press_button = 1 Or Press_button = 2 Then
  1125.  
  1126.          Encoder_a = 0
  1127.          Encoder_b = 1
  1128.  
  1129.       Else
  1130.  
  1131.          Encoder_a = 1
  1132.          Encoder_b = 0
  1133.  
  1134.       End If
  1135.  
  1136.       Button = 0
  1137.  
  1138.       Held_var = 0
  1139.  
  1140.  
  1141.  
  1142.       Call Setting_function
  1143.       Call Change_settings
  1144.  
  1145.  
  1146.    End If
  1147.  
  1148.    Gifr = 64
  1149.  
  1150.  
  1151.    Enable Int0
  1152.  
  1153.  
  1154. Return
  1155.  
  1156.  
  1157.  
  1158. $include "PCF8583.bas"
ODPOWIEDZ