Файл: Учимся программировать микроконтроллеры Pic на языке PicBasicPro (В.В. Хилинский, 2007).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 17.06.2025

Просмотров: 1772

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Рис. 14. Схема драйвера COM-порта построенного на дискретных компонентах.

Необходимо отметить, что облегченная версия программы MicroCode Studio поддерживает интерактивную отладку программ только с контроллером 16F628. Полная версия, которая называется MicroCode Studio Plus

поддерживает следующие микроконтроллеры: 16F627(A), 16F628(A), 16F73, 16F74, 16F76, 16F77, 16F870, 16F871, 16F873(A), 16F874(A), 16F876(A), 16F877(A), 16F87, 16F88, 18F242, 18F248, 18F252, 18F258, 18F442, 18F448, 18F452, 18F458, 18F1220, 18F1320, 18F2220, 18F2320, 18F4220, 18F4320, 18F6620, 18F6720*, 18F8620 и 18F8720. Устройства, отмеченные «*» поддерживают только первые 64 кбайт программы. В демонстрационной версии функция ICD не поддерживается вообще.

Рис. 15. Окно интерактивной отладки (ICD).

Для того чтобы работать с функцией ICD, необходимо с помощью обычного программатора записать программу – загрузчик в микроконтроллер. Только при наличии этой программы микроконтроллер «знает», как ему общаться с компьютером в этом режиме. Код этой программы находится в папке С:\Program Files\Mecanique\MCSP\MCLoader либо в папке С:\Program Files\Mecanique\MCSP\MCLoader\LoaderHEX. После того, как Вы собрали и

32

подключили интерфейсный узел к компьютеру и к разрабатываемой схеме, записали в микроконтроллер программу – загрузчик, можете приступать к отладке Вашей программы. Прежде всего, Вы должны указать программе порт, через который Вы будете осуществлять связь с Вашей схемой. После того, как Вы ввели текст вашей программы в окне редактора, Вы должны будете скомпилировать ее и записать в микроконтроллер. Для этого воспользуйтесь либо кнопкой «ICD Compile», либо кнопкой «ICD Compile and Program». То же самое Вы можете проделать, воспользовавшись основным меню: Project > ICD Compile либо Project > ICD Compile and Program. Перед записью Вашей программы в микроконтроллер программа, скорее всего, попросит Вас осуществить сброс Вашего микроконтроллера (Please reset the target microcontroller in order to access the bootloader process..). После того как будет нажата кнопка «сброс», начинается запись программы в память микроконтроллера и затем ее верификация. Если компиляция и запись программы в микроконтроллер прошли успешно, можно приступать к отладке программы. Нажмите для этого кнопку ICD Run. При этом окно основной программы изменится и примет вид изображенный рисунке 15.

В основном окне редактирования выполняемая строка программы будет подсвечена, синим цветом, а в появившемся справа окне будут выведены значения переменных, регистров и памяти. Вы можете в любой момент приостановить выполнение программы, нажав на кнопку «ICD Pause», а затем продолжить выполнение программы. Вы можете запустить выполнение программы в пошаговом режиме. Для этого служит кнопка «ICD Step». Вы можете в тексте программы установить контрольные точки, на которых выполнение программы будет остановлено. Для того чтобы установить контрольную точку, надо установить курсор на нужную строку и нажать кнопку «Toggle Breakpoint» либо щелкнуть курсором мышки на сером поле рядом с выбранной строкой программы. Выбранные контрольные точки подсвечиваются красным цветом. Но не на всех контрольных точках выполнение программы будет останавливаться. Такие точки во время выполнения программы подсвечиваются серым цветом. Так, например, если Вы установите контрольную точку в области комментария, программа не будет останавливаться на этой точке. Если Вы, выбрав контрольную точку, щелкните по ней правой кнопкой мышки, то в выпавшем контекстном меню Вы сможете выбрать пункт «Properties Breakpoint» (Свойства контрольной точки). В появившемся окне Вы можете задать количество проходов программы, когда данная точка остановит выполнение программы. Значение 0 говорит о том, что программа будет останавливаться каждый раз, доходя до этой точки. У интерактивного отладчика есть еще одна важная особенность - это возможность менять значения переменных, регистров и памяти в процессе работы анимации. Чтобы это сделать, в момент анимации просто щелкните мышкой по интересующему Вас значению, в нижнем справа окне введите новое значение и нажмите клавишу «ENTER». Только не забывайте что, вводя шестнадцатеричное значение, прежде ставьте префикс «$», вводя двоичное значение префикс «%».

33


Программа MicroCode Loader.

Программа MicroCode Loader предназначена для загрузки кода программы в микроконтроллер, чтения кода записанного в память, проверки записанного кода, стирания памяти микроконтроллера и выдачи информации об используемом микроконтроллере. Для того чтобы загрузить программу MicroCode Loader Вы должны в основном меню выбрать View > Loader. Перед Вами откроется окно представленное на рисунке 16.

Рис. 16. Окно программы MicroCode Loader

В верхней части окна, как обычно, расположена строка основного меню. Ниже этой строки расположена панель инструментов, в которой Вы сможете найти различные кнопки. Кнопка – Open; с ее помощью вы сможете открыть нужный Вам *.hex файл. Кнопка – Program; нажатие на которую приведет к записи программы в микроконтроллер. Кнопка – Read; предназначена для считывания кода из микроконтроллера. Кнопка – Verify; служит для сравнения записанного кода с первоисточником. Кнопка – Erase; предназначена для очистки памяти микроконтроллера. Кнопка – Run User Code отключает bootloader и запускает на исполнение Вашу программу. Последняя кнопка Information сообщает информацию об используемом загрузчике и название подключенного микроконтроллера. Ниже панели инструментов расположено окно кода программы с двумя закладками. По одной закладке Вы можете просмотреть код основной программы с которой Вы работаете, а на другой - код, записанный в ЕЕПРОМ микроконтроллера. Необходимо отметить, что для того, чтобы пользоваться этой программой, в микроконтроллер, как и в предыдущем разделе, должна быть загружена программа-загрузчик. Более подробную информацию об этом читайте в предыдущем разделе.

Терминал последовательного порта (The Serial Communicator).

Этот инструмент позволяет Вам организовать и контролировать обмен информацией по последовательному каналу связи между компьютером и Вашим

34

устройством. Для запуска программы терминала последовательного порта Вы должны в основном меню выбрать VIEW > SERIAL COMMUNICATOR либо нажать кнопку F4. Перед Вами откроется окно представленное на рисунке 17.

Рисунок 17. Окно программы терминала последовательного порта.

В верхней части открывшегося окна мы видим строку основного меню. Ниже расположена панель инструментов. Еще ниже и слева окно конфигурации, а справа окна приемника и передатчика. Внизу расположена строка состояния.

Прежде чем начать работу по этому каналу связи, Вы должны сконфигурировать Ваш порт для обмена данными по последовательному каналу и установить правильный протокол связи. Для этого в окне конфигурации Вы выбираете номер последовательного порта (СОМ1, СОМ2 или СОМ3). Затем устанавливаете скорость обмена данными в бодах (300 – 115200). В следующем пункте Вы должны будете указать компьютеру на то, будет ли осуществляться проверка на четность (нечетность) или нет. Затем Вы указываете на количество бит в информационной посылке (7 или 8) и количество стоповых разрядов в посылке. Затем вы можете устанавливать связь с Вашим устройством. Для этого Вы должны нажать в панели инструментов кнопку CONNECT либо клавишу F9. При этом окно программы изменит свой вид, пропадет окно конфигурации, и останутся только окна приемника и передатчика.

В окне передатчика Вы можете набрать текст команды и послать её по последовательному каналу связи, внешнему устройству. В дополнение к текстовым данным, Вы также можете послать и управляющие символы. Для того чтобы отобразить список вариантов передачи, щелкните правой кнопкой мышки в окне передатчика, и перед Вами откроется контекстное меню. В этом окне Вы можете выбрать удобные для Вас опции обмена информацией.

35


Программа Easy HID Wizard

Еще одним программным продуктом, включенным в состав MicroCode Studio Plus, является программа Easy HID (Human Interface Device) Wizard. Эта программа позволяет Вам обмениваться данными между компьютером и Вашим устройством по шине USB. При этом Вам не надо будет устанавливать специальный драйвер, он уже есть в системе. К сожалению, эта программа работает пока только с микроконтроллерами 18F2455, 18F2550, 18F4455 и 18F4550.

Язык PicBasicPro

Программа написанная на языке PicBasicPro представляет собой набор операторов и команд, которые последовательно выполняются и решают определенную задачу. С помощью операторов PBP можно производить вычисления, хранить промежуточные результаты, осуществлять те или иные действия в зависимости от состояния созданных в программе объектов. Можно также выводить информацию на экран буквенно-цифрового ЖК монитора в текстовом виде, обрабатывать действия пользователя, управлять памятью и реагировать на всевозможные исключительные ситуации и ошибки, которые могут возникнуть в ходе выполнения программы.

Предлагаемое описание не может быть полным трактатом о языке BASIC. Здесь будет описаны система команд компилятора PicBasicPro и будут приведены примеры того, как их использовать. При этом необходимо помнить, что составить серьезную программу достаточно сложно. Для этого надо хорошо знать возможности языка, выучить основные его операторы и, самое главное, постоянно практиковаться в написании новых и новых программ.

После того как мы выполнили все настройки, мы можем приступить к изучению языка PicBasic

Основные понятия и определения. Идентификаторы.

Для обозначения меток строк и имен переменных в PICBasic как и в большинстве других языков программирования используются идентификаторы. Идентификатор - любая последовательность символов, цифр и символов подчеркивания, но он не должен начинаться с цифры. Нельзя также использовать символы кириллицы. Но если использовать в качестве идентификатора русское слово записанное латинскими буквами то этого компилятор не заметит.

Идентификаторы не чувствительны к регистру, таким образом label, LABEL и Label - всё будет обработано компилятором одинаково. Хотя идентификатор Вы можете написать любой длины, PICBasic распознает только первые 32 символа.

36

Комментарии.

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

Speed = 60

правильно снабдить не очевидными словами “в переменную Speed записывается число 60”, а осмысленным текстом: “значение скорости делаем равным 60 км/час”.

Комментарии желательно располагать на той же самой строке, где находится и описываемый ими оператор. Он начинается с символа «'» (одиночная кавычка), либо с символа «;» (точка с запятой), либо оператора REM. Все символы, следующие за знаком комментария и до конца текущей строки, компилятором просто игнорируются.

Speed = 60 ' Значение скорости делаем равным 60 км/ч

Комментарий можно начинать и с первой позиции:

' —— вся эта строка - комментарий ——

Вместо символа «'» в первой позиции может использоваться оператор REM. Перед ним в строке могут идти только пробелы.

Кроме того, при записи операторов BASIC в тех местах, где допускаются пробелы, их можно использовать в неограниченном количестве, как правило, с целью повышения удобочитаемости исходного текста программы. Например:

Speed = 60 ' пробелы хороши в меру

Переменные.

Переменная — ключевое понятие любого языка программирования. Переменные используются для хранения промежуточных значений, получаемых в процессе выполнения программы. Чтобы программа понимала, какие данные хранятся в той или иной переменной, они делятся на типы. В PICBasicPro существуют три типа переменных – BIT, BYTE, WORD. Из названия типов ясно, что в памяти микроконтроллера эти переменные будут занимать соответственно 1, 8, 16 разрядов. Переменные конкретного типа могут содержать только корректную, соответствующую этому типу информацию. При попытке записать, например, в байтовую переменную шестнадцатиразрядное значение, компилятор сообщит об ошибке и прервет работу.

Для того чтобы добавить переменную в программу используется ключевое слово VAR. Переменные могут быть битовыми (BIT), байтовыми (BYTE) или двухбайтовыми (WORD). Пространство для каждой переменной компилятор автоматически распределяет в оперативной памяти микроконтроллеров. При определении переменной используется следующий формат записи:

37


Label VAR Size,

где

Label - имя переменной в качестве которого Вы можете использовать любой идентификатор, исключая зарезервированные слова.

. Size – тип переменной (BIT, BYTE или WORD).

Например: dog VAR byte cat VAR bit w0 VAR word

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

— VAR), пробелы внутри которых не допускаются. Эти слова называются ключевыми или зарезервированными. Использовать ключевые слова в качестве названий переменных или в любых других целях, помимо их прямого назначения, запрещено.

Псевдонимы.

Оператор VAR может также использоваться для того, чтобы создать псевдоним (другое название) для переменной. Использование псевдонимов может быть полезно при обращении к внутренним частям переменной.

Label VAR Label1 {.Modifiers},

где

Label - любой идентификатор или имя псевдонима, исключая ключевые слова. Label1 – имя ранее определенной переменной.

Modifiers – модификатор с помощью которого Вы выделяете часть переменной. Список используемых модификаторов приведен в таблице 4.

Примеры:

fido VAR dog

' fido другое название для переменной dog

b0 VAR w0.byte0

' b0 - первый байт слова w0

b1 VAR w0.byte1

' b1 - второй байт слова w0

flea VAR dog.0

' flea это нулевой бит переменной dog

Таблица 4.

Модификатор

Описание

BIT0 или 0

Создаёт псевдоним для 0 разряда байта или слова

38


BIT1

или 1

Создаёт псевдоним для 1 разряда байта или слова

BIT2

или 2

Создаёт псевдоним для 2 разряда байта или слова

BIT3

или 3

Создаёт псевдоним для 3 разряда байта или слова

BIT4

или 4

Создаёт псевдоним для 4 разряда байта или слова

BIT5

или 5

Создаёт псевдоним для 5 разряда байта или слова

BIT6

или 6

Создаёт псевдоним для 6

разряда байта или слова

BIT7

или 7

Создаёт псевдоним для 7

разряда байта или слова

BIT8

или 8

Создаёт псевдоним для 8

разряда слова

BIT9 или 9

Создаёт псевдоним для 9

разряда слова

BIT10 или или 10

Создаёт псевдоним для 10 разряда слова

BIT11 или 11

Создаёт псевдоним для 11 разряда слова

BIT12 или 12

Создаёт псевдоним для 12 разряда слова

BIT13 или 13

Создаёт псевдоним для 13 разряда слова

BIT14 или 14

Создаёт псевдоним для 14 разряда слова

BIT15 или 15

Создаёт псевдоним для 15 разряда слова

BYTE0 или LOWBYTE

Создаёт псевдоним для младшего байта слова

BYTE1 или HIGHBYTE

Создаёт псевдоним для старшего байта слова

Константы.

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

Есть хороший способ — всем числовым или строковым константам, которые встречаются в программе более одного раза, присвоить имена также как и переменным. Для этого предназначен оператор CON.

porog CON 0.003

39