Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабРабота_1.docx
Скачиваний:
21
Добавлен:
04.05.2019
Размер:
170.42 Кб
Скачать

Программирование PIC-микроконтроллеров

на языке Си

Лабораторная работа № 1

Программирование на языке Си в среде MPLAB IDE

1. Цель работы

Изучить основы разработки и отладки программ на языке Си для микроконтроллеров семейства PIC18 с помощью интегрированной среды программирования MPLAB IDE.

2. Основные теоретические сведения

2.1. Средства для программирования в MPLAB IDE

2.1.1. Си компилятор MPLAB C18. Это кросс-компилятор, работающий на персональном компьютере и генерирующий код, который может выполняться на микроконтроллерах фирмы Microchip семейства PIC18. Как и ассемблер, MPLAB C18 компилятор переводит понятные и привычные для человека предложения в набор кодов из нулей и единиц для выполнения микроконтроллером. Однако, в отличие от ассемблера, компилятор не выполняет буквальный перевод мнемоник команд в машинные коды.

MPLAB C18 читает стандартные для языка ANSI C выражения, такие как “if ( x == y )” или “temp = 0x27”, и преобразует их в машинные коды для микроконтроллеров семейства PIC18. Компилятор проявляет при этом значительный «интеллект». Он может оптимизировать код, используя подпрограммы, которые будут использоваться многими функциями. Он может перегруппировать коды исходной программы, исключить при этом коды, которые не будут исполняться, использовать одинаковые фрагменты кодов в различных функциях, может определить данные и регистры, которые используются не эффективно, и оптимизировать их работу.

Текст исходной программы использует стандартную для языка ANSI C нотацию. Исходный текст компилируется в блоки кодов программ и данных, которые компонуются с другими блоками и затем размещаются в различных областях памяти микроконтроллера PIC18. Этот процесс называется build (построение), и очень часто выполняется многократно в ходе разработки программы, при котором код пишется, тестируется и отлаживается. MPLAB C18 компилятор и связанные с ним программные средства, такие как линкер (компоновщик) и ассемблер, могут запускаться из командной строки, а могут использоваться в интегрированной среде разработки MPLAB IDE. При этом графический интерфейс пользователя служит единственной средой для написания, компилирования и отладки программ.

Окна диалогов MPLAB IDE и менеджер проектов управляют всеми деталями компилирования, ассемблирования и компоновки, позволяя сосредоточить все внимание на процесс написания и отладки программ.

MPLAB C18 компилятор делает разработку программ для микроконтроллерных устройств намного удобнее, так как он использует стандартный язык Си. Кроме того, компилятор MPLAB C18 способен генерировать исключительно эффективный код для микроконтроллеров семейства PIC18.

Использование языка Си имеет следующие преимущества над программированием на Ассемблере:

  1. глубокого знания системы команд микроконтроллера не требуется, элементарное знание архитектуры желательно

  2. распределение регистров и способы адресации управляются полностью компилятором

  3. лучшая читаемость программы, используются ключевые слова и выражения, которые более свойственны человеческой мысли

  4. время разработки программ и их отладки значительно короче в сравнении с программированием на Ассемблере

  5. библиотечные файлы содержат много стандартных подпрограмм, которые могут быть включены в прикладную программу.

2.1.2. MPASM кросс-ассемблер и MPLINK линкер. Очень часто кросс-ассемблер используется при написании текста программы в проекте. MPASM является компонентом MPLAB IDE и он работает вместе с линкером MPLINK, чтобы скомпоновать ассемблерные секции кода с секциями, сформированными компилятором MPLAB C18.

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

2.2. Проекты в mplab ide

Проектами в MPLAB IDE принято называть группу файлов, необходимых для работы различных инструментальных средств среды разработки, например, такими как MPLAB C18. Проект состоит из исходных файлов, написанных на языке Ассемблер или Си, заголовочных, объектных и библиотечных файлов и файла сценария линкера. Каждый проект должен иметь один или больше исходных файлов и один файл сценария линкера.

Обычно, по крайней мере, требуется хотя бы один заголовочный файл для идентификации регистров целевого микроконтроллера. Заголовочные файлы обычно включаются в исходные файлы и поэтому специально не добавляются в проект.

Выходные файлы проекта включают HEX-файл (файл с расширением *.hex), который может быть записан в память микроконтроллера с помощью программатора, а также используется симулятором MPLAB SIM для проверки работы программы на компьютере. Дополнительные отладочные файлы с расширениями *.cof и *.map используются MPLAB IDE для корреляции имен переменных и функций из исходных файлов с исполняемыми кодами и областями памяти микроконтроллера.

В данной лабораторной работе проекты будут состоять только из одного исходного файла и файла сценария линкера.

3. Порядок выполнения работы

При первоначальном ознакомлении с интегрированной средой разработки обычно используется метод “Quick start – быстрый старт”. Цель его состоит в том, чтобы, не углубляясь в подробности, дать новичку первое представление о программном средстве, дать возможность быстро получить конкретный результат.

Рассмотрим основные особенности программы на языке Си с использованием компилятора MPLAB C18. В качестве микроконтроллера выберем PIC18F242 с тремя портами ввода/вывода, которые обозначаются: PORTA, PORTB, PORTC. Программа будет просто увеличивать число на 1 и выводить его в порт В.

/*******************************************

primer1.c – пример программы на Си для PIC18

****************************************************/

#include<p18f242.h>

#pragma config WDT = OFF, OSC = HS

unsigned char counter; // переменная counter – беззнаковое

// однобайтное целое число

void main(void) // здесь начинается главная программа

{

unsigned char counter; // переменная counter – беззнаковое

// однобайтное целое число

PORTB = 0; // очистить регистр данных порта В

TRISB = 0; // настроить все линии порта В на вывод

counter = 1; // инициализировать counter значением 1

while( 1 )

{

PORTB = counter; // поместить значение counter в порт В

counter = counter + 1; // увеличить counter

}

}

Рассмотрим основные составляющие программы на языке Си.

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

  • многострочные (начинаются с комбинации символов /* и заканчиваются символами */ );

  • однострочные (начинаются с комбинации символов // до конца строки).

Препроцессор. При транслировании программ на языке Си текст сначала обрабатывает специальная программа – препроцессор. Затем измененный препроцессором текст обрабатывается компилятором. Препроцессор обрабатывает так называемые директивы препроцессора, заменяя их текстом. Любая директива начинается со знака #. Первой директивой в рассмотренной программе является #include<p18f242.h>, которая вставляет содержимое заголовочного файла с именем p18f242.h. В нем содержатся определения и расположение всех регистров специальных функций микроконтроллера PIC18F242. В общем случае файлы с расширением *.h являются заголовочными файлами стандартных библиотек языка Си. Вторая директива в программе #pragma config определяет биты конфигурации МК. В данном случае она отключает сторожевой таймер, чтобы он не влиял на работу программы (WDT = OFF), и устанавливает тип генератора МК - высокочастотный кварцевый (OSC = HS).

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