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

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

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

[uquote="bestavto",url="/forum/viewtopic.php?p=4201051#p4201051"]Как в MPLABX v2.35 создать числовую переменную[/uquote]Если вы пишите на АСМе, то нужно говорить о нем, а не о среде разработки.
И, тем более, стоит перейти на более новую версию среды, например 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.
Реклама
Родился
Сообщения: 18
Зарегистрирован: Пт июн 19, 2009 16:09:46
Откуда: Москва

Сообщение bestavto »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4201289#p4201289"]не сказали о каком МК идет речь. Я смутно догадываюсь, что о 8-битных ПИКах,.[/uquote]
пишу для 8 битного МК p12f629. Пишу именно в среде mplab, а компилировать буду именно через встроенный компилятор ассемблера.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

[uquote="bestavto",url="/forum/viewtopic.php?p=4201506#p4201506"]Пишу именно в среде mplab, а компилировать буду именно через встроенный компилятор ассемблера.[/uquote]
Еще раз. Писать вы можете хоть в блокноте ручкой. Синтаксис кода имеет значение не для среды (IDE), а для ассемблера.
На ваш вопрос я ответил выше. А вообще, открываете мануал на ассемблер (он имеется в папках среды или во встроенном хелпере среды) и читаете. Там все имеется. Включая то, о чем я вам сообщил ранее.
Родился
Сообщения: 18
Зарегистрирован: Пт июн 19, 2009 16:09:46
Откуда: Москва

Сообщение bestavto »

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

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

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

Сообщение yor »

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

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

Сообщение PenguinChik »

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

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

[uquote="PenguinChik",url="/forum/viewtopic.php?p=4315879#p4315879"]Или есть?[/uquote]
Начнем с того, что так вообще никто не пишет. Сначала к проекту присоединяют хедер контроллера (.inc), а затем пишут осмысленное:

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

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

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

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

Сообщение PenguinChik »

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

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

[uquote="PenguinChik",url="/forum/viewtopic.php?p=4316039#p4316039"]А настоящая матчасть - это только из даташита?[/uquote]
С точки зрения самого контроллера - да. С точки зрения среды - мануал на среду. С точки зрения ассемблера - мануал на ассемблер.
Могу привести вам "рыбу" - пример нулевого проекта под конкретный МК. Там будет все, включая суперлуп. Вам потребуется только нарастить свое "мясо".
[uquote="PenguinChik",url="/forum/viewtopic.php?p=4316039#p4316039"]это не помоечные[/uquote]
Судя по вашим выдержкам - хуже помоечных.
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

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

Добрый вечер. 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) сбрасыватся. А симулятор говорит обратное. В ерратах ничего не нашел. Кому верить ?
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

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

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

[uquote="veso74",url="/forum/viewtopic.php?p=4341399#p4341399"]внутренний счетчик предварительного делителя...[/uquote]
Который, я так понимаю, нигде не доступен. Благодарю. Я просто понял это предупреждение, как необходимость заново конфигурировать предделитель каждый раз после ручного изменения значения TMR0. Ошибался, как теперь стало ясно.
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

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

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

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

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

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