Napisałem wczoraj, ale program nie działa, mnie ma poleceń ack i nack bo kompilator Bascoma twierdzi, że jest w nich błąd, gdyby ktoś z was mógł je dopisać tam, gdzie są potrzebne.
Jak napisałem tak:
i2cwbyte 00000000 , ack
to w tej linijce był błąd
i2cwbyte vol , ack tu tez był błąd
a jeśli chodzi o spacje przed i po przecinku to Bascom dostawia je sam.
Parametr głośności do wysłania podany jest liczbą dziesiętną, a nie dwójkową (tak pokazano w katalogu). Nie wiem czy o przeszkadza czy nie.
Wysyłam również notę katalogowa TDA8425.
jak zamieniać liczby z dziesiętnych na dwójkowe?
Config Lcd = 24 * 2
Config Lcdpin = Pin , Db4 = P1.4 , Db5 = P1.5 , Db6 = P1.6 , Db7 = P1.7 , E = P1.3 , Rs = P1.2
Cursor Off
Config Scl = 3.0 'stawienia I2C
Config Sda = 3.1
Declare Sub Disp 'deklaracja podprog
Dim Fun As Byte 'deklaracja zmiennych
Dim Vol As Byte
Vol = 220
Set P3.7 'poczatkowe ustawianie portow
Set P1.0
Reset P3.5
Reset P3.2
Reset P3.3
Reset P3.4
Call Disp
I2cstart 'poczatkowe ustawianie
I2cwbyte 160 'basu sopranu na pozycje srodkowe
I2cwbyte 00000000
I2cwbyte Vol
I2cwbyte 00000001
I2cwbyte Vol
I2cwbyte 00001000
I2cwbyte 11001010
I2cwbyte 00000010
I2cwbyte 11110110
I2cwbyte 00000011
I2cwbyte 11110110 'wylaczenie mute i przelaczenie wejsc
I2cstop
Do
If P3.5 = 1 Then 'przyzszly przelacznik miedzy funkcjami
If Fun = 3 Then 'odlicza za kazdym nac +1 do trzech
Fun = 0
Else
Fun = Fun + 1
Call Disp
Waitms 200
End If
End If
If P3.7 = 0 Then 'jesli nacisnieto klawisz "+"
If Vol = 254 Then 'jesli zmienna jest rowna 254
Call Disp ' (czyli max skali volume)
Else 'to tylko wyswietl obecna zmienna
Vol = Vol + 1
Call Disp
I2cstart
I2cwbyte 160
I2cwbyte 00000000
I2cwbyte Vol
I2cwbyte 00000001
I2cwbyte Vol
I2cstop
Waitms 200
End If
End If
If P1.0 = 0 Then 'jesli nacisnieto klawisz "-"
If Vol = 220 Then 'jesli zmienna jest rowna 254
Call Disp ' (czyli min skali volume)
Else 'to tylko wyswietl obecna zmienna
Vol = Vol - 1
Call Disp
I2cstart
I2cwbyte 130
I2cwbyte 00000000
I2cwbyte Vol
I2cwbyte 00000001
I2cwbyte Vol
I2cstop
Waitms 200
End If
End If
Loop
Sub Disp 'obsluga lcd i tyle
Cls
Lcd "FUNC " ; Fun ; " GLOS " ; Vol
Locate 1 , 16
Lcd Vol
Locate 2 , 1
Lcd "OPE +P3.7 -P1.0 funcP3.5"
End Sub
End
Proszę o dopisanie jak te komendy utrzymania transmisji się pisze, oraz komendę do przeliczania liczb dziesiętnych->dwójkowe.
tomek
Jak napisałem tak:
i2cwbyte 00000000 , ack
to w tej linijce był błąd
i2cwbyte vol , ack tu tez był błąd
a jeśli chodzi o spacje przed i po przecinku to Bascom dostawia je sam.
Parametr głośności do wysłania podany jest liczbą dziesiętną, a nie dwójkową (tak pokazano w katalogu). Nie wiem czy o przeszkadza czy nie.
Wysyłam również notę katalogowa TDA8425.
jak zamieniać liczby z dziesiętnych na dwójkowe?
Config Lcd = 24 * 2
Config Lcdpin = Pin , Db4 = P1.4 , Db5 = P1.5 , Db6 = P1.6 , Db7 = P1.7 , E = P1.3 , Rs = P1.2
Cursor Off
Config Scl = 3.0 'stawienia I2C
Config Sda = 3.1
Declare Sub Disp 'deklaracja podprog
Dim Fun As Byte 'deklaracja zmiennych
Dim Vol As Byte
Vol = 220
Set P3.7 'poczatkowe ustawianie portow
Set P1.0
Reset P3.5
Reset P3.2
Reset P3.3
Reset P3.4
Call Disp
I2cstart 'poczatkowe ustawianie
I2cwbyte 160 'basu sopranu na pozycje srodkowe
I2cwbyte 00000000
I2cwbyte Vol
I2cwbyte 00000001
I2cwbyte Vol
I2cwbyte 00001000
I2cwbyte 11001010
I2cwbyte 00000010
I2cwbyte 11110110
I2cwbyte 00000011
I2cwbyte 11110110 'wylaczenie mute i przelaczenie wejsc
I2cstop
Do
If P3.5 = 1 Then 'przyzszly przelacznik miedzy funkcjami
If Fun = 3 Then 'odlicza za kazdym nac +1 do trzech
Fun = 0
Else
Fun = Fun + 1
Call Disp
Waitms 200
End If
End If
If P3.7 = 0 Then 'jesli nacisnieto klawisz "+"
If Vol = 254 Then 'jesli zmienna jest rowna 254
Call Disp ' (czyli max skali volume)
Else 'to tylko wyswietl obecna zmienna
Vol = Vol + 1
Call Disp
I2cstart
I2cwbyte 160
I2cwbyte 00000000
I2cwbyte Vol
I2cwbyte 00000001
I2cwbyte Vol
I2cstop
Waitms 200
End If
End If
If P1.0 = 0 Then 'jesli nacisnieto klawisz "-"
If Vol = 220 Then 'jesli zmienna jest rowna 254
Call Disp ' (czyli min skali volume)
Else 'to tylko wyswietl obecna zmienna
Vol = Vol - 1
Call Disp
I2cstart
I2cwbyte 130
I2cwbyte 00000000
I2cwbyte Vol
I2cwbyte 00000001
I2cwbyte Vol
I2cstop
Waitms 200
End If
End If
Loop
Sub Disp 'obsluga lcd i tyle
Cls
Lcd "FUNC " ; Fun ; " GLOS " ; Vol
Locate 1 , 16
Lcd Vol
Locate 2 , 1
Lcd "OPE +P3.7 -P1.0 funcP3.5"
End Sub
End
Proszę o dopisanie jak te komendy utrzymania transmisji się pisze, oraz komendę do przeliczania liczb dziesiętnych->dwójkowe.
tomek