|
|
  |
micro |
|
|
|
Dec 1 2008, 02:12
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 23-01-06
Пользователь №: 13 477

|
Цитата(mustelus @ Nov 30 2008, 00:25)  Я вот тут разбирался с MPASMом и что то не могу понять, есть такие термины: абсолютный код и перемещаемый... Расскажите пож-а в двух словах в чом смысл, для чего ети секции абсолютого и перемещаемого кода...  Достаточно подробно это описано в даташите на MPASM. Это связано с переносом подпрограмм в разные проекты.
|
|
|
|
|
Dec 1 2008, 11:47
|
Участник

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

|
Да, написано, но для чего ето вообще нужно не написано, лиш сказано что перемещаемый код ето код с предшествующей директивой CODE и все...
|
|
|
|
|
Dec 4 2008, 12:24
|
Участник

Группа: Участник
Сообщений: 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 не называют ни одного такого регистра)... СПАСИБО ЗАРАНЕЕ...
|
|
|
|
|
Dec 5 2008, 10:40
|
Участник

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

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

Группа: Участник
Сообщений: 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 , при помощи которых резервируется память и объявляются неинициализированные блоки данных.
|
|
|
|
|
Dec 5 2008, 14:01
|
Участник

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

|
Спасибо, кое что понял... А скажите пожалуйста еще, правильно ли я понял: в микрах 16FXXX в каждом банке содержаться регистры общего и специального пользования а в микрах 18FXXX регистры специального пользования находяться в последних 125 байтах 15-го банка, а регистры общего в 0....15 банках памяти??? Я вот еще не понимаю для чего нужно размещать регистры спец-го наз-я (одни и теже) в нескольких банках памяти (для микров 16FXXX и ниже) ??? //////// Извеняйте, если вам кажуться ети вопросы глупыми, не занимался просто я етой областью ранее вот и приходиться все уточнять на 100% ////////
|
|
|
|
|
Dec 5 2008, 16:42
|
Участник

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

|
Цитата(mustelus @ Dec 5 2008, 17:01)  Спасибо, кое что понял... А скажите пожалуйста еще, правильно ли я понял: в микрах 16FXXX в каждом банке содержаться регистры общего и специального пользования а в микрах 18FXXX регистры специального пользования находяться в последних 125 байтах 15-го банка, а регистры общего в 0....15 банках памяти??? Нечего гадать, надо смотреть в datasheet на конкретный контроллер. Цитата Я вот еще не понимаю для чего нужно размещать регистры спец-го наз-я (одни и теже) в нескольких банках памяти (для микров 16FXXX и ниже) ??? Вопрос к разработчикам, а я вижу так - при написании программ не надо заботиться о переключении банков при обращении к некоторым SFR, так как они доступны из любого банка, но это надо делать ОЧЕНЬ аккуратно. Цитата //////// Извеняйте, если вам кажуться ети вопросы глупыми, не занимался просто я етой областью ранее вот и приходиться все уточнять на 100% //////// Ответы на большинство вопросов в datasheet.
|
|
|
|
|
Dec 6 2008, 19:33
|
Участник

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

|
Цитата(mustelus @ Dec 6 2008, 21:46)  Я вот и изучаю все по datasheet, но смутил меня тот факт что такое различие в организации памяти данных, там во всех банках а в етом только в последних 128 байтах, ведь если взять 12-й и тот же 16 микроконтроллеры то отличаються онитолько размерами етой памяти и дополнительными выводами и регистрами...  У продукции microchip хорошо прослеживаются приципы совместимости и приемственности, но слепо им следовать не стоит, иначе в один прекрасный момент выработанные стереотипы сослужат недобрую службу. Архитектура и система команд PIC12 и PIC16 практически одинакова, PIC18, можно сказать, дальнейшее развитие PIC16, в которое разработчики вложили лучшее от PIC16, убрали такой важный минус как страничная организация памяти программ, переработали ситему команд, расширили префирию, поработали над скоростью работы. А какой смысл начинающему читать и анализировать даташиты на разные PIC? Ведь у Вас наверняка в наличии один-два контроллера. Вот их и надо плотно изучать, а дальше просто искать отличия и дополнения. Я так думаю.
|
|
|
|
|
Dec 8 2008, 13:44
|
Участник

Группа: Участник
Сообщений: 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... ...СПАСИБО....
|
|
|
|
|
Jan 2 2009, 17:27
|
Группа: Участник
Сообщений: 5
Регистрация: 2-01-09
Пользователь №: 42 879

|
Ассемблер - родной язык PIC-ов Полностью согласен с petrd!
Я тоже не имел даже представления что такое МК и как он работает. Начал с ассемблера, нашел "Мой первый проект на пике". Асм дает понять структуру МК, как он работает, все эти банки, периферия... В С все это делается компилятором за программиста, и я думаю если чтото не будет получаться, без знания архитектуры и работы МК (а Асм к машинному коду ближе чем С) будет тяжко. В СССР водителя помимо вождения, учили устройство автомобиля и его ремонт, обслуживание. Считаю это правильным.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|