Перейти к блогу GetChip.net - блог        JilTE[1] - в разработке     Модификации устройств - модификации

 
Текущее время: 27 июл 2025, 06:16

Часовой пояс: UTC + 3 часа [ Летнее время ]



Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
#000000 #000040 #000080 #0000BF #0000FF
#004000 #004040 #004080 #0040BF #0040FF
#008000 #008040 #008080 #0080BF #0080FF
#00BF00 #00BF40 #00BF80 #00BFBF #00BFFF
#00FF00 #00FF40 #00FF80 #00FFBF #00FFFF
#400000 #400040 #400080 #4000BF #4000FF
#404000 #404040 #404080 #4040BF #4040FF
#408000 #408040 #408080 #4080BF #4080FF
#40BF00 #40BF40 #40BF80 #40BFBF #40BFFF
#40FF00 #40FF40 #40FF80 #40FFBF #40FFFF
#800000 #800040 #800080 #8000BF #8000FF
#804000 #804040 #804080 #8040BF #8040FF
#808000 #808040 #808080 #8080BF #8080FF
#80BF00 #80BF40 #80BF80 #80BFBF #80BFFF
#80FF00 #80FF40 #80FF80 #80FFBF #80FFFF
#BF0000 #BF0040 #BF0080 #BF00BF #BF00FF
#BF4000 #BF4040 #BF4080 #BF40BF #BF40FF
#BF8000 #BF8040 #BF8080 #BF80BF #BF80FF
#BFBF00 #BFBF40 #BFBF80 #BFBFBF #BFBFFF
#BFFF00 #BFFF40 #BFFF80 #BFFFBF #BFFFFF
#FF0000 #FF0040 #FF0080 #FF00BF #FF00FF
#FF4000 #FF4040 #FF4080 #FF40BF #FF40FF
#FF8000 #FF8040 #FF8080 #FF80BF #FF80FF
#FFBF00 #FFBF40 #FFBF80 #FFBFBF #FFBFFF
#FFFF00 #FFFF40 #FFFF80 #FFFFBF #FFFFFF
Настройки:
BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЁН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Анти-спам
Анти-спам:
Выполните задание
   

Обзор темы - Как в цикле вызывать нужную переменную из массива?
Автор Сообщение
  Заголовок сообщения:  Re: Как в цикле вызывать нужную переменную из массива?  
Цитата
Вот это интересно. Мне еще не приходилось использовать такие конструкции. Теперь буду знать.
Но пока решил сделать по другому:
_Run_Error.jpg
_Run_Error.jpg [ 47.7 КБ | Просмотров: 24845 ]

Кусок ** Error **. Только здесь в массиве всего 4 переменные.
Байт DataOut_0 собирается из трех разных переменных, одна из которых - Loop, из которой берется текущее значение, и записывается в 2 младших бита DataOut_0.
Значение Error_Counter_n должно помещается во 2-й и 3-й биты DataOut_0, а значение из C_Module_E занимает всю старшую тетраду DataOut_0.
Ну и в DataOut_1 пишется идентификатор C_Error, который занимает весь байт.
Весь этот бутерброд, в итоге, отправляется по SPI в NRF24 для отправки в эфир.
Сообщение Добавлено: 24 янв 2018, 18:28
  Заголовок сообщения:  Re: Как в цикле вызывать нужную переменную из массива?  
Цитата
Вот обещанный пример…
1.png
1.png [ 14.26 КБ | Просмотров: 24848 ]
Сообщение Добавлено: 24 янв 2018, 18:00
  Заголовок сообщения:  Re: Как в цикле вызывать нужную переменную из массива?  
Цитата
Сообщение Добавлено: 24 янв 2018, 15:22
  Заголовок сообщения:  Re: Как в цикле вызывать нужную переменную из массива?  
Цитата
Спасибо. Хотелось обойтись без многоэтажных сравнений, но видимо, придется сделать именно так.
Сообщение Добавлено: 24 янв 2018, 15:02
  Заголовок сообщения:  Re: Как в цикле вызывать нужную переменную из массива?  
Цитата
Кстати мой пример так и действует по твоему алгоритму... единственное отличие, что используется для массива SRAM а не РОН.

Для РОН делай так: в подпрограмме выброси макрос (он там будет без надобности), а в места него результаты сравнения переменной Loop и по каждому значению этой переменной производишь копирование нужного регистра (r20...r24) в регистр r25... при выполнении действий с r24 незабываем обнулить переменную Loop... вот так будет выглядеть один из вариантов с РОН. :)
Писал SVN.
Сообщение Добавлено: 24 янв 2018, 13:58
  Заголовок сообщения:  Re: Как в цикле вызывать нужную переменную из массива?  
Цитата
Сообщение Добавлено: 24 янв 2018, 13:39
  Заголовок сообщения:  Re: Как в цикле вызывать нужную переменную из массива?  
Цитата
Отредактированный пример выглядит уже корректнее, но тоже не решает моей задачи.
Объясню подробнее. Есть массив однобайтных переменных (пусть будет r20...r24). При первом входе в подпрограмму или макрос, нужно прочитать значение первой переменной массива (r20), и записать это значение в регистр Result (r25). При втором входе в подпрограмму - отправить в Result данные второй переменной (r21), и т.д. Прочитали (и обработали) все пять переменных, снова начинаем с первой.

Данные в самих переменных массива изменяются в других ветвях программы. По ряду условий для хранения переменных предпочтительнее использовать РОН, а не SRAM.
Сообщение Добавлено: 24 янв 2018, 13:08
  Заголовок сообщения:  Re: Как в цикле вызывать нужную переменную из массива?  
Цитата
Не вижу массив в Вашем примере. Если прописываю массив в РОН (r20...r24), ничего не вызывается. Мне нужно данные из любой переменной массива сохранять в дугой регистр (Rusult, пусть будет r25).
А как прикрепить код из АВ в текст сообщения?
Сообщение Добавлено: 24 янв 2018, 12:55
  Заголовок сообщения:  Re: Как в цикле вызывать нужную переменную из массива?  
Цитата
Если я правильно понял, то вот один из вариантов…
1.png
1.png [ 6.22 КБ | Просмотров: 24864 ]
Сообщение Добавлено: 24 янв 2018, 12:13
  Заголовок сообщения:  Как в цикле вызывать нужную переменную из массива?  
Цитата
Есть массив однобайтных данных (допустим, из пяти переменных Data1...Data5), находящийся в SRAM или в РОН.
В ходе выполнения основной программы периодически вызывается подпрограмма, в которой есть счетчик (Loop), инкрементируемый при каждом вызове подпрограммы. После пятого вызова подпрограммы Loop обнуляется, и далее счет начинается с нуля.
Подскажите, как при входе в подпрограмму вызвать DataN, номер которой (N) должен быть равен текущему значению Loop?
Сообщение Добавлено: 24 янв 2018, 11:52

Часовой пояс: UTC + 3 часа [ Летнее время ]


Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB