Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 21.02.2011, 12:12  
Opasif
Частый гость
 
Регистрация: 18.01.2009
Сообщений: 22
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Opasif на пути к лучшему
По умолчанию Работа с массивами (PIC18, Assembler)

Как организовать(объявить) массив на Assembler и работать с этим массивом? Контролер PIC18. Нужно реализовать следующий код:
for(i=0;i‹128;i++)
if(ArrayA[i]‹ArrayB[i])...
Реклама:
Opasif вне форума  
Непрочитано 21.02.2011, 12:15  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: Работа с массивами (PIC18, Assembler)

Сообщение от Opasif Посмотреть сообщение
Как организовать(объявить) массив на Assembler и работать с этим массивом? Контролер PIC18. Нужно реализовать следующий код:
for(i=0;i‹128;i++)
if(ArrayA[i]‹ArrayB[i])...
Массив чего?
Bill вне форума  
Непрочитано 21.02.2011, 12:57  
Opasif
Частый гость
 
Регистрация: 18.01.2009
Сообщений: 22
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Opasif на пути к лучшему
По умолчанию Re: Работа с массивами (PIC18, Assembler)

Массив чисел типа BYTE
Opasif вне форума  
Непрочитано 21.02.2011, 13:24  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Работа с массивами (PIC18, Assembler)

Зарезервировать в памяти место под два массива требуемого размера.
Инициировать их нужными значениями (если требуется).
Работать с ними.
Вообще-то не совсем понял вопрос, в чём трудности?
ut1wpr вне форума  
Непрочитано 21.02.2011, 13:43  
master.k
Частый гость
 
Регистрация: 10.12.2010
Сообщений: 42
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
master.k на пути к лучшему
По умолчанию Re: Работа с массивами (PIC18, Assembler)

Код:
dat1		UDATA

ArrayA		res		128
ArrayB		res		128
count		res		1



cod1		CODE


			lfsr	FSR0, ArrayA
			lfsr	FSR1, ArrayB
			clrf	count

mm01:
			movf	INDF1, W
			cpfslt	INDF0      ;  skip if A[i]‹B[i]
			bra		mm02
			....
			....


mm02:       addfsr	FSR0, 1
			addfsr	FSR1, 1
			incf	count
			movlw	127
			cpfsgt  count      ; skip  if count › 127
			bra		mm01
быстро так на скору руку
но можно еще упростить
master.k вне форума  
Непрочитано 21.02.2011, 13:50  
master.k
Частый гость
 
Регистрация: 10.12.2010
Сообщений: 42
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
master.k на пути к лучшему
По умолчанию Re: Работа с массивами (PIC18, Assembler)

Код:
dat0		UDATA   0x000
count		res		1

dat1		UDATA   0x100
ArrayA		res		128
ArrayB		res		128

cod1		CODE

			lfsr	FSR0, ArrayA
			lfsr	FSR1, ArrayB
			clrf	count
			bsf		count, 7       ; count = 128
mm01:
			movf	POSTINC1, W
			cpfslt	POSTINC0      ;  skip if A[i]‹B[i]
			bra		mm02
			....
			....


mm02:   
			decfsz  count      ;  count-- , skip  if count = 0
			bra		mm01
вот по проще
в предыдущем есть ошибка по
переменной count
master.k вне форума  
Непрочитано 21.02.2011, 13:57  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: Работа с массивами (PIC18, Assembler)

Сообщение от master.k Посмотреть сообщение
Код:
dat0		UDATA   0x000
count		res		1

dat1		UDATA   0x100
ArrayA		res		128
ArrayB		res		128

cod1		CODE

			lfsr	FSR0, ArrayA
			lfsr	FSR1, ArrayB
			clrf	count
			bsf		count, 7       ; count = 128
mm01:
			movf	POSTINC1, W
			cpfslt	POSTINC0      ;  skip if A[i]‹B[i]
			bra		mm02
			....
			....


mm02:   
			decfsz  count      ;  count-- , skip  if count = 0
			bra		mm01
вот по проще
в предыдущем есть ошибка по
переменной count
Вроде все так, только ваша реализация не соответствует исходному тексту. В исходнике доступ к массиву осуществляется по индексу, у вас - через указатели. И потом, переменная цикла изменяется от 0 до 127, у вас - от 128 до 1.
Bill вне форума  
Непрочитано 21.02.2011, 14:03  
master.k
Частый гость
 
Регистрация: 10.12.2010
Сообщений: 42
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
master.k на пути к лучшему
По умолчанию Re: Работа с массивами (PIC18, Assembler)

представил два варианта пусть смотрит что понравится
master.k вне форума  
Непрочитано 21.02.2011, 14:12  
master.k
Частый гость
 
Регистрация: 10.12.2010
Сообщений: 42
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
master.k на пути к лучшему
По умолчанию Re: Работа с массивами (PIC18, Assembler)

Код:
dat0        UDATA
count		res		1
temp		res		1

dat1		UDATA
ArrayA		res		128
ArrayB		res		128

cod1		CODE
            .....
	lfsr	FSR0, ArrayA
	lfsr	FSR1, ArrayB
	clrf	count
mm01:
           movf	count, W
	movf	PLUSW0, W
	movwf	temp
           movf	count, W
  	movf	PLUSW1, W
	cpfslt	temp        ;  skip if A[i]‹B[i]
	bra	mm02
	....
	....

mm02:  	incf	count
	movlw	127
	cpfsgt  count      ; skip  if count › 127
	bra	mm01
вот для полного счастья
третий вариант
в полном соответствии с заявкой
master.k вне форума  
Непрочитано 21.02.2011, 14:16  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: Работа с массивами (PIC18, Assembler)

Сообщение от master.k Посмотреть сообщение
вот для полного счастья
третий вариант
в полном соответствии с заявкой

Но доступ к массивам у вас по-прежнему через указатели. Или нет?
Bill вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напряжённая работа Roshens Отвлекитесь, эмбеддеры! 8 01.09.2010 23:08


Часовой пояс GMT +4, время: 18:33.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot