Самоучитель по программированию PIC контроллеров для начинающих (Е.А. Корабельников,2008). Самоучитель по программированию PIC контроллеров для начинающих. Система команд pic16F84A 26 Что такое программа иправила ее составленияПример создания программы автоколебательного мультивибратораДирективы.
Скачать 3.49 Mb.
|
TrisB) В этом случае, сообщение об успешном ассемблировании будет самым коротким (4 строки. Но можно "прописать " и по "штатным " адресам (будут выдаваться сообщения информативного характера. "Это на любителя ". В любом из этих случаев, ошибок не будет Синтаксические правила написания программы. 43 MPLAB "замучает " Вас сообщениями об ошибках, если не выполнены определенные правила написания текста программы Давайте в них первично разберёмся , на примере программы Multi.asm Все , что находится правее точки с запятой ( ; ), MPLAB "не видит ". То есть, после точки с запятой , программист может "настукать " всё , что ему "в голову взбредёт " (по своему усмотрению и на любом языке. В части касающейся этого, все просто, как мычание коровы А вот дальше - сложнее Активная часть и "шапки " программы, и рабочей части программы, разделена на 3 столбца Левые буквы содержимого 1- голевого) столбца должны занимать крайние левые позиции строк, на которых они находятся Это , как бы, "начальная точка отсчета ". 2- й и 3- й столбцы находятся правее, и первые символы их содержимого должны (в идеале) располагаться на одной вертикальной линии Последние символы содержимого столбца не должны "наезжать " на первые символы соседнего справа столбца Между ними должен быть хотя бы один пробел Чтобы "не забивать Вам голову " рассуждениями о возможных компоновках расстояний между столбцами, рекомендую пользоваться следующим "правилом 12- ти пробелов ": От крайней левой позиции строки (начало го столбца) отсчитываете 12 пробелов. Это будет начало го столбца. Затем отсчитываете 12 пробелов от начала го столбца. Это будет начало го столбца Затем отсчитываете 12 пробелов от начала го столбца. Это будет начало комментариев . Такой вариант "проверен жизнью ". Я пользуюсь им всегда и Вам советую Содержимое столбцов. Шапка" программы В 1- м столбце ( левом ) располагаются названия регистров и названия битов ( в программе их нет, нов других, более сложных программах, они есть. Во 2- м столбце находятся директивы и команда перехода на начало исполнения программы . В 3- м столбце находятся рабочие части директив и название подпрограммы, с которой начинается исполнение программы ( в данном случае, Start ). Для регистров, определяется их адрес Для битов, определяется их номер (в пределах байта. После этого, в рабочей части программы, при обращении команд к этим битам, можно, вместо номера бита, указать присвоенное ему название (обычно, стандартное, но можно назначить и свое ). В конце "шапки " программы, располагается "связка " org и Start (начать исполнение программы с ПП Start , первая команда которой имеет нулевой адреса при наличии в программе подпрограммы прерываний - директива 4 (об этом - позже ). Рабочая часть программы. В 1- м столбце располагаются названия подпрограмм и меток . Во 2- м столбце располагаются команды и директивы . В 3- м столбце располагаются рабочие части команд и директив . В конце программы, обязательно должна присутствовать директива что- то типа " сюда ( вниз ) не ходи Ходи туда (вверх. Если убрать все то, что находится правее точек с запятой (оформление, комментарии, то это и будет текст программы в "чистом виде ", то есть, то, с чем работает MPLAB при ассемблировании (создании HEX - файла. Теперь - о форме представления чисел Чтобы MPLAB "поняла ", в какой системе исчисления представлено число, необходимо его соответствующим образом оформить СИНТАКСИС ЧИСЛОВЫХ ЗНАЧЕНИЙ В РАЗЛИЧНЫХ СИСТЕМАХ ИСЧИСЛЕНИЯ Формат Синтаксис Примеры 16 - ричный H´ число ´ 0x число H´9f´ 0x9f 10 - тичный D´ число ´ число .100 8 - ричный O´ число ´ O´777´ 44 2 - ичный B´ число ´ B´00001111´ Символьный (ASCII) символ символ Намой взгляд, в каких - то особых комментариях эта таблица не нуждается Для того чтобы, на первых порах, не создавать путаницы, связанной с переводом чисел из одной системы исчисления в другую , в дальнейшем , я буду , преимущественно, пользоваться привычной, то есть - десятичной системой исчисления В программе Multi.asm, константы представлены именно в десятичной системе исчисления ( с точкой слева. До девятки включительно, 16- ричная и 10- тичная системы исчисления одинаковы В этом случае (число не более 9- ти ), все равно, в какой системе исчисления, в 16- ричной или в 10- тичной , происходит отображение числа То есть, в этом случае, число можно "прописать " в привычном (удобном, десятичном виде, без указания атрибутов системы исчисления Если в тексте программы "прописано " число, неукомплектованное" атрибутом системы исчисления, то по умолчанию, это число будет "воспринято " ом как 16- ричное Если это число не более 9- ти , то какая разница, ведь в 10- чном виде оно точно такое же, как ив 16- ричном После девятки, "этот номер уже не пройдет ", так как появляются расхождения Бинарная система исчисления стоИт , как бы, "особняком " и этим правилам не подчиняется- ричная система исчисления используется очень редко Символьная система исчисления "привязана " к стандартному , международному коду ASCII В "шапке " программы, адреса регистров лучше указывать в 16- ричном виде, а всё остальное – на выбор Как кому удобнее В зависимости от конкретных обстоятельств При указании номера бита, по причине того, что номера битов не являются числами, большими чем 9, просто пишется номер бита (без атрибутов системы исчисления. Итак, правила оформления текста программы, на самом деле, не являются чем- то страшно трудным Наоборот , они достаточно просты и освоить их не составляет великого труда Промежуточный итог : мы сейчас уже вплотную подошли к практической работе с текстами программ, что предполагает "ввод в действие тяжелой артиллерии " в виде "набора " программ интегрированной среды разработки для ПИКов с названием MPLAB Приложение Принципиальная схема автоколебательного мультивибратора (генератора импульсов) Синим цветом показан случай подключения высокоомного, динамического излучателя (например, от телефонного аппарата или наушников. Во избежание перегрузки выходного каскада защелки, подключать низкоомный, динамический излучатель ( громкоговоритель ) не стоит Лучший вариант - подключение пьезоэлектрического излучателя " Самоучитель по программированию PIC контроллеров для начинающих" http://ikarab.narod.ru E-mail: karabea@lipetsk.ru 45 5. Интегрированная среда проектирования MPLAB IDE и работа в ней MPLAB это интегрированная среда проектирования для ПИКов , то есть, набор программ, которые позволяют программисту, с максимальным комфортом, составлять, отлаживать и оптимизировать текст программы, а также создавать (после этого) HEX - файл программы (прошивку "). Она также имеет и другие "навороты " (в самом уважительном смысле этого слова, которыми начинающим, для их же пользы, не стоит, пока, "забивать себе голову ". Давайте сначала разберемся с "прожиточным минимумом ". Предполагается, что MPLAB уже установлен на Вашем компьютера и готов к работе Общие положения. создана конкретно для ПИКов . Для микроконтроллеров других видов имеются свои среды проектирования MPLAB поддерживает все типы ПИКов , за исключением самых новейших разработок (их можно догрузить ) и существенно облегчает работу программиста за счет совмещения нескольких, необходимых для работы программиста, функций MPLAB можно представить себе как надежного друга, который берет на себя значительную часть рутинной и трудоемкой работы Этот друг укажет на ошибку, если она совершена, и поможет Вам в решении проблемных задач, которых, при создании и отладке программ, Вы встретите множество Редко когда бывает так, что составление программы идет "как по маслу ". Скорее всего такое - исключение из правил (особенно, для достаточно сложных программ, и поэтому "прожиточный минимум " MPLAB нужно знать как "Отче наше ". Сразу же нужно уяснить следующее работа по созданию текста своей программы или работа по изменению текста чужой программы всегда начинается с создания так называемого проекта Что - то изменять в тексте программы, производить ее оптимизацию и отладку лучше всего в проекте В этом случае, с максимальным комфортом, можно пользоваться полным набором возможностей MPLAB Многое можно сделать и вне проекта, нов этом случае, возникают определенные неудобства, которые нам ник чемуВцелях определения ясных и понятных "правил игры ", давайте договоримся о следующем : составлять, оптимизировать, отлаживать тексты программ, подпрограмм, и вообще , вносить в их тексты какие- либо изменения, мы будем только в проекте Вне проекта, мы будем только просматривать тексты программ и HEX – файлы, а также открывать файлы, предназначенные для копирования в проект В пределах проекта, осуществляется работа только со "своими " текстами программ Для того чтобы изменить их содержимое, необходимо либо сделать это "вручную ", либо скопировать в них (полностью или частично, через буфер обмена, содержимое какой- то другой программы Вне проекта, никаких изменений в тексты программ мы вносить не будем (хотя и можно ). Советую Вам ив дальнейшем, работать по этим правилам На мой взгляд, это самый оптимальный и безпроблемный вариант В проекте , программист может создавать "свой " текст программы или / и вносить в него 46 изменения, а также вносить изменения в текст "чужой " программы (файл. Практической необходимости в "ручном " изменении содержимого файла (прошивки "), в подавляющем большинстве случаев, нет, так как проще и эффективнее работать нес "прошивкой ", ас текстом программы Если нет ошибок, тов процессе любого ассемблирования текста программы, автоматически создает файл программы (мозги отдыхают. Входе работы над текстом программы, это можно делать многократно (хоть миллион раз, не боясь того, что при этом "наплодится " большое количество файлов, в которых можно запутаться Объяснение этому простое по "правилам игры " а, "право на жизнь " имеет только один HEX- файл . Тот, который создан при последнем ассемблировании Он просто записывается "поверху предшественника " (предшественник усоп "). Программисту ненужно знать все детали процесса ассемблирования MPLAB "все сделает в лучшем виде ". Самое главное - было бы что ассемблировать , и чтобы это "что " было без ошибок, а иначе MPLAB "выдаст на гора " сообщение об ошибках, с указанием вида ошибок, мест ошибок в тексте программы и "откажется " создавать HEX- файл Если текст программы (любой) открыт в MPLAB и нужно создать HEX- файл, то программисту нужно только "запустить " процесс ассемблирования и дождаться его окончания Если происходит работа в проекте , то HEX- файл, "в автомате, уходит " в папку проекта (см ниже. Кроме HEX- файла, создает еще несколько файлов с различными расширениями- файл не в счет ), на которые можно "закрыть глаза ". Лично я, после того как заканчиваю работу над программой, либо вообще удаляю их из папки проекта, либо просто не обращаю на них внимания Например , содержимое папки проекта с названием Multi , после окончания работы над проектом, выглядит так Основные файлы папки проекта, без которых обойтись нельзя Файл проекта с расширением .PJT : чисто "технологический " файл, который "рулит " всеми остальными файлами папки Он создается при создании проекта К нему можно применить принцип "создали забыл ". Он "живет по законами нам там делать нечего 2. Файл текста программы с расширением Результат ассемблирования текста программы - файл с расширением Сразу после создания проекта, в папке проекта, имеется файл и "пустой" ASM- файл Так как ассемблирования не производилось (да и что ассемблировать , ведь файл "пустой "), то файл будет отсутствовать, но он появится, в этой папке, после первого же успешного ассемблирования В "пустом " файле можно либо "настучать " программу с "нуля ", либо скопировать в него ( через буфер обмена) предварительно заготовленные части будущей программы и далее ее доработать, либо скопировать в него текст "чужой " программы, с целью его изменения, либо в комплексе Все манипуляции с содержимым файла происходят в специальном текстовом редакторе 47 По принципу своей работы, он мало чем отличается от других текстовых редакторов, и работать с ним проще, чем, например, с редактором " Винворда ". Специальным он называется по той причине, что "встроен " в MPLAB Что дает такая " встроенность "? При наличии ошибок в тексте программы, после щелчка (в окне результата ассемблирования ) по той или иной строке сообщения об ошибке, в редакторе выделяется строка, в которой допущена ошибка В тексте программы может быть организован поиск чего- то повторяющегося, например, команд, которые обращаются к тому или иному регистру В ходе отладки программы, Выбудете видеть исполняемую команду (она выделяется. Для определения времени исполнения составных частей программы, можно назначить точки остановки и задействовать секундомер И т д Предполагаю , что для Вас еще не совсем понятны эти нюансы Я говорю о них только лишь для того, чтобы создать общее представление о том , с чем придется иметь дело Ничего страшного На практике все гораздо проще, чем на словах Скоро Вы убедитесь в этом сами Итак , текстовый редактор это "посредник в общении " программиста и программы , входе ее составления, оптимизации и отладки Поэтому основную часть времени работы с программой Вы будете проводить именно в нем За этим немудреным (сточки зрения манипуляций с текстом ) редактором, тем не менее, стоит вся "мощь " ив этом отношении, любой, даже самый "крутой " редактор, работающий сам по себе ", ему ив подметки не годится ". Зауважали Правильно сделали Спецы " Микрочипа " свою зарплату отрабатывают "по полной программе ". Совместно с текстовым редактором, работает так называемая программа - симулятор Уже из названия понятно, что она что- то "симулирует ", то есть, создает видимость работы " Симулятор является средством отладки программы и позволяет , без применения реального ПИКа , сымитировать работу программы в своего рода "виртуальном " ПИКе, который, специально для этого, создается программой- симулятором Этот "виртуальный " ПИК, на самом деле, физически не существует Он создается программными средствами, причем, конкретно для каждого типа ПИКа ( в зависимости оттого, какой из типов ПИКа выбран. Симулятор , конечно жене "всесилен ", нос его помощью (плюс некоторые хитрости) можно проверить работу программы в большинстве возможных режимов (как в целом , таки по частям, скорректировать ее временные характеристики, найти ошибки и проверить их устранение Симулятор это та "палочка - выручалочка ", которая применяется в случае "корявой " работы программы, зависания (глюка ") или в случае , когда программа вообще не работает или работает не так, как нужно Программа - симулятор покажет Вам , по каким адресам находятся те или иные регистры и 48 какие изменения происходят сих содержимым походу исполнения программы, посчитает количество машинных циклов исполнения того или иного, выбранного участка программы, поможет сымитировать ту или иную ситуацию и т д И все это без "прошивки " реального ПИКа , что экономит кучу времени и нервов По большому счету, программисту вовсе необязательно знать, с помощью какой именно программы, из набора программ MPLAB, производятся те или иные действия Достаточно только знать, какое именно действие нужно произвести, как его "запустить " и как проверить результат этого действия, но все- таки будет лучше, если программист, хотя бы в общих чертах, имеет представление о структуре "инструмента ", с которым он работает Хуже от этого не будет Итак , ближе к практике Работа с MPLAB Сейчас, разумнее всего, не создавать программу с "нуля ", а создать проект какой- нибудь готовой программы В качестве этой программы, я буду использовать, приведенную выше, в качестве примера, программу Multi.asm В дальнейшем , на ее примере, будет показано, как производится ассемблирование , как редактируется текст программы и как происходит отладка программы Настройка MPLAB. Мудрить с настройкой ненужно По умолчанию, разработчики MPLAB установили оптимальный вариант настройки, за что им большое спасибо Что нужно сделать Нужно проконтролировать (на всякий случай) включение симулятора и выставить в Опциях тот тип ПИКа , который задействован в программе (в нашем случае это, определить стандартный режим работы генератора ( |