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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> micro
Bronislav
сообщение Dec 1 2008, 02:12
Сообщение #16


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

Группа: Участник
Сообщений: 118
Регистрация: 23-01-06
Пользователь №: 13 477



Цитата(mustelus @ Nov 30 2008, 00:25) *
Я вот тут разбирался с MPASMом и что то не могу понять, есть такие термины: абсолютный код и перемещаемый...
Расскажите пож-а в двух словах в чом смысл, для чего ети секции абсолютого и перемещаемого кода... sad.gif

Достаточно подробно это описано в даташите на MPASM. Это связано с переносом подпрограмм в разные проекты.
Go to the top of the page
 
+Quote Post
mustelus
сообщение Dec 1 2008, 11:47
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 21-11-08
Из: BELARUS
Пользователь №: 41 837



Да, написано, но для чего ето вообще нужно не написано, лиш сказано что перемещаемый код ето код с предшествующей директивой CODE и все...
Go to the top of the page
 
+Quote Post
MaxEngee
сообщение Dec 4 2008, 07:37
Сообщение #18


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

Группа: Свой
Сообщений: 120
Регистрация: 17-03-07
Из: Беларусь, Минск
Пользователь №: 26 249



Кто бы кто что не говорил
если хотите стать нормальным программистом надо начинать с ассемблера, особенно для пиков.
Для пиков серий 10-18 набор команд ОЧЕНЬ простой. Единственное если требуются математические расчеты тогда целесообразно использовать С.

Когда начинающий програмер стартует с С и не представляет ядра микроконтроллера ни чего нормального он не напишет.
К тому же при использовании С теряется классная особенность пиков - расчет точного времени исполнения кода и возможность реализации алгоритмов требующих точности по времени.

Хотя конечно многие скажут что и С можно замерить время эмулятором и что-нибудь подогнать, но это будет справедливо только для конкретной оптимизации и версии компилятора.
Go to the top of the page
 
+Quote Post
mustelus
сообщение Dec 4 2008, 12:24
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 21-11-08
Из: BELARUS
Пользователь №: 41 837



Скажите пожалуйста, можно ли сохранить какие то промежуточные "данные" по ходу написания програмы без заранее зарезервированной ячейки какой либо памяти...
\\\\\\\\\\\\\\\
var1 res 1 \
var1 res 2 \\ без етого
var1 res 3 \
\\\\\\\\\\\\\\\\
CODE

movff w,var1
movff porta,var2
.
.
.

\\\\\\\\\\\\\\\\\\\\\\\\
СODE \\
movff w,0x0Ah \\ примерно вот так
movff porta,0x0Bh \\
. \\
. \\
\\\\\\\\\\\\\\\\\\\\\\\\
Если можно, то с какого начального адреса начинаеться ета или ети области, и что за регистры общего назначения которые организованы в памяти данных (в data Sheet на Pic 18Fxxx не называют ни одного такого регистра)... help.gif

СПАСИБО ЗАРАНЕЕ...
Go to the top of the page
 
+Quote Post
MaxEngee
сообщение Dec 5 2008, 08:10
Сообщение #20


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

Группа: Свой
Сообщений: 120
Регистрация: 17-03-07
Из: Беларусь, Минск
Пользователь №: 26 249



Что вопрос не совсем понятен
даже совсем не понятен

Вообще когда пишите на асме, то вы в принципе ни чего не резервируете
MPASM - не компилятор а транслятор

Опишите подробнее задачу


и вместо
movff w,0x0Ah \\ примерно вот так

лучше movwf
:-)

Регистры общего назначения можно использовать как хочешь
Еще есть регистры конфигурации периферийных модулей
Go to the top of the page
 
+Quote Post
mustelus
сообщение Dec 5 2008, 10:40
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 21-11-08
Из: BELARUS
Пользователь №: 41 837



Нуу начнем с того что, назовите хоть один по имени регистр общего пользования... (К примеру специальные: STATUS, FSR, PORTA.................., а общего ?????????????????????????????????)
А вообще я имею ввиду то что при програмировании на asme обычно в сегменте данных директивами DB,DW,DD резервируют ячейки памяти (name1 DB (?)) для того, что б потом в них сохранять промежуточные значения каких то операций... Так вот можно ли обойтись без етих резервирований а по ходу написания скрипта взять и сохранить значение какого то регистра по какомуто адресу, ведь name1 ето кокой то адрес зарезервированый вначале програмы...
Go to the top of the page
 
+Quote Post
petrd
сообщение Dec 5 2008, 12:35
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 3-06-08
Пользователь №: 38 012



Цитата(mustelus @ Dec 5 2008, 13:40) *
Нуу начнем с того что, назовите хоть один по имени регистр общего пользования... (К примеру специальные: STATUS, FSR, PORTA.................., а общего ?????????????????????????????????)
А вообще я имею ввиду то что при програмировании на asme обычно в сегменте данных директивами DB,DW,DD резервируют ячейки памяти (name1 DB (?)) для того, что б потом в них сохранять промежуточные значения каких то операций... Так вот можно ли обойтись без етих резервирований а по ходу написания скрипта взять и сохранить значение какого то регистра по какомуто адресу, ведь name1 ето кокой то адрес зарезервированый вначале програмы...

А нету у регистров общего назначения имен. Вы можете себе представить ситуацию, что в компьютере с 2 Gb ОЗУ каждая ячейка имеет имя? Я вот не могу.
Специальные регистры и регистры общего назначения представляют собой память одного типа (статическое ОЗУ), называемую памятью данных и расположены в одном адресном пространстве. В PIC 16 и 18 эта память разбита на банки. Регистры специального назначения (SFR) аппаратно-зависимы и имеют зарезервированные имена, и поэтому другого применения, кроме описанного в datasheet, у них нет. Регистры общего назначения (GPR) - это ячейки памяти данных, которые пользователь может использовать по своему назначению и имена он тоже назначает по своему усмотрению при написании программы. Адреса GPR, доступных для программиста указаны в datasheet.
Теперь о резервировании - конкретно, то о чем Вы говорите делается при помощи директив ассемблера RES и UDATA , при помощи которых резервируется память и объявляются неинициализированные блоки данных.
Go to the top of the page
 
+Quote Post
mustelus
сообщение Dec 5 2008, 14:01
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 21-11-08
Из: BELARUS
Пользователь №: 41 837



Спасибо, кое что понял... А скажите пожалуйста еще, правильно ли я понял: в микрах 16FXXX в каждом банке содержаться регистры общего и специального пользования а в микрах 18FXXX регистры специального пользования находяться в последних 125 байтах 15-го банка, а регистры общего в 0....15 банках памяти???
Я вот еще не понимаю для чего нужно размещать регистры спец-го наз-я (одни и теже) в нескольких банках памяти (для микров 16FXXX и ниже) ???
//////// Извеняйте, если вам кажуться ети вопросы глупыми, не занимался просто я етой областью ранее вот и приходиться все уточнять на 100% ////////
Go to the top of the page
 
+Quote Post
petrd
сообщение Dec 5 2008, 16:42
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 3-06-08
Пользователь №: 38 012



Цитата(mustelus @ Dec 5 2008, 17:01) *
Спасибо, кое что понял... А скажите пожалуйста еще, правильно ли я понял: в микрах 16FXXX в каждом банке содержаться регистры общего и специального пользования а в микрах 18FXXX регистры специального пользования находяться в последних 125 байтах 15-го банка, а регистры общего в 0....15 банках памяти???

Нечего гадать, надо смотреть в datasheet на конкретный контроллер.
Цитата
Я вот еще не понимаю для чего нужно размещать регистры спец-го наз-я (одни и теже) в нескольких банках памяти (для микров 16FXXX и ниже) ???

Вопрос к разработчикам, а я вижу так - при написании программ не надо заботиться о переключении банков при обращении к некоторым SFR, так как они доступны из любого банка, но это надо делать ОЧЕНЬ аккуратно.
Цитата
//////// Извеняйте, если вам кажуться ети вопросы глупыми, не занимался просто я етой областью ранее вот и приходиться все уточнять на 100% ////////

Ответы на большинство вопросов в datasheet.
Go to the top of the page
 
+Quote Post
mustelus
сообщение Dec 6 2008, 18:46
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 21-11-08
Из: BELARUS
Пользователь №: 41 837



Я вот и изучаю все по datasheet, но смутил меня тот факт что такое различие в организации памяти данных, там во всех банках а в етом только в последних 128 байтах, ведь если взять 12-й и тот же 16 микроконтроллеры то отличаються онитолько размерами етой памяти и дополнительными выводами и регистрами... laughing.gif
Go to the top of the page
 
+Quote Post
petrd
сообщение Dec 6 2008, 19:33
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 3-06-08
Пользователь №: 38 012



Цитата(mustelus @ Dec 6 2008, 21:46) *
Я вот и изучаю все по datasheet, но смутил меня тот факт что такое различие в организации памяти данных, там во всех банках а в етом только в последних 128 байтах, ведь если взять 12-й и тот же 16 микроконтроллеры то отличаються онитолько размерами етой памяти и дополнительными выводами и регистрами... laughing.gif

У продукции microchip хорошо прослеживаются приципы совместимости и приемственности, но слепо им следовать не стоит, иначе в один прекрасный момент выработанные стереотипы сослужат недобрую службу. Архитектура и система команд PIC12 и PIC16 практически одинакова, PIC18, можно сказать, дальнейшее развитие PIC16, в которое разработчики вложили лучшее от PIC16, убрали такой важный минус как страничная организация памяти программ, переработали ситему команд, расширили префирию, поработали над скоростью работы.
А какой смысл начинающему читать и анализировать даташиты на разные PIC? Ведь у Вас наверняка в наличии один-два контроллера. Вот их и надо плотно изучать, а дальше просто искать отличия и дополнения. Я так думаю.
Go to the top of the page
 
+Quote Post
mustelus
сообщение Dec 7 2008, 18:54
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 21-11-08
Из: BELARUS
Пользователь №: 41 837



Полностью с вами согласен..... Спасибо за информацию... smile.gif
Go to the top of the page
 
+Quote Post
mustelus
сообщение Dec 8 2008, 13:44
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 21-11-08
Из: BELARUS
Пользователь №: 41 837



Подскажите в чом дело, вот код на PIC18F452
vbanke EQU 0xF1
CODE:
movlw 0x00
movwf TRISB ;настраиваем порт на вывод
CLRF PORTB ;очистка защолки
movlw 0x00
movwf ADCON1 ;настройка АЦП
movlw b'0011' ;выбор банка памяти
movwf BSR
movlw b'1011011'
movwf vbanke,1 ;сохраняем нейкое значение в переменной
movwf PORTB,1 ;содержимое
clrf vbanke
return

Почему не сохраняеться значение b'1011011' в выбранном банке памяти, в выбранных банках памяти... Все работает только если игноривать регистр BSR...
...СПАСИБО....
Go to the top of the page
 
+Quote Post
petrd
сообщение Dec 9 2008, 12:31
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 3-06-08
Пользователь №: 38 012



Вот здесь посмотрите http://subscribe.ru/archive/comp.soft.prog...2/19203029.html, ответ на Ваш вопрос в самом конце.
Go to the top of the page
 
+Quote Post
Sharasir
сообщение Jan 2 2009, 17:27
Сообщение #30





Группа: Участник
Сообщений: 5
Регистрация: 2-01-09
Пользователь №: 42 879



Ассемблер - родной язык PIC-ов
Полностью согласен с petrd!

Я тоже не имел даже представления что такое МК и как он работает. Начал с ассемблера, нашел "Мой первый проект на пике". Асм дает понять структуру МК, как он работает, все эти банки, периферия... В С все это делается компилятором за программиста, и я думаю если чтото не будет получаться, без знания архитектуры и работы МК (а Асм к машинному коду ближе чем С) будет тяжко.
В СССР водителя помимо вождения, учили устройство автомобиля и его ремонт, обслуживание. Считаю это правильным.
Go to the top of the page
 
+Quote Post

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

 


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


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