Выбрать главу

Библиотеки, поставляемые в комплекте с компилятором, включают достаточно большое количество функций, в том числе специализированных, ориентированных на специфические особенности микроконтроллеров, такие как доступ к ЭСПЗУ, АЦП и SPI-интерфейсу. В интегрированной среде имеется достаточно подробно написанный help-файл, практически полностью повторяющий содержание книги, входящей в комплект поставки компилятора. Есть очень полезная возможность обратиться за помощью непосредственно на фирму ImageCraft, написав письмо по адресу info@imagecraft.com. В отличие от многих других производителей программного обеспечения, эта фирма достаточно оперативно отвечает на вопросы пользователей. Несомненным преимуществом работы с компилятором ImageCraft С является возможность полноценной работы до приобретения С-компилятора. Последняя демо-версия пакета доступна на сайте производителя программы по адресу http://www.imagecraft.com, причем эта версия максимально дружелюбна: пользователь может работать с исходными текстами неограниченной длины и компилировать файл для любой микросхемы. Единственным ограничением является время работы — 30 дней. Его достаточно для разработки даже крупного проекта. По истечении месяца пользователь должен принять решение: или переформатировать винчестер, чтобы еще раз установить демо-версию, либо приобрести официальный дистрибутив и право на техническую поддержку. Демонстрационная версия этого компилятора имеется на компакт-диске, прилагаемом к книге.

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

Текст программы:

// Микроконтроллер: A190S2313

#include <io2313.h>

#include «macros.h>

// Инициализация портов ввода/вывода

void init_ports(void)

{

   DDRB = 0xFF; // Порт В работает на вывод

   PORTB = 0xFF;

   DDRD = 0x00; // Порт D работает на ввод

   PORTD = 0x00;

}

// Временная задержка

void delay()

          {

          unsigned char a, b;

for (a = 1; a; a++)

          for (b = 1; b; b++):

          }

void main(void)

{

   init_ports(); // Инициализация портов

   PORTB = 0xff; // Погасили все светодиоды

   delay();

   PORTB = 0x00; // Зажгли все светодиоды

   delay();

}

4.4. Компилятор языка С AVR GCC

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

Нижеприведенные программы идут в комплекте с свободно распространяемым компилятором AYR GCC.

Мигание светодиодами

Автор: Volker Oth.

Мигает светодиодами на плате STK200.

Текст программы:

#include <io.h>

typedef unsigned char u08;

int main(void)

{

   u08 led, i, j, k;

   outp(0xff.DDRB); /* Все выводы порта В работают на вывод

   led = 1; /* Инициализировать начальное состояние */

   for (;;) {

       outp("led, PORTB); /* Инвертировать выход. 0 — светодиод включен */

       led <<= 1; /* К следующему светодиоду */

       if (!led) /* Переполнение: снова начать с линии В0 */

          led = 1;

       for (i=0; i<255; i++) /* Цикл формирования временной задержки */

           for(j=0; j<255;j++) /* Вложенный цикл формирования временной задержки */

               k++; /* Произвольное действие чтобы чем-то "занять" микроконтроллер */

      }

}

Мигание светодиодами с использованием таймера 0