MPLAB в вопросах и ответах

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25117
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: MPLAB в вопросах и ответах

Сообщение КРАМ »

Как в MPLABX v2.35 создать числовую переменную
Если вы пишите на АСМе, то нужно говорить о нем, а не о среде разработки.
И, тем более, стоит перейти на более новую версию среды, например 5.35, которая еще поддерживает старую версию АСМа для восьмибитных ПИКов - MPASM. Последующие версии требуют перехода на другой АСМ - PIC-AS.
Кроме того, вы ничего не сказали о каком МК идет речь. Я смутно догадываюсь, что о 8-битных ПИКах, но есть и 16-битные и у них совсем другой Ассемблер.
Синтаксис выделения памяти под переменные в MPASM, который позволяет видеть эти переменные в отладке в окне Watch или Variables такой:

Код: Выделить всё

group1   udata  0x20
var1      res 1
var2      res 4
var3      res 2

group2   udata_shr
var4      res 1


group1 - это переменные, которые линкер разместит подряд с адреса 0x20
group2 - имеют директиву udata_shr, которая приведет к размещению переменных в общем для всех банках сегменте (обычно это адрес 0x70 и далее)
res - это количество выделяемых под переменную байт. Обращение к старшим байтам в тексте кода очень простое: имя переменной+смещение в байтах.
То есть var2+1 будет именем для второго байта переменной var2.
bestavto
Родился
Сообщения: 18
Зарегистрирован: Пт июн 19, 2009 16:09:46
Откуда: Москва

Re: MPLAB в вопросах и ответах

Сообщение bestavto »

не сказали о каком МК идет речь. Я смутно догадываюсь, что о 8-битных ПИКах,.

пишу для 8 битного МК p12f629. Пишу именно в среде mplab, а компилировать буду именно через встроенный компилятор ассемблера.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25117
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: MPLAB в вопросах и ответах

Сообщение КРАМ »

Пишу именно в среде mplab, а компилировать буду именно через встроенный компилятор ассемблера.

Еще раз. Писать вы можете хоть в блокноте ручкой. Синтаксис кода имеет значение не для среды (IDE), а для ассемблера.
На ваш вопрос я ответил выше. А вообще, открываете мануал на ассемблер (он имеется в папках среды или во встроенном хелпере среды) и читаете. Там все имеется. Включая то, о чем я вам сообщил ранее.
bestavto
Родился
Сообщения: 18
Зарегистрирован: Пт июн 19, 2009 16:09:46
Откуда: Москва

Re: MPLAB в вопросах и ответах

Сообщение bestavto »

Спасибо!
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25117
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: MPLAB в вопросах и ответах

Сообщение КРАМ »

В догон.
При именовании переменных принято, чтобы эти имена несли смысл самих этих переменных.
yor
Говорящий с текстолитом
Сообщения: 1676
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: MPLAB в вопросах и ответах

Сообщение yor »

Что-то не могу на оф. сайте найти, где скачать mplab-x. Уж не перекрыли ли они в связи с Украиной?

Уже нашёл, версия 6.0
Аватара пользователя
PenguinChik
Нашел транзистор. Понюхал.
Сообщения: 151
Зарегистрирован: Ср дек 01, 2021 15:09:09

Re: MPLAB в вопросах и ответах

Сообщение PenguinChik »

Почему в книге для примера написан код ''bsf 3,5'' - установка 5 бита регистра СТАТУС, чтобы обращаться к первому банку. А через несколько страниц, код перехода к первому банку записан как ''bsf 5,3''. То есть в одном случае пишется команда, номер регистра, номер бита. А в другом случае наоборот, команда, номер бита, номер регистра. В этом действительно разницы нет? Или есть?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25117
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: MPLAB в вопросах и ответах

Сообщение КРАМ »

Или есть?

Начнем с того, что так вообще никто не пишет. Сначала к проекту присоединяют хедер контроллера (.inc), а затем пишут осмысленное:

Код: Выделить всё

bcf   STATUS, RP0

А лучше вообще использовать макрос, который определит банк используемого регистра самостоятельно:

Код: Выделить всё

banksel   PORTA   ; эта строка будет автоматически заменена на bcf/bsf   STATUS, RP0/RP1
bsf          PORTA, 2

Во вторых, в каждом даташите на 8-битные контроллеры Микрочипа имеется СИСТЕМА КОМАНД (INSTRUCTION SET SUMMARY), где черным по белому, для каждой инструкции написан ее синтаксис и особенности использования.
Учите настоящую матчасть, а не читайте всякие помоечные рукописи из интернета.
ЗЫ. Запись инструкции имеет фиксированный порядок.
Изображение
Аватара пользователя
PenguinChik
Нашел транзистор. Понюхал.
Сообщения: 151
Зарегистрирован: Ср дек 01, 2021 15:09:09

Re: MPLAB в вопросах и ответах

Сообщение PenguinChik »

Ну, это не помоечные рукописи, а книга. А настоящая матчасть - это только из даташита?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25117
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: MPLAB в вопросах и ответах

Сообщение КРАМ »

А настоящая матчасть - это только из даташита?

С точки зрения самого контроллера - да. С точки зрения среды - мануал на среду. С точки зрения ассемблера - мануал на ассемблер.
Могу привести вам "рыбу" - пример нулевого проекта под конкретный МК. Там будет все, включая суперлуп. Вам потребуется только нарастить свое "мясо".
это не помоечные

Судя по вашим выдержкам - хуже помоечных.
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: MPLAB в вопросах и ответах

Сообщение Пока_без_кота »

Добрый вечер. MPLAB 8.92 (и его симулятор), PIC12C508A, на ассемблере. В даташите (раздел про Prescaler) написано "When assigned to the Timer0 module, all instructions writing to the TMR0 register (e.g., CLRF 1, MOVWF 1, BSF 1,x, etc.) will clear the prescaler." То есть, при ручном изменении TMR0, предделитель (если он подключен к TMR0) сбрасыватся. А симулятор говорит обратное. В ерратах ничего не нашел. Кому верить ?
veso74
Поставщик валерьянки для Кота
Сообщения: 1902
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: MPLAB в вопросах и ответах

Сообщение veso74 »

Если "предделитель сбрасыватся" - ето PS<2:0>: Prescaler Rate Select bits Bit, то не сбрасывается предварительный делитель (Value 000).
Если "предделитель сбрасыватся" - ето внутренний счетчик предварительного делителя, то да, содержание сбрасывается.
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: MPLAB в вопросах и ответах

Сообщение Пока_без_кота »

внутренний счетчик предварительного делителя...

Который, я так понимаю, нигде не доступен. Благодарю. Я просто понял это предупреждение, как необходимость заново конфигурировать предделитель каждый раз после ручного изменения значения TMR0. Ошибался, как теперь стало ясно.
veso74
Поставщик валерьянки для Кота
Сообщения: 1902
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: MPLAB в вопросах и ответах

Сообщение veso74 »

Нет прямого чтения или записи prescaler-a. Единственный способ для чтения: "метод досчета" - добавлять по одному по входу, пока не переполнится.
(Но этот МК не имеет прерывания после переполнения. Лучше на какой-нибудь новый тип МК. По крайней мере будет проще и прямее).
sa-ta
Это не хвост, это антенна
Сообщения: 1413
Зарегистрирован: Пн ноя 23, 2009 00:50:23
Откуда: Crimea, Simferopol

Re: MPLAB в вопросах и ответах

Сообщение sa-ta »

могут знающие товарищи подсказать, возможно ли проект с исходниками под PIC18F2550 перекомпилисмть под PIC18F26J50.. там используется USB и ногодрыг для управления LCD.
__https://cxem.net/comp/comp128.php // Мониторинг параметров ПК на PIC

когда то давно, находил аналогичный "показометр" именно на PIC18F26J50. был еще использована ds1307 для показ часов, когда комп не включен.. может кому то еще попадалась ?
Ответить

Вернуться в «PIC»