Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
21.02.2011, 12:12
|
|
Частый гость
Регистрация: 18.01.2009
Сообщений: 22
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Работа с массивами (PIC18, Assembler)
Как организовать(объявить) массив на Assembler и работать с этим массивом? Контролер PIC18. Нужно реализовать следующий код:
for(i=0;i‹128;i++)
if(ArrayA[i]‹ArrayB[i])...
|
|
|
|
21.02.2011, 12:15
|
|
Гражданин KAZUS.RU
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
|
Re: Работа с массивами (PIC18, Assembler)
Сообщение от Opasif
|
Как организовать(объявить) массив на Assembler и работать с этим массивом? Контролер PIC18. Нужно реализовать следующий код:
for(i=0;i‹128;i++)
if(ArrayA[i]‹ArrayB[i])...
|
Массив чего?
|
|
|
|
21.02.2011, 12:57
|
|
Частый гость
Регистрация: 18.01.2009
Сообщений: 22
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Работа с массивами (PIC18, Assembler)
Массив чисел типа BYTE
|
|
|
|
21.02.2011, 13:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Работа с массивами (PIC18, Assembler)
Зарезервировать в памяти место под два массива требуемого размера.
Инициировать их нужными значениями (если требуется).
Работать с ними.
Вообще-то не совсем понял вопрос, в чём трудности?
|
|
|
|
21.02.2011, 13:43
|
|
Частый гость
Регистрация: 10.12.2010
Сообщений: 42
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
|
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 |
быстро так на скору руку
но можно еще упростить
|
|
|
|
21.02.2011, 13:50
|
|
Частый гость
Регистрация: 10.12.2010
Сообщений: 42
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
|
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
|
|
|
|
21.02.2011, 13:57
|
|
Гражданин KAZUS.RU
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
|
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.
|
|
|
|
21.02.2011, 14:03
|
|
Частый гость
Регистрация: 10.12.2010
Сообщений: 42
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
|
Re: Работа с массивами (PIC18, Assembler)
представил два варианта пусть смотрит что понравится
|
|
|
|
21.02.2011, 14:12
|
|
Частый гость
Регистрация: 10.12.2010
Сообщений: 42
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
|
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 |
вот для полного счастья
третий вариант
в полном соответствии с заявкой
|
|
|
|
21.02.2011, 14:16
|
|
Гражданин KAZUS.RU
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
|
Re: Работа с массивами (PIC18, Assembler)
Сообщение от master.k
|
вот для полного счастья
третий вариант
в полном соответствии с заявкой
|
![Улыбка](images/smilies/icon_smile.gif)
Но доступ к массивам у вас по-прежнему через указатели. Или нет?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Напряжённая работа
|
Roshens |
Отвлекитесь, эмбеддеры! |
8 |
01.09.2010 23:08 |
Часовой пояс GMT +4, время: 18:33.
|
|