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

Поклонники продукции Microchip Technology Inc тусуются тут.
stas00n
Вымогатель припоя
Сообщения: 557
Зарегистрирован: Пн мар 23, 2009 04:03:45

Re: MPLAB проблемы

Сообщение stas00n »

dr.doc, я уже 2 раза Вам объяснял как надо сделать! Хорошо, объясню в третий раз. Вот как должно быть:

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

; ГРУППА КОМАНД ПРЕОБРАЗОВАНИЯ ДВОИЧНО-ДЕСЯТИЧНОГО КОДА В КОД 7-СЕГМЕНТНОГО ИНДИКАТОРА

TABLE
         org         0x100
         andlw      0x0F
         addwf       PC,F        ; Содержимое счетчика команд PC увеличивается
                                    ; на величину содержимого аккумулятора W.
            retlw       b'00111111' ; ..FEDCBA = 0               Происходит скачек по таблице
            retlw       b'00000110' ; .....CB. = 1               на строку со значением,
            retlw       b'01011011' ; .G.ED.BA = 2               записанным в аккумуляторе,
            retlw       b'01001111' ; .G..DCBA = 3               и далее - возврат по стеку.
            retlw       b'01100110' ; .GF..CB. = 4       
            retlw       b'01101101' ; .GF.DC.A = 5     
            retlw       b'01111101' ; .GFEDC.A = 6       
            retlw       b'00000111' ; .....CBA = 7                                     
            retlw       b'01111111' ; .GFEDCBA = 8                                     
            retlw       b'01101111' ; .GF.DCBA = 9
            retlw       0
            retlw       0
            retlw       0
            retlw       0
            retlw       0
            retlw       0
;**********************************************************************************************
            end                     ; Конец программы.


Чтобы не было проблем со стеком, каждому CALL должен следовать соответствующий RETURN (или RETLW), причем допускается не более 8 вложений подпрограмм.
В вашей программе, если вызвать ее со значением например, 10 (0x0A) в W, возврата из CALL'а не последует, стек будет нарушен, дальнейшее правильное выполнение программы будет невозможно.
По расположению таблицы в памяти программ: у PIC'ов (по меньшей мере, у 16-й серии) есть дебильная особенность архитектуры по части адресации памяти программ. Заключается она в том, что PC - это вовсе не PC как он есть, а только младший его байт PCL; Старший байт PCH напрямую юзеру недоступен; переполнение PCL при действиях с ним напрямую не вызовет приращение PCH. Пример:

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

    org         0xFE
    movlw     5
    addwf      PCL,F       ; PC станет 0x0005, а не 0x0105, как казалось вначале
Аватара пользователя
dr.doc
Это не хвост, это антенна
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Re: MPLAB проблемы

Сообщение dr.doc »

По расположению таблицы в памяти программ:

Именно так. Таблица с данными расположена на строке под номером 290 (начало по Program Memory Window). При попытке переназначить место расположения org 0x100, компилирования не происходит, выдается ошибка "переназначение адреса". Во время работы моего исходного кода переход на метку TABLE происходит, но следующий шаг, вместо выбора значения из таблицы, сразу перескакивает обратно со смещением.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
stas00n
Вымогатель припоя
Сообщения: 557
Зарегистрирован: Пн мар 23, 2009 04:03:45

Re: MPLAB проблемы

Сообщение stas00n »

dr.doc писал(а):Пробовал в новой версии создать проект с использованием данного кода, так он даже не компилирует. Сразу пишет: Ошибка компиляции. Может я чего не доустановил?

Проверьте, что отключена чувствительность к регистру: Меню Project->Build options->Project->MPASM Assembler->Disable case sensitivity. Не забудьте подключить файл .inc для выбранного контроллера:

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

    include    "P16F84.inc"

Ну и наконец, не должно быть русских букв в пути к проекту, т.е. не надо создавать проект в "Моих документах" или на "Рабочем столе"

dr.doc писал(а):...(насколько я понял про страницу - это номера строк исполняемого кода, и переход командой call корректно не работает при "перескоке")

Нет, не так. CALL работает всегда, даже по далеким адресам, впрочем, как и GOTO - это безусловные команды вызова/перехода. Условные переходы если мне не изменяет память работают на небольших расстояниях (в пределах скольки-то там слов, не помню точно, вроде +127/-128). А вот прямое воздействие на PC командами, для этого по большому счету не предназначенными (ADDWF, INCF и т.д.) чревато вышеописанными проблемами. Вычисляемый переход - это трюк, призванный хоть как-то сгладить ущербность способов адресации ПИКов. Когда применяешь трюки, хоть и официально задокументированные, нужно быть предельно осторожным и дважды перепроверить все.
stas00n
Вымогатель припоя
Сообщения: 557
Зарегистрирован: Пн мар 23, 2009 04:03:45

Re: MPLAB проблемы

Сообщение stas00n »

dr.doc писал(а):При попытке переназначить место расположения org 0x100, компилирования не происходит, выдается ошибка "переназначение адреса". Во время работы моего исходного кода переход на метку TABLE происходит, но следующий шаг, вместо выбора значения из таблицы, сразу перескакивает обратно со смещением.

Значит, ваш код предшествующий таблице не влезает в 256 первых инструкций. Лучше расположите таблицу в начале исходника:

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

       org        0
       goto      reset
       org        4
       goto      isr
TABLE                   
        .                      ;подпрограмму с вычисляемыми переходами расположить тут
        .                      ;org 0x100 естественно не нужно :)
        .

reset
        .                       ;основная программа тут
        .
        .
isr
        .                       ;обработчик прерываний тут
        .
        .


Или в любом другом свободном месте, где она не будет сталкиваться с основным кодом, который имеет свойство разрастаться :)
stas00n
Вымогатель припоя
Сообщения: 557
Зарегистрирован: Пн мар 23, 2009 04:03:45

Re: MPLAB проблемы

Сообщение stas00n »

Поясню: директива org - от слова origin, начало. Эта директива жестко задает адрес в памяти программ, начиная с которого будут располагаться ниженаписанные команды. При ассемблировании исходника, если вы не указали расположение кода явно директивой org ассемблирование будет начато с адреса 0. Если ниже в тексте вы примените org для какого-то участка кода, нужно быть уверенным, что не будет конфликтов. Пример:

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

    org       0
    nop
    nop
    org       1
    movlw   1

Такой код не удастся скомпилировать, т.к. явно указано что по одному и тому же адресу нужно расположить две разные инструкции, что и является ошибкой адресов.
Аватара пользователя
dr.doc
Это не хвост, это антенна
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Re: MPLAB проблемы

Сообщение dr.doc »

Всем учавствовавшим большое спасибо! С проблемой разобрался. Буду дописывать далее.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Аватара пользователя
Pavel_1978
Опытный кот
Сообщения: 830
Зарегистрирован: Пт ноя 16, 2007 11:21:37

Re: MPLAB проблемы

Сообщение Pavel_1978 »

По PIC- ам советую купить книгу Сид Катцен " PIC микроконтроллеры Все, что вам необходимо знать"

Посмотри в сундуке, если не найдешь, могу скинуть на почту в электронном виде.
Midori
Родился
Сообщения: 10
Зарегистрирован: Сб фев 05, 2011 19:52:51
Откуда: Краснодар

Помогите с MPLAB!

Сообщение Midori »

Здравствуйте! Проблема такова, скачиваю MPLAB 5.40.70 и комп "ложиться", может кто-нибудь знает, что делать или скинет нормальную прогу. Уже и код будущей программы продуман, нужена только среда программирования...
Аватара пользователя
ageeff
Сверлит текстолит когтями
Сообщения: 1178
Зарегистрирован: Пн фев 07, 2011 16:19:33

Re: Помогите с MPLAB!

Сообщение ageeff »

,http://www.microchip.ru/?mid=2x2
Последний раз редактировалось ageeff Чт мар 03, 2011 16:06:17, всего редактировалось 1 раз.
Аватара пользователя
К@Т
Говорящий с текстолитом
Сообщения: 1573
Зарегистрирован: Сб окт 09, 2010 12:33:48
Откуда: Незалежная

Re: Помогите с MPLAB!

Сообщение К@Т »

Скачайтё поновее,хотябы 7.50.Ваша версия вешает комп изза того что не находит лпт(у вас есть лпт порт?),если в установке отллючить привязку к лпт,то запуститса,но симулятор будет тормозить. Эта точно заработает,качайте смело http://ww1.microchip.com/downloads/en/DeviceDoc/mp750.zip,
У кошки 4 ноги и хвост-плюс,минус,вход,выход,а хвост-земля.....Надо переходить с китайской бурды на канифоль.......[url=http://infobar.hsdn.org/][img]http://static.hsdn.org/infobar/350x60.gif[/img][/url]
Аватара пользователя
Dmitry Dubrovenko
Поставщик валерьянки для Кота
Сообщения: 2349
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград
Контактная информация:

Re: Помогите с MPLAB!

Сообщение Dmitry Dubrovenko »

Midori писал(а):скачиваю MPLAB 5.40.70
Интересно, где Вы её вообще нашли, и кто Вам посоветовал её ставить?
Если у Вас комп уровня Pentium, с Win98, тогда, конечно.
Если же хотя бы P-IV, и XP, то актуальная, на данный момент, версия 8.63 (http://ww1.microchip.com/downloads/en/D ... _v8_63.zip).
ICQ нет, и, в ближайшее время, не будет.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Помогите с MPLAB!

Сообщение dosikus »

Dmitry Dubrovenko писал(а): и кто Вам посоветовал её ставить?


Известно, кто...
"-Проделки Фикса"
А качал поди с rutracker.org.
Пора антивирусникам сигнатуры MPLAB 5.40.70 подкинуть... :)))
Midori
Родился
Сообщения: 10
Зарегистрирован: Сб фев 05, 2011 19:52:51
Откуда: Краснодар

Re: Помогите с MPLAB!

Сообщение Midori »

К@Т писал(а):Скачайтё поновее,хотябы 7.50.Ваша версия вешает комп изза того что не находит лпт(у вас есть лпт порт?),если в установке отллючить привязку к лпт,то запуститса,но симулятор будет тормозить. Эта точно заработает,качайте смело http://ww1.microchip.com/downloads/en/DeviceDoc/mp750.zip,


Да ЛПТ есть, учусь на старом компьютере. Вообщем ВСЕМ СПАСИБО за советы и ссылки. Скачаю и снова буду пытаться! От души благодарю, что так быстро отозвались!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Помогите с MPLAB!

Сообщение Аlex »

dosikus писал(а):Пора антивирусникам сигнатуры MPLAB 5.40.70 подкинуть... :)))
А за одно и файла Samouchitel.pdf вместе с его дебильным сайтом. :)))
Аватара пользователя
Dmitry Dubrovenko
Поставщик валерьянки для Кота
Сообщения: 2349
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград
Контактная информация:

Re: Помогите с MPLAB!

Сообщение Dmitry Dubrovenko »

Midori писал(а):Скачаю
Учтите только, что "весят" они более 100Mb, и, если включён резидентный модуль антивирусника, будут довольно долго проверяться (из-за наличия большого количества запакованных файлов).
ICQ нет, и, в ближайшее время, не будет.
M*O*N*O*L*I*T
Родился
Сообщения: 5
Зарегистрирован: Пн фев 28, 2011 20:20:59

Программирование Pic16F84A в среде MPLAB

Сообщение M*O*N*O*L*I*T »

Доброго всем дня/вечера/ночи.
Кто может помочь, убедительная просьба откликнуться.
Нужен готовый код написанный в MPLAB: на pic повешены 2 кнопки на 17 и 18 ножки;на 6 и 7 ножки повешено по светодиоду; нужно чтобы данная схема работала как RS-триггер, то бишь нажмешь кнопку загорится какая то лампочка, нажмешь другую - другая.
Извините за наглость конечно, если Вас не затруднит, с комментариями.
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7357
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: Программирование Pic16F84A в среде MPLAB

Сообщение uldemir »

25$ на счет радиокота.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
M*O*N*O*L*I*T
Родился
Сообщения: 5
Зарегистрирован: Пн фев 28, 2011 20:20:59

Re: Программирование Pic16F84A в среде MPLAB

Сообщение M*O*N*O*L*I*T »

это так сложно что за это надо платить 25$?
Бескорыстные люди видать кончились :(
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7357
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: Программирование Pic16F84A в среде MPLAB

Сообщение uldemir »

вы не просите помочь. вы просите дать готовое. по запаху чую - курсач. на крайняк - лаба. А потом жалуемся, что нет специалистов. Дипломы большинству нужно, чтобы залезть в тёплое кресло и получать блага ни за что. Поэтому, если не хотите научиться программировать микроконтроллеры - учитесь платить тем, кто умеет.
Попробуйте, убедите меня в обратном.
Мне лично деньги ненужны. Потому и предлагаю пополнить фонд этого прекрасного сайта. :))
M*O*N*O*L*I*T писал(а):это так сложно что за это надо платить 25$?
Бескорыстные люди видать кончились :(
Нет, это очень просто. Причем настолько, что возникает вопрос, почему вы не можете это сделать самостоятельно.
без коментариев и без инициализации:

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

cycle:
    movf porta, w
    andlw b'00000011'
    addwf pcl
    goto    cycle
    goto    set_a
    goto    set_b
    goto    cycle

set_a:
    movlw 1<<0
    movwf portb
    goto    cycle

set_b:
    movlw 1<<1
    movwf portb
    goto    cycle
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
M*O*N*O*L*I*T
Родился
Сообщения: 5
Зарегистрирован: Пн фев 28, 2011 20:20:59

Re: Программирование Pic16F84A в среде MPLAB

Сообщение M*O*N*O*L*I*T »

Большое спасибо Вам и на этом
Ответить

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