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

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

1 13 99

Выполнил все "директивы" по открытию нового проекта. Полёт нормальный.

 

picmaniac: Теперь предстоит работа с MPLAB5.70.40. А здесь шла речь о MPLAB7.** :
<блин мплаб 7.30 от 5.70 как небо и земля> Какую версию все-таки лучше скачать? Меня интиресует тот мплаб, который более руссифицирован; версии мплаба - под версии Windows ; объем.
Еще вопрос чайника: "Ассемблер" и "Ассемблер микроконтроллеров" - в чем разница?

 

я только завтра до мплаба доберусь

 

lolo2: Меня интиресует тот мплаб, который более руссифицирован

Таких нет в природе. Есть перевод "Руководства по MPLAB". Здесь за эталон решили взять версию 5.70.40, это и хорошо. В "Самоучителе" описывается она же, поэтому легче будет осваивать нюансы. Перейти на более свежую можно будет всегда.

lolo2: Еще вопрос чайника: "Ассемблер" и "Ассемблер микроконтроллеров" - в чем разница?

В MPLAB встроен ассемблер MPASM, его и надо придерживаться. А так один ассемблер от другого отличается обычно синтаксисом написания команд и директив, а также количеством тех и других.

 

semm: я только завтра до мплаба доберусь

Стоит продублировать и на домашний комп, я это сделал.

 

Продолжаю.
Открываем наш пока пустой файл-исходник likbez01.asm
"File" --> "Open" --> указуем героя нашего повествования --> ОК
Предлагаю начать написание исходника с создания "шапки", которую затем сможем сохранить отдельно и использовать для других проектов. Пример "шапки" есть в составе MPLAB, я уже упоминал об этом выше. Но я считаю, что удобнее создать свою.
Предлагаю такой вариант: http://www.pic16.nm.ru/likbez01_00.zip
В архиве находится папка с проектом целиком, там же файл-исходник (пока только "шапка") likbez01.asm
При желании можно просто скопировать текст из предлагаемого файла likbez01.asm в открытый в MPLAB "чистый лист". Или скопировать целиком файл в папку с проектом. Или скопировать целиком папку с проектом в свою папку C:\PIC
В общем, каждый поступает в меру своей ленивости
Теперь можем оттранслировать исходник нажатием кнопки с зеленой "воронкой". Получаем сообщение об успешно проведенной операции - "Build completed successfully." Полученный файл прошивки likbez01.hex пригоден для записи в контроллер. Впрочем, ничего контроллер делать не станет, просто зациклится - и всё. Но ведь это только первый шаг...
Далее предстоит перевести утвержденный алгоритм в последовательность ассемблерных инструкций (команд).

 

lolo2: Какую версию все-таки лучше скачать?
Это дело вкуса, для работы с PIC16F628 подойдет любая. 5-я наименьшая по объему - легче качать. 6-я лично мне почему-то совсем не нравится, поэтому работаю в 5-й. И вести речь буду именной о 5-й версии.

lolo2: "Ассемблер" и "Ассемблер микроконтроллеров" - в чем разница?
Ну, примерно как между мотоциклом вообще и "Явой".

 

Предвижу вопросы по слову конфигурации. Если есть бумажный распечатанный даташит, то откройте его на стр.88, иначе прошу - проникнитесь мыслью о необходимости иметь бумажный даташит и в скорейшем времени обеспечьте себя любимого таковым.
При помощи условных аббревиатур мы задаем различные комбинации битов в слове конфигурации. А слово это для контроллера не менее важно, чем умение добывать огонь для человека.
На что же влияет слово конфигурации PIC16F628?
1. _CP_OFF указывает на то, что защита кода от взглядов злобных конкурентов нам пока не требуется. Т.е. любой желающий может прочитать в программаторе прошитый нами PIC и восстановить .hex файл прошивки.
2. _WDT_OFF предписывает контроллеру не использовать встроенный сторожевой таймер. Таймер этот, вообще говоря, весьма полезное средство от "зависаний" контроллера. Его работу мы разберем позже, а пока он нам не требуется.
3. _BODEN_OFF запрещает контроллеру сброс при снижении напряжения питания ниже некоторого порога (обычно 4 Вольта). Подробнее на стр.94 даташита. Я запретил этот сброс для того, чтоб не возникало лишних вопросов у тех, кто будет питать устройство от нестабилизированного источника. Обычно PIC нормально работает и при более низком напряжении питания.
4. _PWRTE_ON разрешает работу таймера включения питания. Это улучшает запуск контроллера с кварцевым генератором от источника с плавно нарастающим питающим напряжением. В данном случае генератор встроенный, и будет ли разрешена работа этого таймера - нам, в принципе, безразлично - пусть будет.
5. _INTRC_OSC_NOCLKOUT - это выбор типа тактового генератора. Подробности на стр.89 даташита.
6. _MCLRE_ON устанавливает режим работы вывода _MCLR (нога 4) как обычный вход сброса. Если задать _MCLRE_ON, то 4-я нога превратится в цифровой вывод порта RA5.
7. _LVP_OFF устанавливает обычный режим программирования контроллера, с подачей 12 Вольт на _MCLR. Если установить _LVP_ON, то будет разрешено низковольтное программирование по сигналу на выводе RB4/PGM от одного источника питания напряжением 5 Вольт. Я пока ни разу так не пробовал.

Заданное программистом слово конфигурации записывается в контроллер при каждой перепрошивке. Больше никак изменить его нельзя. Неправильное заданное слово конфигурации может привести к полной неработоспособности устройства даже при отсутствии ошибок в программе.

 

Нет, вопрос по другой причине, со словом конфигурации проблем, во всяком случае у меня нет. Так вот, зачем пишем

 bcf       Status,RP1     
, когда по сбросу и так всегда выставляется этот бит в 0.

 

На всякий пожарный случай. А вообще можно и не писать.