Библиотеки, поставляемые в комплекте с компилятором, включают достаточно большое количество функций, в том числе специализированных, ориентированных на специфические особенности микроконтроллеров, такие как доступ к ЭСПЗУ, АЦП и 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