MPLAB X IDE
Re: MPLAB X IDE
Так я ничего и не резервирую.
Я инициализиркю указатель на адрес регистра.
В старом лабе он сразу виден в окне регистров под именем которое я ему дал.
В новом лабе так не происходит.
Так как за это отвечает препроцессор, клпать надо в заголовочных файлах.
Непосредственно из кода define и equ результата не даёт.
Я инициализиркю указатель на адрес регистра.
В старом лабе он сразу виден в окне регистров под именем которое я ему дал.
В новом лабе так не происходит.
Так как за это отвечает препроцессор, клпать надо в заголовочных файлах.
Непосредственно из кода define и equ результата не даёт.
- КРАМ
- Друг Кота
- Сообщения: 25122
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: MPLAB X IDE
[uquote="andrey13",url="/forum/viewtopic.php?p=4142858#p4142858"]Так я ничего и не резервирую.
Я инициализиркю указатель на адрес регистра.[/uquote]
Вы ничего не инициализируете. Вы просто присваиваете имя константе. Поэтому ассемблер и среда не считают эти имена ни памятью, ни переменными.
И не надо фантазировать. Нужно просто открыть мануал на ассемблер и прочесть в нем как резервируется память.
Резервируется она ТОЛЬКО В ПЕРЕМЕЩАЕМОМ РЕЖИМЕ директивой ассемблера udata.
Синтаксис выглядит так:
Этот пример из реального проекта.
com_var udata 0x20 содержит имя секции неинициализированных данных com_var (выбирается произвольно) и начальный адрес 0х20.
udata_shr является директивой выделения общего для всех банков сегмента памяти.
директива res резервирует количество байт указанных после нее. res 1 - один байт.
tempBox res 2 резервирует 2 байта. Обращение к ним в коде будет как tempBox и tempBox+1
Я инициализиркю указатель на адрес регистра.[/uquote]
Вы ничего не инициализируете. Вы просто присваиваете имя константе. Поэтому ассемблер и среда не считают эти имена ни памятью, ни переменными.
И не надо фантазировать. Нужно просто открыть мануал на ассемблер и прочесть в нем как резервируется память.
Резервируется она ТОЛЬКО В ПЕРЕМЕЩАЕМОМ РЕЖИМЕ директивой ассемблера udata.
Синтаксис выглядит так:
Код: Выделить всё
com_var udata 0x20
currPeltier res 2
setTemp res 2
tempRad res 2
tempPeltier res 2
tempBox res 2
startTimer res 1
udata_shr
flags res 1
;--------------------
data_ready equ 0
two_sec_req equ 1
first_time equ 2
alarm_req equ 3
;--------------------
muxADC res 1
muxDataADC res 1
com_var udata 0x20 содержит имя секции неинициализированных данных com_var (выбирается произвольно) и начальный адрес 0х20.
udata_shr является директивой выделения общего для всех банков сегмента памяти.
директива res резервирует количество байт указанных после нее. res 1 - один байт.
tempBox res 2 резервирует 2 байта. Обращение к ним в коде будет как tempBox и tempBox+1
Re: MPLAB X IDE
И я не нашёл в ассемблере операнда или дерективы res
Так же нет такой дерективы udata
Мы вобще про какой ассемблер ведём речь?
Я про pic-as
Я создаю прямой указатель на регистр данных
COUNT EQU 0x10h
Далее использую этот COUNT как указатель в коде в место адреса, стандартный приём, во всех даташитах он как пример используется.
Всё прекрасно работает и в старом мплабе и новом.
В новом я естественно делаю этот указатель в нужном псекте.
PSECT udata,reloc = 10h,abs,ovrld
COUNT EQU 0x10h
Всё прекрасно работает, но метка на адрес не отображается в окне файловых регистров.
Вот и всё, просто неудобно.
Добавлено after 33 minutes 24 seconds:
Спасибо ответившим котам.
В старом и новом мплабе ассемблеры немного разные.
Там много отличий как раз по выделению памяти.
Скорее всего я не правильно работаю с памятью.
Пойду перечитввать весь мануал подробно.
Так же нет такой дерективы udata
Мы вобще про какой ассемблер ведём речь?
Я про pic-as
Я создаю прямой указатель на регистр данных
COUNT EQU 0x10h
Далее использую этот COUNT как указатель в коде в место адреса, стандартный приём, во всех даташитах он как пример используется.
Всё прекрасно работает и в старом мплабе и новом.
В новом я естественно делаю этот указатель в нужном псекте.
PSECT udata,reloc = 10h,abs,ovrld
COUNT EQU 0x10h
Всё прекрасно работает, но метка на адрес не отображается в окне файловых регистров.
Вот и всё, просто неудобно.
Добавлено after 33 minutes 24 seconds:
Спасибо ответившим котам.
В старом и новом мплабе ассемблеры немного разные.
Там много отличий как раз по выделению памяти.
Скорее всего я не правильно работаю с памятью.
Пойду перечитввать весь мануал подробно.
- КРАМ
- Друг Кота
- Сообщения: 25122
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: MPLAB X IDE
[uquote="andrey13",url="/forum/viewtopic.php?p=4142937#p4142937"]Я про pic-as
Я создаю прямой указатель на регистр данных
COUNT EQU 0x10h
Далее использую этот COUNT как указатель в коде в место адреса, стандартный приём, во всех даташитах он как пример используется.
Всё прекрасно работает и в старом мплабе и новом.[/uquote]
Тююю..., милейший!
Да вы оригинал. Причем тут старый/новый MPLAB?
Какие вы называете старым или новым?
Под "старым" MPLAB называют СРЕДУ РАЗРАБОТКИ (MPLAB IDE) версии 8.92 и ниже. А под "новым" - версию X (MPLABX IDE).
Вы же пытаетесь говорить об АССЕМБЛЕРЕ. Ассемблер не имеет отношения к среде разработки.
У Микрочипа для 8-битных МК семейства PIC есть ДВА ассемблера: mpasm (mpasmx) и pic-as. Последней версией СРЕДЫ содержащей в своем пакете установки mpasmx была MPLABX IDE ver. 5.35. Версии 5.45 и последняя 5.50 уже не имеют старого ассемблера mpasm (mpasmx) - Микрочип перестал его поддерживать. Вместо него надлежит использовать pic-as, который является ЧАСТЬЮ С-компилятора XC8 и входит в его пакет установки.
Синтаксис этих ассемблеров радикально отличается.
В pic-as переменные резервируются в секции udata, но синтаксис выделения памяти выглядит так:
DS - директива ассемблера выделяющая байты ОЗУ (Reserves storage). В мануале обозначена в таблице директив.
Однако непонятно зачем вам этот геморрой? С какой целью вы перешли на версии среды не поддерживающие mpasmx? У вас применяются какие то суперновые чипы?
Но даже если вы это сделали осмысленно, нужно отдавать себе отчет в том, что в сложившейся ситуации нет никакого смысла объявлять переменные в асм-файле. Проще это сделать в Си, а код можно писать на АСМе. У вас будет смешанный проект.
Я создаю прямой указатель на регистр данных
COUNT EQU 0x10h
Далее использую этот COUNT как указатель в коде в место адреса, стандартный приём, во всех даташитах он как пример используется.
Всё прекрасно работает и в старом мплабе и новом.[/uquote]
Тююю..., милейший!
Да вы оригинал. Причем тут старый/новый MPLAB?
Какие вы называете старым или новым?
Под "старым" MPLAB называют СРЕДУ РАЗРАБОТКИ (MPLAB IDE) версии 8.92 и ниже. А под "новым" - версию X (MPLABX IDE).
Вы же пытаетесь говорить об АССЕМБЛЕРЕ. Ассемблер не имеет отношения к среде разработки.
У Микрочипа для 8-битных МК семейства PIC есть ДВА ассемблера: mpasm (mpasmx) и pic-as. Последней версией СРЕДЫ содержащей в своем пакете установки mpasmx была MPLABX IDE ver. 5.35. Версии 5.45 и последняя 5.50 уже не имеют старого ассемблера mpasm (mpasmx) - Микрочип перестал его поддерживать. Вместо него надлежит использовать pic-as, который является ЧАСТЬЮ С-компилятора XC8 и входит в его пакет установки.
Синтаксис этих ассемблеров радикально отличается.
В pic-as переменные резервируются в секции udata, но синтаксис выделения памяти выглядит так:
Код: Выделить всё
name_var: DS 1Однако непонятно зачем вам этот геморрой? С какой целью вы перешли на версии среды не поддерживающие mpasmx? У вас применяются какие то суперновые чипы?
Но даже если вы это сделали осмысленно, нужно отдавать себе отчет в том, что в сложившейся ситуации нет никакого смысла объявлять переменные в асм-файле. Проще это сделать в Си, а код можно писать на АСМе. У вас будет смешанный проект.
Re: MPLAB X IDE
Перешёл потому что старый на линуксе не работает.В pic-as переменные резервируются в секции udata, но синтаксис выделения памяти выглядит так:DS - директива ассемблера выделяющая байты ОЗУ (Reserves storage). В мануале обозначена в таблице директив.Код: Выделить всё
name_var: DS 1
Однако непонятно зачем вам этот геморрой? С какой целью вы перешли на версии среды не поддерживающие mpasmx? У вас применяются какие то суперновые чипы?
Но даже если вы это сделали осмысленно, нужно отдавать себе отчет в том, что в сложившейся ситуации нет никакого смысла объявлять переменные в асм-файле. Проще это сделать в Си, а код можно писать на АСМе. У вас будет смешанный проект.
Пробоовал и DB и DS и DABS
Не получается.
Мне для отладки нужно видеть что пишется в регистры, а когда они безымянные то сложно визуально выделать нужный.
Когда их будет десяток, это будет просто ад.
В старом мплабе, который с ассемблером mpasm эти метки появлялись автоматически после запуска дебагера.
А в новом теперь такого нет.
Вот скрин

Последний раз редактировалось andrey13 Пт дек 17, 2021 14:26:41, всего редактировалось 2 раза.
- Родэрик
- Нашел транзистор. Понюхал.
- Сообщения: 162
- Зарегистрирован: Чт ноя 26, 2015 23:22:35
- Откуда: не с Уфы
- Контактная информация:
Re: MPLAB X IDE
[uquote="andrey13",url="/forum/viewtopic.php?p=4142937#p4142937"]PSECT udata,reloc = 10h,abs,ovrld[/uquote]
Я так понимаю, эта специфичная строчка как раз из этого самого нового pic-as. Что она означает и где-нибудь вообще есть полноценный документ по этому асму (вроде известного mpasm.pdf) ?
Я так понимаю, эта специфичная строчка как раз из этого самого нового pic-as. Что она означает и где-нибудь вообще есть полноценный документ по этому асму (вроде известного mpasm.pdf) ?
Re: MPLAB X IDE
[uquote="Родэрик",url="/forum/viewtopic.php?p=4143247#p4143247"][uquote="andrey13",url="/forum/viewtopic.php?p=4142937#p4142937"]PSECT udata,reloc = 10h,abs,ovrld[/uquote]
Я так понимаю, эта специфичная строчка как раз из этого самого нового pic-as. Что она означает и где-нибудь вообще есть полноценный документ по этому асму (вроде известного mpasm.pdf) ?[/uquote]
Вот
Я так понимаю, эта специфичная строчка как раз из этого самого нового pic-as. Что она означает и где-нибудь вообще есть полноценный документ по этому асму (вроде известного mpasm.pdf) ?[/uquote]
Вот
- Вложения
-
- MPLAB XC8 PIC Assembler User's Guide 50002974A.pdf
- (681.11 КБ) 1326 скачиваний
- КРАМ
- Друг Кота
- Сообщения: 25122
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: MPLAB X IDE
[uquote="andrey13",url="/forum/viewtopic.php?p=4143243#p4143243"]Перешёл потому что старый на линуксе не работает.[/uquote]
Не выдумывайте. Версия 5.35 работает с Линуксом.
Не выдумывайте. Версия 5.35 работает с Линуксом.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: MPLAB X IDE
Что-то я не пойму. Заглянул сейчас в папку с установленным MPLAB X, а там есть папочка MPASM Suite. Всё есть, всё устанавливается....
- КРАМ
- Друг Кота
- Сообщения: 25122
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: MPLAB X IDE
Версия у вас какая?
Re: MPLAB X IDE
[uquote="КРАМ",url="/forum/viewtopic.php?p=4143258#p4143258"][uquote="andrey13",url="/forum/viewtopic.php?p=4143243#p4143243"]Перешёл потому что старый на линуксе не работает.[/uquote]
Не выдумывайте. Версия 5.35 работает с Линуксом.[/uquote]
Не знал, надо попробовать.
Тем не менее, теперь придётся жить с новым ассемблером, и всё равно переходить на новую среду.
Тем более новый ассемблер хорош, мне нравится их фишка с псектами.
У меня один и тот же код в обоих средах.
И вот такое мальенькое неудобство в новой среде.
Не выдумывайте. Версия 5.35 работает с Линуксом.[/uquote]
Не знал, надо попробовать.
Тем не менее, теперь придётся жить с новым ассемблером, и всё равно переходить на новую среду.
Тем более новый ассемблер хорош, мне нравится их фишка с псектами.
У меня один и тот же код в обоих средах.
И вот такое мальенькое неудобство в новой среде.
- Родэрик
- Нашел транзистор. Понюхал.
- Сообщения: 162
- Зарегистрирован: Чт ноя 26, 2015 23:22:35
- Откуда: не с Уфы
- Контактная информация:
Re: MPLAB X IDE
[uquote="andrey13",url="/forum/viewtopic.php?p=4143271#p4143271"]....
Тем не менее, теперь придётся жить с новым ассемблером, и всё равно переходить на новую среду ......[/uquote]
Придётся? Это ещё кто так сказал? Должны быть какие-то веские причины.
Если, например, говорить конкретней - вот, скажем, сижу я на 8.92 и пишу под 18f46k22...
Вопрос: есть хоть один весомый аргумент, чтобы переехать на pic-as? Как именно он упростит мне задачу, сократит время.....?
Тем не менее, теперь придётся жить с новым ассемблером, и всё равно переходить на новую среду ......[/uquote]
Придётся? Это ещё кто так сказал? Должны быть какие-то веские причины.
Если, например, говорить конкретней - вот, скажем, сижу я на 8.92 и пишу под 18f46k22...
Вопрос: есть хоть один весомый аргумент, чтобы переехать на pic-as? Как именно он упростит мне задачу, сократит время.....?
- КРАМ
- Друг Кота
- Сообщения: 25122
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: MPLAB X IDE
Не, я отказался в новых 8-битных чипах от чистого асма. Либо Си, либо смешанный код.
А старые чипы, где написано на mpasmx, я поддерживаю на версии 5.35.
А старые чипы, где написано на mpasmx, я поддерживаю на версии 5.35.
Re: MPLAB X IDE
Дело в том что вы уже крутые коты и давно сидите на микроконтррллерах, у вас уже всё устоялось, вы познали дзен.
Я только второй месяц как начал их изучать, а если ты новичёк то зачем разрываться на несколько сред.
Если ты с нуля, то лучше взять самую свежую среду, она поддерживает все контроллеры от самых старых до самых новых.
И ассемблер тоже без разницы какой изучать, если нулевой уровень, логично изучить тот который в самой свежей среде, он же скорее всего и будет основным на долгое время.
У меня было так, мне отдали ноубук где стоит какая то предыдущая версия лаба, где mpasm ассемблер.
Я что то там пытался делать.
Ноутбук попросили вернуть.
Я пытался на домашнем компе под вайном в линуксе запустить такую же как на ноутбуке, у меня что то не получилось (я думал что мплаб только под винду).
Я зашёл на сайт микрочипа и скачал последний лаб на линукс.
Установил и теперь на нём.
В принципе всё устаривает, нет меток в эмуляторе, ну и ладнно, не смертельно, буду смотреть регистры данных по их адресам, делов то.
Я только второй месяц как начал их изучать, а если ты новичёк то зачем разрываться на несколько сред.
Если ты с нуля, то лучше взять самую свежую среду, она поддерживает все контроллеры от самых старых до самых новых.
И ассемблер тоже без разницы какой изучать, если нулевой уровень, логично изучить тот который в самой свежей среде, он же скорее всего и будет основным на долгое время.
У меня было так, мне отдали ноубук где стоит какая то предыдущая версия лаба, где mpasm ассемблер.
Я что то там пытался делать.
Ноутбук попросили вернуть.
Я пытался на домашнем компе под вайном в линуксе запустить такую же как на ноутбуке, у меня что то не получилось (я думал что мплаб только под винду).
Я зашёл на сайт микрочипа и скачал последний лаб на линукс.
Установил и теперь на нём.
В принципе всё устаривает, нет меток в эмуляторе, ну и ладнно, не смертельно, буду смотреть регистры данных по их адресам, делов то.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: MPLAB X IDE
[uquote="КРАМ",url="/forum/viewtopic.php?p=4143264#p4143264"]Версия у вас какая?[/uquote]5.45
- Родэрик
- Нашел транзистор. Понюхал.
- Сообщения: 162
- Зарегистрирован: Чт ноя 26, 2015 23:22:35
- Откуда: не с Уфы
- Контактная информация:
Re: MPLAB X IDE
[uquote="КРАМ",url="/forum/viewtopic.php?p=4143313#p4143313"]... либо смешанный код. ...[/uquote]asm вставки?
А допустим, если наоборот, - в основе асм, но некоторые функции делать на си, компилировать и уже полученный фрагмент вставлять. Такое вообще практикуется, или это плохая идея?
А допустим, если наоборот, - в основе асм, но некоторые функции делать на си, компилировать и уже полученный фрагмент вставлять. Такое вообще практикуется, или это плохая идея?
- КРАМ
- Друг Кота
- Сообщения: 25122
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: MPLAB X IDE
[uquote="Родэрик",url="/forum/viewtopic.php?p=4143547#p4143547"]asm вставки?[/uquote]
Нет, не вставки. Речь идет о совместной компиляции .c/.h и .s/.inc файлов в любом их соотношении.
[uquote="Аlex",url="/forum/viewtopic.php?p=4143516#p4143516"][uquote="КРАМ",url="/forum/viewtopic.php?p=4143264#p4143264"]Версия у вас какая?[/uquote]5.45[/uquote]
Мне кажется вы что то путаете. Вот папка установленного 5.45:

А вот папка более ранних версий. Они даже в другую папку Винды устанавливаются:

Нет, не вставки. Речь идет о совместной компиляции .c/.h и .s/.inc файлов в любом их соотношении.
[uquote="Аlex",url="/forum/viewtopic.php?p=4143516#p4143516"][uquote="КРАМ",url="/forum/viewtopic.php?p=4143264#p4143264"]Версия у вас какая?[/uquote]5.45[/uquote]
Мне кажется вы что то путаете. Вот папка установленного 5.45:
А вот папка более ранних версий. Они даже в другую папку Винды устанавливаются:
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: MPLAB X IDE
Вот, у мну на работе :
Но тут у меня 5.35, давно не обновлялся.
Всё в одной папке - "C:\Program Files (x86)\Microchip". Трудно здесь что-то напутать.
Дома тоже самое. Вроде бы

Спойлер
Всё в одной папке - "C:\Program Files (x86)\Microchip". Трудно здесь что-то напутать.
Дома тоже самое. Вроде бы
- КРАМ
- Друг Кота
- Сообщения: 25122
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: MPLAB X IDE
Так о том и речь, что 5.35 содержит MPASM, а 5.45 уже НЕ содержит.
И, начиная с версии 5.45, все инструменты Микрочипа попадают в папку Program Files, а не Program Files (x86).
[uquote="andrey13",url="/forum/viewtopic.php?p=4143340#p4143340"]В принципе всё устаривает, нет меток в эмуляторе, ну и ладнно, не смертельно, буду смотреть регистры данных по их адресам, делов то.[/uquote]
Есть такое обоснованное мнение, что вы не определили свои переменные как ГЛОБАЛЬНЫЕ.
Добавьте сверху директиву global var1, var2, var3 , заменив имена переменных на свои и жизнь у вас наладится...


И, начиная с версии 5.45, все инструменты Микрочипа попадают в папку Program Files, а не Program Files (x86).
[uquote="andrey13",url="/forum/viewtopic.php?p=4143340#p4143340"]В принципе всё устаривает, нет меток в эмуляторе, ну и ладнно, не смертельно, буду смотреть регистры данных по их адресам, делов то.[/uquote]
Есть такое обоснованное мнение, что вы не определили свои переменные как ГЛОБАЛЬНЫЕ.
Добавьте сверху директиву global var1, var2, var3 , заменив имена переменных на свои и жизнь у вас наладится...
- Родэрик
- Нашел транзистор. Понюхал.
- Сообщения: 162
- Зарегистрирован: Чт ноя 26, 2015 23:22:35
- Откуда: не с Уфы
- Контактная информация:
Re: MPLAB X IDE
[uquote="Аlex",url="/forum/viewtopic.php?p=4143261#p4143261"]Что-то я не пойму. Заглянул сейчас в папку с установленным MPLAB X, а там есть папочка MPASM Suite. Всё есть, всё устанавливается....[/uquote]
Вы вот этой своей формулировкой ввели в заблуждение. Я тогда решил, что у вас в папке mplabx папка mpasm suite. А ныне фотки взглянул, а оказывается всё как обычно....... я бы вам сразу тогда написал, что папку mpasm suite создал 8-й mplab, к иксу она не имеет отношения (у него там своя есть mpasmx)
Вы вот этой своей формулировкой ввели в заблуждение. Я тогда решил, что у вас в папке mplabx папка mpasm suite. А ныне фотки взглянул, а оказывается всё как обычно....... я бы вам сразу тогда написал, что папку mpasm suite создал 8-й mplab, к иксу она не имеет отношения (у него там своя есть mpasmx)