| Автор | 
			Сообщение | 
		 
		
				| 
					
				 | 
				
					
					
						|   | 
						Заголовок сообщения:  | 
						Re: Как в цикле вызывать нужную переменную из массива? | 
						 Цитата | 
					 
					 
				 | 
			 
			
				
					
					
						
							
							
								
									Вот это интересно. Мне еще не приходилось использовать такие конструкции. Теперь буду знать. Но пока решил сделать по другому:
			  
			_Run_Error.jpg [ 47.7 КБ | Просмотров: 27804 ]
		
		
	Кусок ** 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 для отправки в эфир.  
									
										Вот это интересно. Мне еще не приходилось использовать такие конструкции. Теперь буду знать. Но пока решил сделать по другому: [attachment=0]_Run_Error.jpg[/attachment] Кусок ** 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 [ 14.26 КБ | Просмотров: 27807 ]
		
		
	 
									
										Вот обещанный пример… [attachment=0]1.png[/attachment] 
									
								 | 
							 
							 
						 | 
					 
					
						
							
							
								 | 
								  | 
								Добавлено: 24 янв 2018, 18:00 | 
							 
							 
						 | 
					 
					 
				 | 
				
			 
			
				  | 
			 
		
				| 
					
				 | 
				
					
					
						|   | 
						Заголовок сообщения:  | 
						Re: Как в цикле вызывать нужную переменную из массива? | 
						 Цитата | 
					 
					 
				 | 
			 
			
				
					
					
						
							
							
								| 
									
									
										 [quote="Valentinych"]Спасибо. Хотелось обойтись без многоэтажных сравнений, но видимо, придется сделать именно так.[/quote] Так кто мешает сделать без сравнений? Пример уже показан… его просто нужно оптимизировать до минимума телодвижений.  Процесс на моём ПК ещё не завершён, потому показать пример не могу. писал SVN. 
									
								 | 
							 
							 
						 | 
					 
					
						
							
							
								 | 
								  | 
								Добавлено: 24 янв 2018, 15:22 | 
							 
							 
						 | 
					 
					 
				 | 
				
			 
			
				  | 
			 
		
				| 
					
				 | 
				
					
					
						|   | 
						Заголовок сообщения:  | 
						Re: Как в цикле вызывать нужную переменную из массива? | 
						 Цитата | 
					 
					 
				 | 
			 
			
				
					
					
						
							
							
								| 
									 Спасибо. Хотелось обойтись без многоэтажных сравнений, но видимо, придется сделать именно так. 
									
										Спасибо. Хотелось обойтись без многоэтажных сравнений, но видимо, придется сделать именно так. 
									
								 | 
							 
							 
						 | 
					 
					
						
							
							
								 | 
								  | 
								Добавлено: 24 янв 2018, 15:02 | 
							 
							 
						 | 
					 
					 
				 | 
				
			 
			
				  | 
			 
		
				| 
					
				 | 
				
					
					
						|   | 
						Заголовок сообщения:  | 
						Re: Как в цикле вызывать нужную переменную из массива? | 
						 Цитата | 
					 
					 
				 | 
			 
			
				
					
					
						
							
							
								| 
									 Кстати мой пример так и действует по твоему алгоритму... единственное отличие, что используется для массива SRAM а не РОН.
  Для РОН делай так: в подпрограмме выброси макрос (он там будет без надобности), а в места него результаты сравнения переменной Loop и по каждому значению этой переменной производишь копирование нужного регистра (r20...r24) в регистр r25... при выполнении действий с r24 незабываем обнулить переменную Loop... вот так будет выглядеть один из вариантов с РОН. :) Писал SVN. 
									
										Кстати мой пример так и действует по твоему алгоритму... единственное отличие, что используется для массива SRAM а не РОН.
  Для РОН делай так: в подпрограмме выброси макрос (он там будет без надобности), а в места него результаты сравнения переменной Loop и по каждому значению этой переменной производишь копирование нужного регистра (r20...r24) в регистр r25... при выполнении действий с r24 незабываем обнулить переменную Loop... вот так будет выглядеть один из вариантов с РОН. :) Писал SVN. 
									
								 | 
							 
							 
						 | 
					 
					
						
							
							
								 | 
								  | 
								Добавлено: 24 янв 2018, 13:58 | 
							 
							 
						 | 
					 
					 
				 | 
				
			 
			
				  | 
			 
		
				| 
					
				 | 
				
					
					
						|   | 
						Заголовок сообщения:  | 
						Re: Как в цикле вызывать нужную переменную из массива? | 
						 Цитата | 
					 
					 
				 | 
			 
			
				
					
					
						
							
							
								| 
									
									
										 [quote="Valentinych"]Есть массив однобайтных переменных (пусть будет r20...r24). При первом входе в подпрограмму или макрос, нужно прочитать значение первой переменной массива (r20), и записать это значение в регистр Result (r25). При втором входе в подпрограмму - отправить в Result данные второй переменной (r21), и т.д. Прочитали (и обработали) все пять переменных, снова начинаем с первой.
  Данные в самих переменных массива изменяются в других ветвях программы. По ряду условий для хранения переменных предпочтительнее использовать РОН, а не SRAM.[/quote] Теперь понятно... с рабочими регистрами ещё проще... сейчас не могу показать пример так как ПК делает копию диска... пишу со смартфона... как только комп освободится так сразу покажу вариант. Писал SVN. 
									
								 | 
							 
							 
						 | 
					 
					
						
							
							
								 | 
								  | 
								Добавлено: 24 янв 2018, 13:39 | 
							 
							 
						 | 
					 
					 
				 | 
				
			 
			
				  | 
			 
		
				| 
					
				 | 
				
					
					
						|   | 
						Заголовок сообщения:  | 
						Re: Как в цикле вызывать нужную переменную из массива? | 
						 Цитата | 
					 
					 
				 | 
			 
			
				
					
					
						
							
							
								| 
									 Отредактированный пример выглядит уже корректнее, но тоже не решает моей задачи. Объясню подробнее. Есть массив однобайтных переменных (пусть будет r20...r24). При первом входе в подпрограмму или макрос, нужно прочитать значение первой переменной массива (r20), и записать это значение в регистр Result (r25). При втором входе в подпрограмму - отправить в Result данные второй переменной (r21), и т.д. Прочитали (и обработали) все пять переменных, снова начинаем с первой.
  Данные в самих переменных массива изменяются в других ветвях программы. По ряду условий для хранения переменных предпочтительнее использовать РОН, а не SRAM. 
									
										Отредактированный пример выглядит уже корректнее, но тоже не решает моей задачи. Объясню подробнее. Есть массив однобайтных переменных (пусть будет r20...r24). При первом входе в подпрограмму или макрос, нужно прочитать значение первой переменной массива (r20), и записать это значение в регистр Result (r25). При втором входе в подпрограмму - отправить в Result данные второй переменной (r21), и т.д. Прочитали (и обработали) все пять переменных, снова начинаем с первой.
  Данные в самих переменных массива изменяются в других ветвях программы. По ряду условий для хранения переменных предпочтительнее использовать РОН, а не SRAM. 
									
								 | 
							 
							 
						 | 
					 
					
						
							
							
								 | 
								  | 
								Добавлено: 24 янв 2018, 13:08 | 
							 
							 
						 | 
					 
					 
				 | 
				
			 
			
				  | 
			 
		
				| 
					
				 | 
				
					
					
						|   | 
						Заголовок сообщения:  | 
						Re: Как в цикле вызывать нужную переменную из массива? | 
						 Цитата | 
					 
					 
				 | 
			 
			
				
					
					
						
							
							
								| 
									 Не вижу массив в Вашем примере. Если прописываю массив в РОН (r20...r24), ничего не вызывается. Мне нужно данные из любой переменной массива сохранять в дугой регистр (Rusult, пусть будет r25). А как прикрепить код из АВ в текст сообщения? 
									
										Не вижу массив в Вашем примере. Если прописываю массив в РОН (r20...r24), ничего не вызывается. Мне нужно данные из любой переменной массива сохранять в дугой регистр (Rusult, пусть будет r25). А как прикрепить код из АВ в текст сообщения? 
									
								 | 
							 
							 
						 | 
					 
					
						
							
							
								 | 
								  | 
								Добавлено: 24 янв 2018, 12:55 | 
							 
							 
						 | 
					 
					 
				 | 
				
			 
			
				  | 
			 
		
				| 
					
				 | 
				
					
					
						|   | 
						Заголовок сообщения:  | 
						Re: Как в цикле вызывать нужную переменную из массива? | 
						 Цитата | 
					 
					 
				 | 
			 
			
				
					
					
						
							
							
								
									Если я правильно понял, то вот один из вариантов… 
			 
			1.png [ 6.22 КБ | Просмотров: 27823 ]
		
		
	 
									
										Если я правильно понял, то вот один из вариантов… [attachment=0]1.png[/attachment] 
									
								 | 
							 
							 
						 | 
					 
					
						
							
							
								 | 
								  | 
								Добавлено: 24 янв 2018, 12:13 | 
							 
							 
						 | 
					 
					 
				 | 
				
			 
			
				  | 
			 
		
				| 
					
				 | 
				
					
					
						|   | 
						Заголовок сообщения:  | 
						Как в цикле вызывать нужную переменную из массива? | 
						 Цитата | 
					 
					 
				 | 
			 
			
				
					
					
						
							
							
								| 
									 Есть массив однобайтных данных (допустим, из пяти переменных Data1...Data5), находящийся в SRAM или в РОН.  В ходе выполнения основной программы периодически вызывается подпрограмма, в которой есть счетчик (Loop), инкрементируемый при каждом вызове подпрограммы. После пятого вызова подпрограммы Loop обнуляется, и далее счет начинается с нуля. Подскажите, как при входе в подпрограмму вызвать DataN, номер которой (N) должен быть равен текущему значению Loop? 
									
										Есть массив однобайтных данных (допустим, из пяти переменных Data1...Data5), находящийся в SRAM или в РОН.  В ходе выполнения основной программы периодически вызывается подпрограмма, в которой есть счетчик (Loop), инкрементируемый при каждом вызове подпрограммы. После пятого вызова подпрограммы Loop обнуляется, и далее счет начинается с нуля. Подскажите, как при входе в подпрограмму вызвать DataN, номер которой (N) должен быть равен текущему значению Loop? 
									
								 | 
							 
							 
						 | 
					 
					
						
							
							
								 | 
								  | 
								Добавлено: 24 янв 2018, 11:52 | 
							 
							 
						 | 
					 
					 
				 | 
				
			 
			
				  | 
			 
		
		 
	  |