Re: BASCOM AVR в вопросах и ответах
Добавлено: Ср июн 13, 2012 15:07:49
Ладно, спасибо. Буду дальше разбираться.
Здесь можно немножко помяукать :)
https://radiokot.ru/forum/
Код: Выделить всё
' /////////////////////////
'// for KS-H-146, KS-H-148
Const__gainoff Alias &B10001000
Const__gainon Alias &B10001001 ' Weak Signal Booster On
Const__loband Alias &B00000001
Const__miband Alias &B00000010
Const__hiband Alias &B00001100
Dim Frcvwork As Long
Dim Rcvpch1 As Word
Declare Sub Ksh14xpll
'////////////////////
Frcvwork = 145500
Sub Ksh14xpll
Dim Fpch1 As Word
Dim Band As Byte
Dim Temp As Byte
Band = Const__loband
If Frcvwork > 155000 Then
Band = Const__miband
End If
If Frcvwork > 440000 Then
Band = Const__hiband
End If
Fpch1 = Frcvwork + Rcvpch1
Fpch1 = Fpch1 / 50
I2cstart
I2cwbyte &B11000000 'Tuner Address
Temp = High(fpch1)
I2cwbyte Temp
Temp= low(fpch1)
I2cwbyte Temp
I2cwbyte Const__gainon ' Const__gainon : Const__gainoff);
I2cwbyte Band
I2cstop
End SubА работа I2C в термометрах и часах чем отличается от Вашего тюнера?! С железякой нужно разбираться, смотреть какие адреса регистров за что отвечают, и что им отправлять нужно. А уж заслать - дело второе и более простое. Тут и термометр можно ради примера взять, алгоритм-то один.осторожно! леоныч!!! писал(а):Даже начать несчего, одни термометры и часы повсюду... ппц......
Да ладно? Например, LM75 не просто датчик, но и термостат, с регистрами порогов и конфигурации. И их тоже записывать нужно. Я же писал:осторожно! леоныч!!! писал(а):Дело в том что с термометра идет в основном прием данных.
Алгоритм чтения следующий:
1. Генерируем старт обмена
2. Передаем адрес записи устройства
3. Передаем адрес регистра, к которому хотим обратиться
4. Генерируем старт обмена
5. Передаем адрес чтения устройства
6. Получаем данные
7. Завершаем процедуру чтения
Алгоритм записи (который гораздо проще чтения) следующий:
1. Генерируем старт обмена
2. Передаем адрес записи устройства
3. Передаем адрес регистра, который хотим записать
4. Передаем данные для записи
5. Завершаем процедуру записи
http://decada.org.ru/project/lessons/bascom_avr/Вроде все понял, Кроме этих двух строчек
Ввести куда? Если надо пример реализации то вот http://www.qsl.net/pa3ckr/bascom%20and% ... index.htmlvanyap1 писал(а):Подскажите пожалуйста, каким образом можно ввести в с клавиатуры цифры. Как в телефоне например? Клавиатура матричная 4Х4
Код: Выделить всё
'**************************определение значения кнопки****************************
Sub Knob
U1 = Getadc(3)
If U1 > 993 Then 'если кнопки не нажаты то на выход
Knopka = "W"
Goto Nop2 '
End If
If U1 < 32 Then : Knopka = "S" : Goto Nop2 : End If '
If U1 > 33 Then : If U1 =< 96 Then : Knopka = "T" : Goto Nop2 : End If : End If
If U1 > 97 Then : If U1 =< 160 Then : Knopka = "M" : Goto Nop2 : End If : End If
If U1 > 161 Then : If U1 =< 224 Then : Knopka = "I" : Goto Nop2 : End If : End If
If U1 > 225 Then : If U1 =< 288 Then : Knopka = "U" : Goto Nop2 : End If : End If
If U1 > 289 Then : If U1 =< 352 Then : Knopka = "." : Goto Nop2 : End If : End If
If U1 > 353 Then : If U1 =< 416 Then : Knopka = "0" : Goto Nop2 : End If : End If '
If U1 > 417 Then : If U1 =< 480 Then : Knopka = "1" : Goto Nop2 : End If : End If
If U1 > 481 Then : If U1 =< 544 Then : Knopka = "2" : Goto Nop2 : End If : End If
If U1 > 545 Then : If U1 =< 608 Then : Knopka = "3" : Goto Nop2 : End If : End If:
If U1 > 609 Then : If U1 =< 672 Then : Knopka = "4" : Goto Nop2 : End If : End If
If U1 > 673 Then : If U1 =< 736 Then : Knopka = "5" : Goto Nop2 : End If : End If
If U1 > 737 Then : If U1 =< 800 Then : Knopka = "6" : Goto Nop2 : End If : End If '
If U1 > 801 Then : If U1 =< 864 Then : Knopka = "7" : Goto Nop2 : End If : End If
If U1 > 865 Then : If U1 =< 928 Then : Knopka = "8" : Goto Nop2 : End If : End If
If U1 > 929 Then : If U1 =< 992 Then : Knopka = "9" : End If : End If
Nop2:
End SubКод: Выделить всё
If U1 > 225 And U1 =< 288 Then...
Код: Выделить всё
Case 225 To 288:
Ну тут наверное важнее основная идея.edm2007 писал(а):Нагорожено конечно, кошмар.
Ага, так оно и есть.amv2000 писал(а):Ну тут наверное важнее основная идея.
Код: Выделить всё
Select Case U1
Case Is <= 32 : Knopka = "S"
Case 33 To 96 : Knopka = "T"
Case 97 To 160 : Knopka = "M"
Case 161 To 224 : Knopka = "I"
Case 225 To 288 : Knopka = "U"
Case 289 To 352 : Knopka = "."
Case 353 To 416 : Knopka = "0"
Case 417 To 480 : Knopka = "1"
Case 481 To 544 : Knopka = "2"
Case 545 To 608 : Knopka = "3"
Case 609 To 672 : Knopka = "4"
Case 673 To 736 : Knopka = "5"
Case 737 To 800 : Knopka = "6"
Case 801 To 864 : Knopka = "7"
Case 865 To 928 : Knopka = "8"
Case 929 To 992 : Knopka = "9"
Case Is >= 993 : Knopka = "W"
End Select
Ну и славно.amv2000 писал(а):все таки виновник дисплей, а не руки из жопы...
Ага, так оно и есть.edm2007 писал(а):amv2000 писал(а):Ну тут наверное важнее основная идея.
Код: Выделить всё
Select Case U1
Case Is <= 32 : Knopka = "S"
Case 33 To 96 : Knopka = "T"
Case 97 To 160 : Knopka = "M"
Case 161 To 224 : Knopka = "I"
Case 225 To 288 : Knopka = "U"
Case 289 To 352 : Knopka = "."
Case 353 To 416 : Knopka = "0"
Case 417 To 480 : Knopka = "1"
Case 481 To 544 : Knopka = "2"
Case 545 To 608 : Knopka = "3"
Case 609 To 672 : Knopka = "4"
Case 673 To 736 : Knopka = "5"
Case 737 To 800 : Knopka = "6"
Case 801 To 864 : Knopka = "7"
Case 865 To 928 : Knopka = "8"
Case 929 To 992 : Knopka = "9"
Case Is >= 993 : Knopka = "W"
End Select