Протокол Sony IRC
|
|
sany2 | Дата: Воскресенье, 04.08.2013, 08:14 | Сообщение # 1 |
Группа: Проверенные
Сообщений: 107
Статус: Offline
| Добрый день.Потребовался тут пульт от Sony,нашёл на http://www.mcselec.com/?option=com_content&task=view&id=69&Itemid=57. Ну про сам протокол в нете много написано.А вод с кодом не пойму.Некоторые неизвестные операторы.FOR $regfile = "2313def.dat" $crystal = 8000000
Dim Key As Byte Dim Ir_frame As Byte Dim Ir_bit As Byte Dim Ir_data As Word '40 kHz carrier reload value 'Const T_oc1 = 49 'value for 4MHzcrystal Const T_oc1 = 99 'value for 8MHz crystal 'Const T_oc1 = 124 'value for 10MHzcrystal
Const Carrier_on = &B01000000 'IR 40kHzcarrier on Const Carrier_off = &B11000000 'IR 40kHz carrieroff
Const Ir_repeat = 3 'number code frames (at least 2)
Config Kbd = Portb 'keyboard connected at Port b Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1 Timer1 = 0 Compare1a = T_oc1 'OC1 = IR carrier = 40 kHz
Tccr1a = Carrier_off
'---[ main program loop]-------------------------------------------------------
Do Key = Getkbd() Waitms 1 'small delay If Key <> 16 Then 'test if key is pressed else key=16 Ir_data = Lookup(key , Ir_code) 'lookup pressed key IR Remote Code Ddrb.3 = 1 'set OC1 (Pb.3) = IR carrier output
'---[ convert and transmit Sony 12bit IR code]---------------------------------
For Ir_frame = 1 To Ir_repeat 'number of codeframes Tccr1a = Carrier_on Waitus 2400 'start = 2.4mS For Ir_bit = 11 Downto 0 '12 bit code, msbfirst Tccr1a = Carrier_off Waitus 600 '0.6mS delay Tccr1a = Carrier_on Waitus 600 '0.6mS delay If Ir_data.ir_bit = 1 Then Waitus 600 'if bit=1 then 1.2mS delay Next Tccr1a = Carrier_off Waitms 25 'frame gap 25mS delay Next End If Loop '------------------------------------------------------------------------------- End '-------------------------------------------------------------------------------
Ir_code: Data &H1D1% , &H9D1% , &H4D1% , &H0% 'column 4 not used (3x4 keypad) Data &HCD1% , &H2D1% , &HB91% , &H0% Data &H0D1% , &H8D1% , &HAD1% , &H0% Data &HBD1% , &H7D1% , &HA91% , &H0%
Объясните пожалуйста значение NEXT,FOR,Lookup, Downto(подозреваю, что опечатка-bascom ругается на эту строку)
|
|
| |
exersizze | Дата: Воскресенье, 04.08.2013, 10:51 | Сообщение # 2 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| sany2, FOR это тот же цикл. Посмотри в справке баскома, там хорошие примеры. К примеру вот Код Dim A As Byte , B1 As Byte , C As Integer For A = 1 To 10 Step 2 Print "This is A " ; A Next A
For A = 1 To 10 означает что цикл FOR будет повторяться пока переменная А не достигнет значения 10. Step 2 означает что переменная А при каждой интерации будет увеличиватся на 2. Тоесть команда принт будет печатать в терминал сначала единицу, потом 3 (1+2), 5, 7, 9 и затем снова единицу (переменная достигла максимального значения и снова сбросилась в 1).
Ну а дальше сопоставляй пример с рабочим кодом.
LOOKUP тоже хорошо описан в хэлпе, эта команда вытаскивает нужные данные из массива данных.
|
|
| |
sany2 | Дата: Воскресенье, 04.08.2013, 12:28 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 107
Статус: Offline
| exersizze ,Спасибо.Когда на пальцах объяснят-намного понятней
|
|
| |
sany2 | Дата: Воскресенье, 04.08.2013, 16:00 | Сообщение # 4 |
Группа: Проверенные
Сообщений: 107
Статус: Offline
| Насчёт Downto не соображу-вроде есть в словаре ,но мой почему-то его не понимает.Попробую другую версию скачать
1.11.9.8 тоже не понимает-или надо где в настройках ковырять?
Сообщение отредактировал sany2 - Воскресенье, 04.08.2013, 16:40 |
|
| |
exersizze | Дата: Понедельник, 05.08.2013, 12:45 | Сообщение # 5 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| а попробуй заменить строку Код For Ir_bit = 11 Downto 0 на Код For Ir_bit = 11 To 0 Step -1 думаю что это одно и тоже
|
|
| |
sany2 | Дата: Понедельник, 05.08.2013, 16:07 | Сообщение # 6 |
Группа: Проверенные
Сообщений: 107
Статус: Offline
| Обязательно попробую-отпишусь.Сегодня маленько некогда.
|
|
| |
sany2 | Дата: Вторник, 06.08.2013, 17:55 | Сообщение # 7 |
Группа: Проверенные
Сообщений: 107
Статус: Offline
| exersizze,Вроде всё работает.Спасибо за помощь.
|
|
| |