Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как организовать массив регистров в PIC?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Billy_Bones
В одной моей железке нужно сделать фильтр. Читается из ADC значение, кладется в массив из 16 регистров, по кругу, переписывая старое значение.
Потом эти 16 регистров суммируются, делятся на 16 - получается среднее за окно из 16 измерений

Так вот - как организовать запись в массив по счетчику, на mpasm?
Чтоб в счетчике крутился номер ячейки, а процедура по этому номеру в оную ячейку писала.

В массивы констант (таблицы) по retlw "значение" я умею, а вот с переменными что-то не приходит в голову как изящно поступить.
Может есть опыт?
Billy_Bones
Начал читать про indirect addressing - понял что это оно (раньше я никогда не пользовался этим методом).
Вот так будет работать?

Линейный массив находится в пользовательских регистрах, начиная с адреса "startaddress".
На входе POINTER - регистр с номером ячейки массива, линейное смещение адреса.
READDATA - регистр с результатами прочтения
WRITEDATA - регистр с данными для записи

movlw "startaddress" ;
movwf FSR ; загрузка начального адреса в регистр указателя из константы
movfw POINTER
addwf FSR, F ; увеличение регистра указателя на величину указателя POINTER

Ну а дальше

movf INDF, W ;
movwf READDATA ; - чтение ячейки массива

или

movf WRITEDATA, W
movwf INDF ; - запись ячейки массива

Я нигде не ошибся?
mcheb
надо взять ПИК Си компилер от CCSinfo и забыть про movf movwf movlw и прочую retlw. Как вариант можно SDCC
Billy_Bones
Цитата(mcheb @ Nov 21 2016, 21:21) *
надо взять ПИК Си компилер от CCSinfo и забыть про movf movwf movlw и прочую retlw. Как вариант можно SDCC


Я в си не могу. У него такой синтаксис мудовый, что увы, я так и не смог себя заставить его полюбить.
Бейсик, паскаль, фортран, даже асм пиковский - на ура. А эта дрянь не пошла, как вижу эти фигурные скобки, хэши и прочее издевательство над здравым смыслом, моими глазами и английским языком - омерзение просто вызывает, не могу и все.

По использованию FSR в примере выше есть чего сказать?
ViKo
Не хэши, а хексы.
Отличный язык. Простой, красивый. На asm PIC-и я тоже программировал. А как познал C, забыл про asm. И про PIC тоже. :-)
P.S. Вы и в asm "не можете". laughing.gif
Billy_Bones
Все такие добрые, аж блевать тянет.

Q: мне надо на доске просверлить ряд дырок строго по прямой, через одинаковые промежутки, есть дрель и короткая линейка, как лучше поступить.
А: Возьми станок с ЧПУ, нахер тебе эта дрель, все равно ты ей пользоваться не умеешь (я тоже не умею, но разве это так важно, совет-то я могу дать).

До свидания, "помощнички", нашел нужные мне ответы у буржуев в форумах, они вменяемые, в отличие от.
ViKo
Что там давать. Есть счетчик, в него записал число элементов массива. Есть регистр косвенной адресации, записал в него адрес массива. Используй его для записи и чтения, инкрементируй, а счетчик уменьшай до нуля. А как станет нулем, начинай сначала.
А завтра будет Q: А какой рукой держать дрель?
Kopa
Цитата(Billy_Bones @ Nov 21 2016, 19:22) *
Я в си не могу. У него такой синтаксис мудовый, что увы, я так и не смог себя заставить его полюбить.
Бейсик, паскаль, фортран, даже асм пиковский - на ура.

bb-offtopic.gif
А меня Форт "испортил" smile3046.gif biggrin.gif

P.S. Кстати Форт (Forth) разных есть, включая и несколько для PIC контроллеров. Вот уж где скобок нет в структуре языка (от слова почти) в понимании Си языков.
Интересна и такая методичка Г.Р. Алпатов Применение PIC-контроллеров в измерительной технике.
ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ
Ростов-на-Дону
2008г
F2P или Тут
Проекты на этом же варианте Форт подобного языка.PIC Forth
Здесь тоже какие то уроки
FlashForth is a Forth stamp system implemented on the Microchip 8-bit PIC18F and 16-bit PIC24, 30, 33 and the Atmel Atmega microcontroller families.
и.т.д, и.т.п. Тут целый архив Форт "истории"
Но местное сообщество, в основном, инертно к Forth (Форт) языковому подходу разработки ПО для контроллеров.
k155la3
Нутак Вы же нашли indirect / "косвенная регистровая адресация" так это ОНО.
На младших PIC работать с ASM - это из ряда мазохизма и сокральных знаний "ниочем".
Не теряйте время, не мучайте мозг, изучайте С. И возьмите более мощный (/современный) процессор из техже PIC.



Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.