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

Поклонники продукции Microchip Technology Inc тусуются тут.
Soir
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Re: HEX из проэкта MPLAB

Сообщение Soir »

Вот проект, который выкладывал ранее. В Proteus работает. В EEPROM загружены 42 в ячейки начиная с 20h до 27h. Это соответствует коду 00000000. Нажмите при симулировании в Proteus на паузу и Вы увидите.
Изображение
Вложения
prohivka.zip
(32.15 КБ) 317 скачиваний
11.png
(8.08 КБ) 1568 скачиваний
Аватара пользователя
Nazarka
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср апр 18, 2007 17:01:11

Re: HEX из проэкта MPLAB

Сообщение Nazarka »

Да через пару часов попробую на реальном железе,в протэусе все работает,менял код-все тоже отлично :)) В роде понял где мой косяк.....
[color=#FFBF80][i]Существует по большому счету две неисправности-есть контакт где он не нужен,и нет контакта где он нужен[/i][/color]
Аватара пользователя
Nazarka
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср апр 18, 2007 17:01:11

Re: HEX из проэкта MPLAB

Сообщение Nazarka »

Всё заработало в железе!!! Всем спасибо,Soir отдельное Огромное спасибо :beer:
[color=#FFBF80][i]Существует по большому счету две неисправности-есть контакт где он не нужен,и нет контакта где он нужен[/i][/color]
george_54
Встал на лапы
Сообщения: 125
Зарегистрирован: Пн апр 27, 2009 16:10:03

MPLAB не поддерживает pic12f629

Сообщение george_54 »

Установленный MPLAB не поддерживает 12f629, хотя формально этот проц в списке пакета есть. Что делать? Подскажите как с помощью MPLAB из hex-файла получить исходник .asm?
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: MPLAB не поддерживает pic12f629

Сообщение otest »

Давайте НЕХ получите АСМ
george_54
Встал на лапы
Сообщения: 125
Зарегистрирован: Пн апр 27, 2009 16:10:03

Re: MPLAB не поддерживает pic12f629

Сообщение george_54 »

Спасибо за помощь.
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: MPLAB не поддерживает pic12f629

Сообщение otest »

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

Re: MPLAB не поддерживает pic12f629

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

george_54 писал(а):Спасибо за помощь.

Не правда ли, ну ооочень информативный исходник получился... :)) :))
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: MPLAB не поддерживает pic12f629

Сообщение otest »

Уж какой есть. А что вы хотели в нём найти?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25124
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: MPLAB не поддерживает pic12f629

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

Трудоемкость по разбору дезассемблированного исходника превышает трудоемкость написания СВОЕГО кода по известному функционалу копируемого изделия.
А так исходник как исходник... Еще повезет если хекс был получен не из Си... :)
Chettuser

Re: Отладка программы PIC в MPLAB

Сообщение Chettuser »

Кто как делает на Си преобразование BIN to BCD?
Я нашёл исходники только для ассемблера.
Пришлось писать самому:

DISPLAY - исходное двоичное число.
b - переменная для сотен;
c - переменная для десятков;
d - переменная для единиц.

Аналогично можно доработать для тысяч.

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

void BIN_TO_BCD (void)   //преобразование BIN в BCD (распакованный), ЗАНИМАЕТ ПРИМЕРНО 29-515 тактов (зависит от значения DISPLAY).
{   int k = DISPLAY;
   b=0;
   c=0;
   d=0;
   {   while (k>=100)
      {   k =(k-100);
         b++;}
      while (k>=10)
      {   k =(k-10);
         c++;}
      d = k;
   }

/*   //преобразование BIN в BCD СТАРОЕ, НАПИСАННОЕ ЕЩЁ В ПЕРВОЙ ВЕРСИИ, ЗАНИМАЕТ ПРИМЕРНО 1550 тактов (от значения DISPLAY не зависит).
   {
      b =(DISPLAY-DISPLAY%100)/100;
      c =(DISPLAY%100-DISPLAY%10)/10;
      d = DISPLAY%10;
   }*/
return;
}

Может кто знает более оптимальный вариант чем вычитанием?. :oops:
Soir
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Re: Отладка программы PIC в MPLAB

Сообщение Soir »

Chettuser писал(а):Кто как делает на Си преобразование BIN to BCD?...
...Может кто знает более оптимальный вариант чем вычитанием?. :oops:

У меня вот так:

AmperHandr = Amper/100;
AmperTens = Amper/10-AmperHandr*10;
AmperOnes = Amper-AmperHandr*100-AmperTens*10;

Наверно тоже, что и у Вас, только сокращенный вариант. Всего менее 700 тактов.
Chettuser

Re: Отладка программы PIC в MPLAB

Сообщение Chettuser »

Soir писал(а):... Всего менее 700 тактов.

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

MPLAB проблемы

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

Доброго времени суток всем!
Помогите, если можете. Проблема следующего рода: ...Условный переход (call TABLE) выполняется, а возврат происходит на другую метку, находящуюся ниже (строк 10-15). При этом счетчик стека через некоторое время переполняется.
Подпрограмма TABLE взята из самоучителя Корабельникова Е.А. При симуляции исходника переходы проходят на "ура".
Вложения
Подпрограмма.txt
(1.15 КБ) 334 скачивания
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
stas00n
Вымогатель припоя
Сообщения: 557
Зарегистрирован: Пн мар 23, 2009 04:03:45

Re: MPLAB проблемы

Сообщение stas00n »

Скорее всего, у Вас таблица возвратов пересекает 256-словную границу страниц памяти. Самое простое решение - задать положение таблицы в памяти жестко, например, директивой .org:

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

; ГРУППА КОМАНД ПРЕОБРАЗОВАНИЯ ДВОИЧНО-ДЕСЯТИЧНОГО КОДА В КОД 7-СЕГМЕНТНОГО ИНДИКАТОРА
   .org   0x100
TABLE       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
;**********************************************************************************************
            end                     ; Конец программы.
stas00n
Вымогатель припоя
Сообщения: 557
Зарегистрирован: Пн мар 23, 2009 04:03:45

Re: MPLAB проблемы

Сообщение stas00n »

Да, и не забудьте проверить, что содержимое W перед вызовом процедуры не более 9, иначе естественно, PC скаканет "в никуда", т.е. за пределы таблицы возвратов. Я для гарантии делал таблицу возвратов из 16 строк, и перед вызовом обнулял старший полубайт W командой

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

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

Re: MPLAB проблемы

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

Уважаемый stas00n, подскажите, можно ли это просмотреть в MPLAB 5.7? Насколько я понимаю, просмотреть это значение можно в Window\File Register?
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
stas00n
Вымогатель припоя
Сообщения: 557
Зарегистрирован: Пн мар 23, 2009 04:03:45

Re: MPLAB проблемы

Сообщение stas00n »

Во-первых последняя MPLAB имеет версию 8.60, не пользуйтесь старьем. 5.7 я даже не припоминаю такой, я тогда наверное еще под стол пешком ходил :) какого она года хоть?
Во-вторых при отладке (в симуляторе) можете смотреть содержимое регистров и памяти программ - выбираете что нужно в меню View. Смотрите пошагово, что происходит (F7), изменяющиеся регистры будут краснеть; Клавиша F8 - те же шаги, но если встречается CALL, он выполнится за одно нажатие, т.е. вы не увидите деталей выполнения подпрограммы.
В третьих, фразой "...не забыть проверить..." я подразумевал такое составление кода, при котором непредсказуемое поведение программы исключено. Т.е. если таблица возвратов (RETLW x)будет иметь 16 строк, и перед вызовом обнулить старший полубайт W (тогда W будет =<15), тогда есть гарантия, что произойдет возврат, а не скачок по неизвестному адресу (в случае, если подпрограмме были переданы невалидные данные). Об этом нужно заботиться Вам как программисту на этапе написания кода.
Аватара пользователя
dr.doc
Это не хвост, это антенна
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Re: MPLAB проблемы

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

Я просто пользуюсь тем, на чем придется в универе делать лабы. Поэтому и версия старая. Пробовал в новой версии создать проект с использованием данного кода, так он даже не компилирует. Сразу пишет: Ошибка компиляции. Может я чего не доустановил? Но суть не в этом. Переместив таблицу выше по коду добился ее корректной работы. Выходит дело было именно в переходе через 256-словную страницу. Но! Переполнение стека проскакивает дальше по коду. Подскажите, пожалуйста, что делать? (насколько я понял про страницу - это номера строк исполняемого кода, и переход командой call корректно не работает при "перескоке")
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Аватара пользователя
testerplus
Встал на лапы
Сообщения: 130
Зарегистрирован: Пн авг 24, 2009 10:41:16
Откуда: SPb
Контактная информация:

Re: MPLAB проблемы

Сообщение testerplus »

В дополнение к уже сказанному: почитайте про регистр PCLATH и вычисялемые переходы.

(5.70 для лаб вполне подойдет.)
Ответить

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