Перейти к содержанию
    

Как организовать массив регистров в PIC?

В одной моей железке нужно сделать фильтр. Читается из ADC значение, кладется в массив из 16 регистров, по кругу, переписывая старое значение.

Потом эти 16 регистров суммируются, делятся на 16 - получается среднее за окно из 16 измерений

 

Так вот - как организовать запись в массив по счетчику, на mpasm?

Чтоб в счетчике крутился номер ячейки, а процедура по этому номеру в оную ячейку писала.

 

В массивы констант (таблицы) по retlw "значение" я умею, а вот с переменными что-то не приходит в голову как изящно поступить.

Может есть опыт?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Начал читать про 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 ; - запись ячейки массива

 

Я нигде не ошибся?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

надо взять ПИК Си компилер от CCSinfo и забыть про movf movwf movlw и прочую retlw. Как вариант можно SDCC

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

надо взять ПИК Си компилер от CCSinfo и забыть про movf movwf movlw и прочую retlw. Как вариант можно SDCC

 

Я в си не могу. У него такой синтаксис мудовый, что увы, я так и не смог себя заставить его полюбить.

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

 

По использованию FSR в примере выше есть чего сказать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не хэши, а хексы.

Отличный язык. Простой, красивый. На asm PIC-и я тоже программировал. А как познал C, забыл про asm. И про PIC тоже. :-)

P.S. Вы и в asm "не можете". :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все такие добрые, аж блевать тянет.

 

Q: мне надо на доске просверлить ряд дырок строго по прямой, через одинаковые промежутки, есть дрель и короткая линейка, как лучше поступить.

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

 

До свидания, "помощнички", нашел нужные мне ответы у буржуев в форумах, они вменяемые, в отличие от.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что там давать. Есть счетчик, в него записал число элементов массива. Есть регистр косвенной адресации, записал в него адрес массива. Используй его для записи и чтения, инкрементируй, а счетчик уменьшай до нуля. А как станет нулем, начинай сначала.

А завтра будет Q: А какой рукой держать дрель?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я в си не могу. У него такой синтаксис мудовый, что увы, я так и не смог себя заставить его полюбить.

Бейсик, паскаль, фортран, даже асм пиковский - на ура.

:bb-offtopic:

А меня Форт "испортил" :smile3046: :biggrin:

 

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 (Форт) языковому подходу разработки ПО для контроллеров.

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нутак Вы же нашли indirect / "косвенная регистровая адресация" так это ОНО.

На младших PIC работать с ASM - это из ряда мазохизма и сокральных знаний "ниочем".

Не теряйте время, не мучайте мозг, изучайте С. И возьмите более мощный (/современный) процессор из техже PIC.

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...