Свежие обсуждения
Микроконтроллеры

Ликбез по программированию PIC

1 2 99

Вопрос по ликбезу: насколько сильно надо переделывать (и вообще, надо ли?) asm-программы, написанные под PIC16F84, чтобы они шли на PIC16F628?
Ответ найти, конечно же, могу, но для этого надо перелопачивать документацию. Если кто даст ссылку на пошаговую инструкцию, было бы вообще замечательно.

 

Думаю что не очень сильно. Надо только сконфигурировать правильно выводы портов (e 628 на них подвешены дополнительные функции) и отключить компараторы. Если используется память данных, то блоки не должны попадать в _BADRAM области, иначе Invalid RAM.... Это то, что я усек за месяц тренировок. А так по распиновке они полностью совпадают.

 

Ага, пока я был на работе в оффлайне, здесь процесс шел вовсю. Это хорошо
Со всеми, кто уже успел высказаться в этой ветке, я полностью солидарен. Насчет системы команд на листке - да, это очень помогает, сам всегда так делал на первых порах. Очень полезно распечатать (в нескольких экземплярах, и покрупнее) также карту памяти того микроконтроллера, для которого пишете программу, и также держать перед глазами. Карта обычно есть в даташите. В неё удобно вписывать наименования, которые мы присваиваем регистрам ОЗУ. И, конечно же, бумажный даташит - без него поначалу практически никак.
Вот какие памятки я делал для себя (см. присоединенный архив).
О литературе: есть очень хорошая книга: В.С. Яценков "Микроконтроллеры Microchip. Практическое руководство" - Москва, Горячая линия-Телеком, 2002. 296с.
Я купил в Москве, когда в командировке был. Кстати, автор этой книги известен под ником picman (почти тёзка мой ), я читал его статьи в "Компьютерре".
Далее, вношу предложение: не бить растопыренными пальцами, а нанести серию ударов кулаком по незнанию. То бишь, сосредоточиться сначала на решении простой учебной задачи. Успешно её решив (думаю, это не займет много времени), постепенно идти дальше, накапливая опыт. Предложенное Левоном устройство интересно, только вот "с ходу" такую задачу не одолеть. Устройство не такое уж простое, легко запутаться.
Теперь насчёт asm или C. Сам пишу пока только на асме. Считаю, что лучше начать с него. PIC16 - достаточно простые контроллеры, и при программировании на асме всё очень наглядно получается. Потом можно постепенно освоить С.
Теперь о бароне, тьфу, о графе. Изобразить его, безусловно, полезно. Но для простых конструкций для начала можно ограничиться подробной формулировкой на словах. Желательно также составить блок-схему алгоритма. Хорошо нарисованный граф наглядно показывает логику работы устройства. Сам я для своих конструкций, честно говоря, ни разу его не рисовал
О переносимости программы с 84 на 628. Обычно это не вызывает особых затруднений. Достаточно лишь перенести регистры, задействованные пользователем, с адресов 0Ch...0Fh на 5Сh...5Fh например. Правильно задать слово конфигурации. В самом начале программы отключить компараторы командами:
movlw 07h
movwf CMCON
Засада подстерегает в случае работы с энергонезависимой памятью EEPROM. Адреса различаются, и банки памяти тоже. И прерывания от EEPROM по-другому программируются. Приходится переделывать.

Начнём помаленьку действовать? Для начала прошу высказать мнения по предложенному техзаданию. Если оно годится, то переходим к первому шагу. Определяемся с версией MPLAB (моей душе особенно мила 5.70.40) и со схемой - куда кнопки подключим, куда светодиоды. Предлагаю: кнопки RB4-RB7, светодиоды RA0-RA3. Программа-минимум: создать проект в MPLAB, произвести инициализацию контроллера, сконфигурировать порты, научить PIC зажигать один светодиод в ответ на нажатие одной кнопки. Проще некуда.

34910.zip

 

Splav56, picmaniac, спасибо, мне просто нужна дешевая альтернатива для 84, а в глубокие дебри лезть не хочется.
Строки для конфигурирования легко бедет найти в иходнике, а EEPROM, слава богу, не используется .

 

У меня уже грабли: нет версии 5.70.40, так что прошу у кого есть прислать на мэйл.

Техзадание устраивает, правда я уже привык ко входам на ПОРТА, а выходы на ПОРТВ. Может перевернем: кнопки RA0-RA3, светодиоды RB4-RB7/ Барона (то бишь графа) для этого ТЗ я набросал, причешу завтра и покажу, чтобы покритиковали.

 

MPLAB 5.70.40 есть здесь (порядка 13 мегабайт): http://www.microchip.ru/?mid=2x2&file=mplab5xx.htm
Преимущества: небольшой объем (легче скачать), есть описание на русском языке, в том числе и в "Радио", и самое главное - мне 5-я версия нравится, там интерфейс удобный. Позже при желании можно будет перейти на новую версию.
Подключение я неспроста такое предложил: на выводах PORTB предусмотрены внутренние "подтягивающие" резисторы к "плюсу" питания, килоом эдак по 50. Поэтому кнопки можно просто подключить между выводом и "общим". А еще есть прерывание по изменению уровня на входах RB4-RB7.
Вот описание MPLAB5 на русском языке (не помню откуда скачал, давно было): http://www.pic16.nm.ru/MPLABinfo.zip

 

Splav56: нет версии 5.70.40
вот сдесь она лежит. http://www.microchip.ru/cdrom/ww1.microchip.com/downloads/en/DeviceDoc/mp57040fu...
ещё вопрос, кто схемку нарисует? или и так всё ясно?....
и ещё предложение, Splav56 раз уж именно вы открыли этот топик, то возьмите на себя функции оканчательного утверждения обсуждаемых вопросов, а то по многим пунктам согласились, надо чтоб ктото сказал окончательное да. (или нет ) и все в последующем этого придерживались. (а то дальше разговоров никуда не пойдёт)
я тоже думаю что всё лучше на порт б. посадить, путаницы в коде меньше будет.

 

Поддерживаю предложение. Splav56, согласитесь быть куратором ветки?
И всё же кнопки я предлагаю на PORTB подключить, из-за резисторов и прерываний. Светодиоды - и на PORTA, и на PORTB можно, разницы нет.

 

вот блин............. за день напостили-то........

 

вот блин............. за день напостили-то........