[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Протокол 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 ,Спасибо.Когда на пальцах объяснят-намного понятней smile

 
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,Вроде всё работает.Спасибо за помощь.

 
  • Страница 1 из 1
  • 1
Поиск: