Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Как в PIC 16f877 переключать страницы памяти?

Непрочитано 13.06.2012, 08:05  
nonamedov
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение от Flopix Посмотреть сообщение
а каким способом на этапе написания программы на ассемблере я узнаю на какой странице будет подпрограмма на которую мне нужно перейти?
Вы будете удивлены, но эта задача возложена на программиста, т.е. почти что методом тыка!
Реклама:
nonamedov вне форума  
Непрочитано 13.06.2012, 08:13  
Flopix
Гражданин KAZUS.RUN
 
Регистрация: 31.12.2010
Сообщений: 837
Сказал спасибо: 371
Сказали Спасибо 153 раз(а) в 113 сообщении(ях)
Flopix на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

nonamedov, идиотизм. С одной стороны в PIC сэкономили программную память умудрившись запихнуть абсолютно все команды в одно 14-битное слово - 3 бита на команду и 11 бит на передаваемое ей значение. Но с другой стороны вместо 1 команды на переход по адресу на другой странице прийдется выполнить как минимум 2 дополнительных команды для установки битов PCLATCH, а на самом деле и еще больше так как для автоматизации этого процесса нужно просто скопировать 2 старших бита адреса перехода в PCLATCH 3..4, а это еще несколько логических команд плюс команды сдвига.
Flopix вне форума  
Непрочитано 13.06.2012, 08:27  
CERGEI1982
Почётный гражданин KAZUS.RUN
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,578
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

Епт удалите уже тему ни о чем....
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 13.06.2012, 08:38  
Bumbarra
Вид на жительство
 
Регистрация: 16.09.2011
Сообщений: 342
Сказал спасибо: 10
Сказали Спасибо 170 раз(а) в 103 сообщении(ях)
Bumbarra на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

Ну если не нравится контроллер, позволяется его не использовать
На самом деле, там на команду не 3 бита, а больше. Просто 14 бит распределяются между кодом команды и операндом.
Логика написания программы должна быть такой, чтобы обеспечить минимум переходов между страницами. Всего то. Да, тут нужно думать. А ассемблер - так он вообще только для думающих людей.
Bumbarra вне форума  
Непрочитано 13.06.2012, 09:00  
MisterDi
Почётный гражданин KAZUS.RUN
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

Цитата:
На самом деле, там на команду не 3 бита, а больше. Просто 14 бит распределяются между кодом команды и операндом.
Для команд вызова и перехода именно три бита под код операции.
Смотрим внимательно, выигрываем обязательно (с)не мой
Миниатюры:
Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 57
Размер:	62.9 Кб
ID:	35783  
__________________
misterdi<@>i.ua

Последний раз редактировалось MisterDi; 13.06.2012 в 09:15.
MisterDi вне форума  
Непрочитано 13.06.2012, 09:06  
Bumbarra
Вид на жительство
 
Регистрация: 16.09.2011
Сообщений: 342
Сказал спасибо: 10
Сказали Спасибо 170 раз(а) в 103 сообщении(ях)
Bumbarra на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

Я прекрасно умею читать и читал это давно для команд GOTO и CALL - да, а для остальных инструкций - нет. Смотрим чуть ниже на том же скрине. А если смотреть в даташите повыше этой таблицы, там расписано распределение бит.
Вообще-то, бита именно ТРИ, поскольку старший бит будет тоже участвовать. Ибо без него команда CALL может быть понята например как ADDWF

Последний раз редактировалось Bumbarra; 13.06.2012 в 09:11.
Bumbarra вне форума  
Непрочитано 13.06.2012, 09:17  
MisterDi
Почётный гражданин KAZUS.RUN
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

Согласен, сначала откорректировал сообщение, а только потом увидел Ваш ответ.
__________________
misterdi<@>i.ua
MisterDi вне форума  
Непрочитано 13.06.2012, 09:29  
Flopix
Гражданин KAZUS.RUN
 
Регистрация: 31.12.2010
Сообщений: 837
Сказал спасибо: 371
Сказали Спасибо 153 раз(а) в 113 сообщении(ях)
Flopix на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

Сообщение от Bumbarra Посмотреть сообщение
Логика написания программы должна быть такой, чтобы обеспечить минимум переходов между страницами. Всего то.
Вот только на этапе написания кода тяжело заранее предугадать на какой странице окажется тот или иной блок кода.

В принципе под PIC пока не пишу так что все равно. До этого я делал программу на ассемблере под PIC 12F629, там всего 2к слова, поэтому я и не столкнулся тогда с этим моментом.


А по топику я не могу понять как тот текст программы на 800 строк кода, включая половину пустых строк, компилятор раздул на 2000+ команд, учитывая что почти все команды примитивные и должны были при компиляции дать не более 1 процессорной команды. Наверно точно функцию Delay компилятор везде вставляет InLine.

Последний раз редактировалось Flopix; 13.06.2012 в 09:37.
Flopix вне форума  
Непрочитано 13.06.2012, 10:50  
Bumbarra
Вид на жительство
 
Регистрация: 16.09.2011
Сообщений: 342
Сказал спасибо: 10
Сказали Спасибо 170 раз(а) в 103 сообщении(ях)
Bumbarra на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

Да правильно написанный код примитивного мигания двух десятков диодов вообще займет, грубо говоря, не более сотни слов, вместе с инициализацией... Вот вам и "бред"...
Bumbarra вне форума  
Непрочитано 13.06.2012, 11:20  
st__1
Заблокирован
 
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
st__1 на пути к лучшему
По умолчанию Re: Как в PIC 16f877 переключать страницы памяти?

А вот не верю...
Пример в студию!!!
st__1 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PIC 16F877/Лампочка с ключом vip7070 Proteus 26 08.04.2010 13:23
PIC 16F877 АЦП подлючение терморезистора. ataripc Микроконтроллеры, АЦП, память и т.д 0 13.11.2007 14:01
PIC 16F877 - встроенный генератор aks_ Микроконтроллеры, АЦП, память и т.д 1 18.02.2007 18:19
Программатор для PIC 16F877 Mouserx Микроконтроллеры, АЦП, память и т.д 2 12.12.2006 14:04
Страницы памяти chipic128 Микроконтроллеры, АЦП, память и т.д 12 12.11.2005 16:11


Часовой пояс GMT +4, время: 10:54.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.