Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Samouchitel

.pdf
Скачиваний:
16
Добавлен:
13.02.2015
Размер:
3.65 Mб
Скачать

Щелкаем по OK.

Файл проекта с расширением .PJT cоздан и "ушел" в папку Multi.

Одновременно открывается окно Edit Project, в котором предлагается создать "пустышку"

HEX-файла.

Но перед этим, на всякий случай, нужно убедиться, что в окошке Divelopment Mode установлено: MPLAB SIM PIC16F84A (то, чем мы занимались в настройках), а в окошке

Language Tool Suite установлено: Microchip.

Создаем "пустышку".

В списке Project Files щелкаем по строке multi(.hex).

После этого, строка выделяется и кнопка Node Properties... активизируется.

Щелкаем по ней.

Открывается окно Node Properties.

51

Менять здесь ничего не нужно (настройки по умолчанию).

Единственное, что нужно сделать – убедиться в том, что в окошке Node установлено: MULTI.HEX, а в окошке Language Tool установлено: MPASM.

Щелкаем по OK. "Пустышка" HEX - файла создана и "ушла" в папку Multi. Опять появится окно Edit Project. Теперь создаем "пустышку" ASM-файла.

Щелкаем по кнопке Add Node... Раскрывается окно Add Node.

Это то же самое , что и окно New Project, только предназначенное для создания ASM-файла, поэтому нужно сделать в точности то же самое, что и в окне New Project.

Единственное различие может быть в том, что, если Вы указываете название файла с расширением, то естественно, что оно должно быть не .PJT, а .ASM

Чтобы не ошибиться, настучите Multi.asm и дело с концом.

Щелкаем по OK. "Пустышка" ASM-файла создана. Опять появится окно Edit Project.

52

В списке этого окна Вы увидите, что к HEX-файлу добавился ASM-файл. Щелкните по OK.

Окно Edit Project закроется, и Вы останетесь "один на один" с пустым файлом Untitled... .

Необходимо сделать его пригодным для работы по составлению текста программы (следовательно, речь идет о файле с расширением .ASM).

Для этого необходимо назвать его Multi.asm и "вписать" его в ранее созданную "пустышку" ASM-файла (см. выше).

Делается это так: щелкаем по слову File в главном меню, а затем - по строке выпадающего списка Save As.. .

Открывается уже знакомое нам окно, только с названием Save File As. Выбираем папку Multi и определяем название файла (Multi.asm).

Здесь Вы еще увидите нечто, перед которым можно поставить или не поставить галочку. Ничего менять не нужно.

Щелкаем по OK и опять остаемся наедине с пустым файлом, только теперь он "прописан" в папке Multi под названием multi.asm (см. адресную строку окна файла).

Обратите внимание: и в списке окна Edit Project, и в адресной строке созданного нами ASM - файла, большая буква M, в названии файла Multi.asm, "превратилась" в маленькую m. Пусть Вас это не смущает, так как "что в лоб, что по лбу - все едино".

Особо дотошные могут работать только в нижнем регистре, а я, в этом смысле, привык работать по старинке. Каюсь, грешен, но ничего с собой поделать не могу.

Итак, проект Multi создан, и перед Вашими глазами сейчас находится "поле предстоящих сражений" (файл Multi.asm).

Именно на этом, пока пустом, "белом листе" мы и будем заниматься тем, что называется

53

программированием.

"Для полного счастья", нужно потренироваться в закрытии и открытии проекта. Сейчас проект открыт.

Для того чтобы закрыть проект, в главном меню, щелкните по слову Project, и в выпадающем списке, щелкните по строке Close Project (закрыть проект).

При первом закрытии, программа может ничего не спросить, но при последующих закрытиях проекта, она может спросить: сохранить или нет внесенные изменения?

Тут, как говорится, дело хозяйское.

В этом случае нужно щелкнуть или по Yes или по No и проект закроется.

Для того чтобы открыть проект, в главном меню, щелкните по слову Project, и в выпадающем списке щелкните по строке Open Project (открыть проект).

Откроется знакомое Вам окно, только с названием Open Project, в котором нужно указать папку, в которой находится искомый проект (в нашем случае - папка Multi).

После открытия этой папки, в списке (под окошком File Name) появится название файла проекта.

Если это то, что нужно, то необходимо щелкнуть по строке с названием файла проекта, а затем - по OK.

Окно Open Project закроется, и в нашем случае, появится предупреждение, что HEX-файл "пустой", то есть, текст программы не ассемблировался, что и соответствует действительности.

Говорим спасибо программе за "бдительность" и щелкаем по OK.

После этого, проект откроется, и Вы увидите, в нашем случае, пустой файл Multi.asm во всей своей "боевой готовности".

Потренируйтесь. Создайте несколько своих пустых проектов в папке Pic.

Примечание: если производилось ассемблирование (HEX-файл не пустой), то указанное выше предупреждение, не выдается, и ASM-файл открывается сразу.

Если после работы с текстом программы, производилось ассемблирование, и сразу же после этого проект закрывается, то он закроется сразу после ответа на вопрос программы: "Сохранить изменения или нет"?

Если после последнего, перед закрытием проекта, ассемблирования, в текст программы были внесены изменения, то MPLAB напомнит Вам о необходимости ассемблирования перед закрытием проекта, проведет его (щелкнуть по Yes), опять задаст вопрос: "Сохранить изменения или нет"?, и после ответа на него, закроет проект.

Прочитал написанное и сам удивился: не думал, что объяснение такой относительно несложной процедуры потребует столько много слов.

Но проще как-то не получается.

Надеюсь, что не смотря на это, объяснение, все-таки, получилось доходчивым и понятным. После того, как Вы "набьете руку", открытие нового проекта будет занимать у Вас не более 1 - 1,5 минут, и Вы сами убедитесь, как это относительно просто.

"Загрузка" текстов программ в текстовый редактор. Речь пойдет о "загрузке" файлов с расширением .ASM (тексты программ).

Если необходимо просто просмотреть текст той или иной программы (например, Вы скачали в Интернете ASM-файл какой-нибудь программы и хотите с ней разобраться), то проекта создавать не нужно.

Если нужно изменить текст этой программы и/или создать ее HEX-файл, то необходимо "загрузить" (скопировать) текст этой программы в текстовый редактор (в "пустое" окно нового проекта).

Могут быть и другие необходимости.

Давайте разберемся с "технологией этого действа". Для работы, необходим какой-нибудь ASM-файл. Я буду использовать файл программы Multi.asm

Примечание: ранее Вы познакомились с текстом этой программы в формате .DOC (см. выше).

Это сделано для удобства тех читателей, которые не установили на своем компьютере

MPLAB.

Файл программы Multi.asm прилагается (находится в папке "Тексты программ").

54

С ним и будем работать.

Далее, все файлы текстов программ и подпрограмм, публикуемые в "Самоучителе...", будут иметь расширение .ASM.

Итак, открываем файл Multi.asm вне проекта. Запустите MPLAB.

Если программа предложит Вам открыть какой-то более ранний проект MPLAB, то откажитесь, щелкнув по No.

Перед Вами пустое окно MPLAB.

Вглавном меню программы, щелкните по слову File и далее, по строке Open (в выпадающем списке).

Откроется знакомое Вам окно MPLABовского проводника, только с названием

Open Existing File.

Найдите то место, где у Вас лежит файл Multi.asm

После этого, Вы увидите его название в списке проводника.

Щелкните по строке с этим названием, а затем по OK (или двойной щелчок по строке). После этого, Вы увидите окно с текстом выбранной Вами программы.

Так как предполагается работа, связанная с изменением текста этой программы, и мы ранее (см. выше) создали "пустой" проект, то необходимо загрузить текст программы в проект. Делается это так:

Не закрывая окно с текстом программы, нужно открыть проект Multi.

Вы раньше это уже делали, так что сделайте это сейчас самостоятельно.

Вслучаях появления сообщений об ошибках Project Error и Import Error (ASM-файл проекта пустой и ранее ассемблирования не производилось), необходимо их убрать, щелкнув по OK. После этого, откроется второе окно "заготовки" ASM-файла проекта.

Оно пустое.

Нужно скопировать в него содержимое окна, которое находится за ним (перенести содержимое текста программы Multi.asm в "пустой" проект).

Переключения между окнами и сам процесс копирования ничем не отличается от того же самого, при работе в "Виндах".

Копирование производится через буфер обмена.

А именно: активизируете окно с текстом программы.

Вглавном меню MPLAB, щёлкаете по слову Edit и в выпадающем списке, щёлкаете по Select All (выделить всё).

Далее опять щёлкаете по Edit, а в выпадающем списке, по Copy (текст программы скопировался в буфер обмена).

Затем активизируете "пустое" окно.

Далее, опять щелкаете по Edit, а в выпадающем списке, по Paste (вставить).

Всё. Копирование текста программы Multi.asm в проект произведено, и Вы видите этот текст в бывшей "пустышке" ASM-файла проекта.

Таким образом, "пустышка" ASM-файла "превратилась в полноценный" ASM-файл проекта, с которым можно работать.

После этого, окно с текстом программы, из которого производилось копирование, становится ненужным и его можно убрать обычным для "Виндов" способом, то есть, щёлкнув по кнопке Закрыть в правом верхнем углу этого окна.

Далее, для удобства восприятия, разверните оставшееся окно, щёлкнув по кнопке Развернуть (находится в правом верхнем углу этого окна).

После этого, Вы увидите текст программы Multi.asm в полной "боевой готовности". Так как этот текст в ПИК не зашьёшь, то начинаем разбираться с HEX - файлом ("прошивкой").

Впроекте "лежит пустышка" ("заготовка") HEX-файла.

Для того чтобы она "превратилась в полноценный" HEX-файл (то есть, наполнилась содержанием), необходимо проассемблировать текст программы.

Текст программы в наличии, так что никаких преград, для выполнения этого действия, нет.

Создание HEX-файла.

Ассемблирование (компиляция) выполняется очень просто:

В главном меню MPLAB щелкаете по слову Project, а в выпадающем списке, по строке

55

Build Node.

Далее, ни во что не вмешивайтесь, а только ждите окончания процесса. MPLAB "все сделает в наилучшем виде".

В конечном итоге, Вы увидите окно Build Results с текстом, последняя строка которого должна выглядеть так: Build completed successfully.

Это соответствует случаю безошибочного составления текста программы. После этого окно Build Results, со спокойной совестью, можно закрыть.

Если в тексте программы будут ошибки, то в окне Build Results будет выведен их список, а содержание последней строки будет иным.

Разбор этого варианта будет ниже.

Итак, сообщение об отсутствии ошибок получено, что говорит о том, что пустышка HEX-файла проекта "превратилась" в полноценный HEX-файл (Multi.hex), который можно "загружать" в программу, обслуживающую программатор, а значит и "зашить" в ПИК. Желающие (имеющие программатор) могут это сделать.

Получится автоколебательный мультивибратор со стабильной частотой 5кГц. Итак, Вы приобрели для себя новую возможность.

Теперь, имея файл с расширением .ASM (текст программы), Вы можете самостоятельно создать файл "прошивки" (HEX-файл), а это уже не мало.

Даже не имея "штатного" ASM-файла, а имея "нештатный" текст программы (например, опубликованный в какой-нибудь книге), Вы можете его "настучать" в текстовом редакторе MPLAB (с соблюдением синтаксических правил написания текста программы) и после этого, создать HEX-файл этой программы.

Для этого даже не нужно быть программистом в буквальном смысле этого слова. Программист же, должен, описанные Выше операции, производить "в автомате" (на уровне условных рефлексов).

Поэтому, тренируйтесь.

При составлении программ, мозги не должны отвлекаться на такие "технологические вещи". Для них и так, кроме этого, будет достаточно другой, более значимой, работы.

Работа с текстом программы при наличии ошибок.

Посмотрим, что произойдет, если в тексте программы допущена ошибка. Искусственно введу ее.

Например, в "шапке" программы Multi.asm, поставлю точку с запятой перед названием регистра Sec (напоминаю, что MPLAB "ничего не видит" после точки с запятой). Ассемблируем текст программы и получаем сообщение о 4-х ошибках, с нижней строкой в конце, в которой сообщается о "неудачном" ассемблировании (MPLAB "ушел в отказ").

56

Если Вы сделаете двойной щелчок по строке с ошибкой, то курсор покажет Вам эту строку в тексте программы.

Так как ошибка заключается в том, что после блокировки, регистр Sec перестал быть "прописанным" в "шапке" программы, то ошибочными будут считаться все строки программы, в которых упоминается регистр Sec.

Это и есть объяснение того, что в данном случае, количество ошибок равно четырем. Уберите точку с запятой перед регистром Sec и после этого, еще раз проассемблируйте текст программы.

Вы получите сообщение о безошибочном ассемблировании. Еще один случай.

Предположим, что Вы ошиблись при наборе текста программы и вместо команды decfsz (в подпрограмме Pause_1) "настучали" decfsx (нажали, соседнюю с z, кнопку клавиатуры). Введите эту ошибку и затем проассемблируйте текст программы.

Вы получите сообщение о 2-х ошибках: грамматическая ошибка в слове команды и ошибка в подпрограмме Pause_1 (в которой находится ошибочная команда).

Пощелкайте по сообщениям об ошибках, и Вы увидите, что в первом случае, MPLAB покажет на строку с ошибочной командой, а во втором случае, на строку, в которой находится название подпрограммы.

57

Исправьте эту ошибку и проассемблируйте текст программы. Вы получите сообщение о безошибочном ассемблировании. Третий случай.

Например, Вы забыли указать номер бита, к которому обращается бит-ориентированная команда BCF при формировании нулевого уровня на выводе RB0, и вместо bcf PortB,0 "настучали" bcf PortB.

Введите эту ошибку в текст программы и проассемблируйте его.

Вы получите сообщение об ошибке типа: в функции отсутствует аргумент (то есть, чего-то не хватает).

Устраните ошибку и проассемблируйте текст программы. Вы получите сообщение о безошибочном ассемблировании.

При проведении такого рода "экспериментов", обратите внимание на изменение цвета полосы загрузочного индикатора, в конце процесса ассемблирования, с зеленого (все в норме) на красный (в случаях наличия хотя бы одной ошибки).

В случаях отсутствия ошибок, цвет полосы не меняется и после завершения процесса ассемблирования, остается зеленым.

Можно привести еще множество подобного рода примеров.

Если есть желание, то самостоятельно введите другие ошибки и посмотрите, какие сообщения Вам выдаст MPLAB.

Не забывайте только потом исправлять их.

Смысл сказанного выше: если в тексте программы допущена ошибка, то после завершения процесса ассемблирования, MPLAB укажет на нее и подскажет тип ошибки. Устранением ошибок MPLAB не занимается, это личное дело программиста

Обращаю Ваше внимание на следующее: MPLAB не всесилен.

Он не может обнаружить ошибки, связанные с неправильным замыслом программы и стратегией ее построения (функциональные ошибки). Это дело программиста. MPLAB контролирует только "технологию" текста программы: наличие или отсутствие

грамматических ошибок, соблюдение или нет синтаксических правил написания программы, правил переходов, указания аргументов и т. д.

Сообщение об отсутствии ошибок означает только соблюдение этих "технологических" правил и не является гарантией реализации замыслов программиста.

По той простой причине, что "технология" может быть соблюдена, но при этом, замысел программы может быть "кривым" (наличие функциональных ошибок).

Пример функциональной ошибки: "несанкционированный уход" рабочей точки программы в "вечное кольцо", без возможности из него выйти ("зависание"/"глюк").

Таким образом, для того чтобы создать "полноценную", рабочую программу, программист должен реализовать "жизнеспособный", стратегическо-тактический замысел программы, при условии соблюдения всех "технологических" правил ее составления.

Пока мы занимаемся только "технологией", так как без нее невозможна реализация любого

58

замысла.

Если кто-то из Вас "рвется в бой" (в смысле желания побыстрее перейти к творчеству), то советую "обуздать свои порывы" и заняться, пусть и не самой интересной, но абсолютно необходимой, рутинной работой, а иначе Вам гарантирован повышенный процент неудач.

Разбираемся с симулятором

Прежде всего, симулятор позволяет заглянуть в "начинку" ПИКа и увидеть, что там происходит при выполнении команд программы.

При этом следует четко осознавать, что программист будет видеть "начинку" не реального ПИКа, а того "виртуального" (как бы, "идеального") ПИКа, который создается в MPLAB (в ее симуляторе).

Если выбран PIC16F84A, то Вашему вниманию и будет предоставлена "начинка" "виртуального" PIC16F84A, работающая по всем законам реального PIC16F84A.

Если реальный ПИК нужно "прошить" в программаторе, то "виртуальный" ПИК "прошивается" автоматически. При ассемблировании.

И какого-то внешнего устройства, типа программатора, для этого не нужно.

Всимуляторе, имитируется вся "начинка" ПИКа, с наглядным показом того, что в ней происходит по ходу отработки программы.

Внем можно сымитировать и внешнее воздействие.

Это позволяет обнаруживать и устранять ошибки (в том числе и функциональные), а также производить отладку как составных частей программы, так и всей программы.

Короче, "палочка - выручалочка".

Таким образом, сначала решаются "технологические" задачи, а когда они решены (сообщение о безошибочном ассемблировании), программист, с помощью симулятора, может проверить соответствие замысла программы тому, что желаемо.

Если с этим все в порядке, то можно произвести отладку ее характеристик (например, временных. Если это необходимо).

В подавляющем большинстве случаев, программа, прошедшая через "горнило" симулятора ("прогнанная" через него во всех возможных режимах), будет нормально работать и в реальном ПИКе.

Давайте заглянем в "начинку" "виртуального" PIC16F84A.

Программа Multi.asm проассемблирована. Это означает то, что в "виртуальный" ПИК уже "зашита" программа Multi и с ней можно работать в симуляторе.

Обратите внимание на группу из 4-х кнопок в правой части строки с пиктограммами.

Это кнопки с надписями ROM, RAM, SFR и кнопка с нарисованными на ней очками.

Если проект Multi у Вас не открыт, то откройте его.

Ассемблирования производить не нужно (если последнее ассемблирование было безошибочным и после него в текст программы не вносились изменения. Если это не так, то проассемблируйте текст программы, можно даже по принципу: "на всякий случай"). Щелкните по кнопке ROM. Откроется окно Program Memory Window (содержимое памяти программ).

59

В нем:

1-й столбец: номера ячеек памяти программ, в 10-чной системе исчисления. 2-й столбец: адреса ячеек памяти программ, в 16-ричной системе исчисления.

3-й столбец: пока (да и потом тоже) нам не нужен. Не обращайте на него внимания. 4-й, 5-й и 6-й столбцы: собственно говоря, сама программа в "чистом" виде (полное

разложение на команды), то есть, без всего того, что расположено правее точек с запятой. То, что Вы видите, есть содержимое памяти программ, с указанием адресов и порядковых номеров команд рабочей части программы.

Напоминаю, что в части касающейся директив, исполняемых в рабочей части программы, в память программ "закладываются" не они, а их разложения на команды.

Хотя, в рабочей части программы Multi.asm, директивы и не используются, но напомнить об этом не лишне.

Пояснение: в память программ ПИКов "закладываются" не команды на языке ассемблер, а машинные коды этих команд. И слава Богу, что MPLAB "ограждает нас от этой напасти"...

После "прошивки" реального PIC16F84A, в его памяти программ, именно по этим адресам, и в такой же последовательности (по направлению сверху вниз), будут располагаться машинные коды команд программы Multi.asm.

В окне ROM, можно определить, какое именно количество ячеек памяти программ занимает программа (в данном случае, 20) и каков объем памяти программ используемого ПИКа (в данном случае, 1024 ячейки).

Закройте окно Program Memory Window.

Щелкните по кнопке RAM.

Откроется окно File Register Window.

Внем Вы видите область оперативной памяти. По образу и подобию, имеющейся у Вас, распечатки области оперативной памяти.

Сравните эту распечатку (с учетом того, что в распечатке указаны не все регистры общего назначения) с содержимым окна File Register Window.

В"глобальном смысле", Вы увидите примерно одинаковую картину, только с различными, взаимно дополняющими друг друга, "формами наполнения".

Используя окно File Register Window и распечатку области оперативной памяти (в комплексе), Вы можете свободно ориентироваться в области оперативной памяти. Например, сверяясь с распечаткой области оперативной памяти, в окне File Register Window, Вы сможете увидеть "числовую начинку" любого из регистров области оперативной

60

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]