реклама на сайте
подробности

 
 
> Непрерывная память для PIC-ов
zelvans
сообщение May 8 2010, 14:08
Сообщение #1





Группа: Участник
Сообщений: 7
Регистрация: 29-04-10
Пользователь №: 56 980



Недавно начал работать с PIC-ми, на мой взгляд такое рваное
распределение памяти неудобно для использования. Решил выстроить
память в непрерывные(линейные) адреса 0x00-0xff следующим образом:
0x60-0x6f банк0 --> 0x00-0x0f
0x20-0x6f банк1 --> 0x10-0x5f
0x20-0x6f банк2 --> 0x60-0xaf
0x20-0x6f банк3 --> 0xb0-0xff


Работаю MPLAB IDE. Пример для PIC16F88.

Чтение из линейного адреса 0xb2 выглядит так:

movlw 0xb2
call read_routine

на выходе в W прочитанный байт


Запись 0xaa в линейный адрес 0Xb2:

banksel 0
movlw 0xaa ;данные, которые
movwf WRITE_BYTE ;надо записать
movlw 0xb2
call write_routine

Копирование из одного участка памяти в другой(непересекающийся)
использую макрос

COPY_MEM read_address,write_address,count

read_address откуда
write_address куда
count сколько байтов

В моем проекте прописывается память своими адресами.
Если закоментарить строку goto Init_0015 то можно
проверить копирование памяти.
Прикрепленный файл  JQ017_L_M.rar ( 14.16 килобайт ) Кол-во скачиваний: 104
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
volodya
сообщение May 12 2010, 06:07
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 194
Регистрация: 14-02-07
Из: УКРАИНА
Пользователь №: 25 344



Цитата(zelvans @ May 8 2010, 17:08) *
Недавно начал работать с PIC-ми, на мой взгляд такое рваное
распределение памяти неудобно для использования. Решил выстроить
память в непрерывные(линейные) адреса 0x00-0xff следующим образом:

Вообще - то это аппаратное ограничение(14-битовой команды). Pic16 в принципе больше 128 байт ОЗУ не адресует по системе команд (из них 32 SFR). Дальше костыли в виде банков и обращение через banksel (в последних до 1024 байт дошли).

Если необходимо большой массив, то, наверное, лучше в сторону PIC24 - 32 смотреть.
Хотя если подумать - масса задач великолепно решается на этой серии.

По личному опыту могу сказать родная адресация особых препятствий не создает, а обращение к ОЗУ через подпрограммы, по моему, спорное решение. Больше путаници будет и времени на обращение, Хотя это все на любителя.


--------------------
"Для того чтобы избежать критики, надо ничего не делать, ничего не говорить и никем не быть"
"Каждый из нас бывает дураком по крайней мере пять минут в день; мудрость заключается в том, чтобы не превысить лимит." Элберт Хаббард
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 05:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016