| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Как в PIC 16f877 переключать страницы памяти?
13.06.2012, 08:05
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Сообщение от Flopix
|
|
а каким способом на этапе написания программы на ассемблере я узнаю на какой странице будет подпрограмма на которую мне нужно перейти?
|
Вы будете удивлены, но эта задача возложена на программиста, т.е. почти что методом тыка!
|
|
|
|
13.06.2012, 08:13
|
|
|
Гражданин KAZUS.RUN
Регистрация: 31.12.2010
Сообщений: 837
Сказал спасибо: 371
Сказали Спасибо 153 раз(а) в 113 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
nonamedov, идиотизм. С одной стороны в PIC сэкономили программную память умудрившись запихнуть абсолютно все команды в одно 14-битное слово - 3 бита на команду и 11 бит на передаваемое ей значение. Но с другой стороны вместо 1 команды на переход по адресу на другой странице прийдется выполнить как минимум 2 дополнительных команды для установки битов PCLATCH, а на самом деле и еще больше так как для автоматизации этого процесса нужно просто скопировать 2 старших бита адреса перехода в PCLATCH 3..4, а это еще несколько логических команд плюс команды сдвига.
|
|
|
|
13.06.2012, 08:27
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,578
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Епт удалите уже тему ни о чем....
__________________
Глаза боятся,а руки делают.
|
|
|
|
13.06.2012, 08:38
|
|
|
Вид на жительство
Регистрация: 16.09.2011
Сообщений: 342
Сказал спасибо: 10
Сказали Спасибо 170 раз(а) в 103 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Ну если не нравится контроллер, позволяется его не использовать 
На самом деле, там на команду не 3 бита, а больше. Просто 14 бит распределяются между кодом команды и операндом.
Логика написания программы должна быть такой, чтобы обеспечить минимум переходов между страницами. Всего то. Да, тут нужно думать. А ассемблер - так он вообще только для думающих людей.
|
|
|
|
13.06.2012, 09:00
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
|
Цитата:
|
|
На самом деле, там на команду не 3 бита, а больше. Просто 14 бит распределяются между кодом команды и операндом.
|
Для команд вызова и перехода именно три бита под код операции.
Смотрим внимательно, выигрываем обязательно (с)не мой
__________________
misterdi<@>i.ua
Последний раз редактировалось MisterDi; 13.06.2012 в 09:15.
|
|
|
|
13.06.2012, 09:06
|
|
|
Вид на жительство
Регистрация: 16.09.2011
Сообщений: 342
Сказал спасибо: 10
Сказали Спасибо 170 раз(а) в 103 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Я прекрасно умею читать и читал это давно  для команд GOTO и CALL - да, а для остальных инструкций - нет. Смотрим чуть ниже на том же скрине. А если смотреть в даташите повыше этой таблицы, там расписано распределение бит.
Вообще-то, бита именно ТРИ, поскольку старший бит будет тоже участвовать. Ибо без него команда CALL может быть понята например как ADDWF
Последний раз редактировалось Bumbarra; 13.06.2012 в 09:11.
|
|
|
|
13.06.2012, 09:17
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Согласен, сначала откорректировал сообщение, а только потом увидел Ваш ответ.
__________________
misterdi<@>i.ua
|
|
|
|
13.06.2012, 09:29
|
|
|
Гражданин KAZUS.RUN
Регистрация: 31.12.2010
Сообщений: 837
Сказал спасибо: 371
Сказали Спасибо 153 раз(а) в 113 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Сообщение от Bumbarra
|
|
Логика написания программы должна быть такой, чтобы обеспечить минимум переходов между страницами. Всего то.
|
Вот только на этапе написания кода тяжело заранее предугадать на какой странице окажется тот или иной блок кода.
В принципе под PIC пока не пишу так что все равно. До этого я делал программу на ассемблере под PIC 12F629, там всего 2к слова, поэтому я и не столкнулся тогда с этим моментом.
А по топику я не могу понять как тот текст программы на 800 строк кода, включая половину пустых строк, компилятор раздул на 2000+ команд, учитывая что почти все команды примитивные и должны были при компиляции дать не более 1 процессорной команды. Наверно точно функцию Delay компилятор везде вставляет InLine.
Последний раз редактировалось Flopix; 13.06.2012 в 09:37.
|
|
|
|
13.06.2012, 10:50
|
|
|
Вид на жительство
Регистрация: 16.09.2011
Сообщений: 342
Сказал спасибо: 10
Сказали Спасибо 170 раз(а) в 103 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
Да правильно написанный код примитивного мигания двух десятков диодов вообще займет, грубо говоря, не более сотни слов, вместе с инициализацией... Вот вам и "бред"...
|
|
|
|
13.06.2012, 11:20
|
|
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: Как в PIC 16f877 переключать страницы памяти?
А вот не верю... 
Пример в студию!!!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:54.
|
|