Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ivan_fd  
Работа с массивами данных
Влад1111 Дата: Чт, 23.07.2009, 21:25  |                                                                                                                Сообщение # 1
Группа: Пользователи
Ранг:  Новенький
Сообщений: 9
Репутация: 0   ±
Замечания:   ±
На сайте с 12.06.2008

Статус: Offline

Здравствуйте, форумчане. Помогите разобраться со следующей задачей. Три модуля соединены с контроллером 8-ми битной шиной данных D0-D7. Выбор модуля осуществляется с помощью шины адреса A0-A1. Считанные данные записываются в массив Modul var Byte[3]. Дальнейший ход программы зависит от состояния конкретных битов в байтах MODUL[0], MODUL[1], MODUL[2]. Пусть это будут бит 0 в байте MODUL[0], бит 1 в байте MODUL[1] и бит 2 в байте MODUL[2]. При попытке присвоить этим битам имя (Symbol YV1 = Modul[0].0) MicroCode Studio выдает сообщение о синтаксической ошибке. В Help ничего об этом не написано. Есть ли способ обратиться к этим байтам напрямую?
ЯНДЕКС Дата: 23.07.2009
ADMIN Дата: Пт, 24.07.2009, 07:33  |                                                                                                                Сообщение # 2
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Вообще компилятор в данном случае сообщает, что такой стиль синтаксиса при работе с массивами не поддерживается.
Dmitry Дата: Пт, 24.07.2009, 17:07  |                                                                                                                Сообщение # 3
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 157
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

О! меня это тоже напрягает периодически. А в Протоне можно напрямую работать с битами элементов байтового массива?
Влад1111 Дата: Пт, 24.07.2009, 21:19  |                                                                                                                Сообщение # 4
Группа: Пользователи
Ранг:  Новенький
Сообщений: 9
Репутация: 0   ±
Замечания:   ±
На сайте с 12.06.2008

Статус: Offline

Пока нашел такой вариант: в описании переменных записываем
Modul var Byte[3]
SIMBOL A=Modul[0]
SIMBOL B=Modul[1]
SIMBOL C=Modul[2]
а в программе уже обращаемся к битам
YV1=A.0
MicroCode Studio не ругается
Dmitry Дата: Сб, 25.07.2009, 00:41  |                                                                                                                Сообщение # 5
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 157
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

Quote (Влад1111)
Пока нашел такой вариант:

Ну тебе в конкретном примере может и подойдет, а так вообще вариант не ахти. Весь цимус массива, что в скобки можно переменную ставить и обращаться к нужному элементу массива непрямым способом. Пока пользую только вариант с промежуточной переменной, что-то типа:

FOR i = 0 TO 2
tmp = Modul[i]
YV1 = tmp.0
NEXT i

Влад1111 Дата: Сб, 25.07.2009, 20:55  |                                                                                                                Сообщение # 6
Группа: Пользователи
Ранг:  Новенький
Сообщений: 9
Репутация: 0   ±
Замечания:   ±
На сайте с 12.06.2008

Статус: Offline

Quote (Dmitry)
Пока пользую только вариант с промежуточной переменной

Такой вариант в моем случае обрастет кучей команд для выделения битов из каждого нужного байта массива. Ведь приходится анализировать до семи битов из разных байтов. Ну, а цимус действительно теряется, и как его сохранить - вопрос.
MasterPic Дата: Вт, 28.07.2009, 09:52  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 186
Репутация: 2   ±
Замечания:   ±
На сайте с 22.11.2008

Статус: Offline

Quote (Dmitry)
Ну тебе в конкретном примере может и подойдет, а так вообще вариант не ахти. Весь цимус массива, что в скобки можно переменную ставить и обращаться к нужному элементу массива непрямым способом. Пока пользую только вариант с промежуточной переменной, что-то типа:
FOR i = 0 TO 2
tmp = Modul[i]
YV1 = tmp.0
NEXT i

Ну а почему теряется? К переменной массива также можно и обращаться, массив то ни куда не теряется.
Dmitry Дата: Вт, 28.07.2009, 17:04  |                                                                                                                Сообщение # 8
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 157
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

С промежуточной переменной не теряется, но появляется сама промежуточная переменная и команда ее присвоения, что при большом количестве обращений к разным битам байтового массива действительно задрачивает. Ну это я после дельфи такой вредный smile
Yrok Дата: Ср, 29.07.2009, 10:26  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 112
Репутация: 2   ±
Замечания:   ±
На сайте с 27.09.2007

Статус: Offline

Я так понял MicroCode Studio не может создавать указатель на конкретный бит элемента массива?
Сообщение отредактировал Yrok - Ср, 29.07.2009, 11:51
Dmitry Дата: Ср, 29.07.2009, 19:35  |                                                                                                                Сообщение # 10
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 157
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

Угу. Похоже, разработчикам это показалось ненужным.
  • Страница 1 из 1
  • 1
Поиск: