Устройства управления роботами, схемотехника и программирование (М. Предко, 2004). Устройства управления роботами, схемотехника и программирование. Устройствауправления роботамисхемотехника и микроконтроллеров picmicro
Скачать 6.79 Mb.
|
ПРИЛОЖЕНИЕ 4 Справочное руководство по языку Lite констант В табл. приведены обозначения констант, представленных в различных сис- темах счисления. Таблица П4. /. Представление констант в различных системах счисления Основание 2 8 10 16 Формат PICC или ОВчисло Очисло или \число число Охчисло или ОХчисло Формат число или или или Охчисло Комментарии Два способа выделения комментариев: Двойной слэш: // Все символы до конца строки считаются комментарием. 2. Слэш со звездочкой: /* Все символы здесь считаются комментарием. »/ Объявления переменных и констант Объявление переменной или константы представлено в следующем формате: [* метка [= В квадратных скобках, как обычно, приведены необязательные элементы. В табл. П4.2 перечислены допустимые типы данных. 382 Устройства управления роботами Таблица Тип bit char char unsigned short int unsigned int long unsigned long float double Типы данных в Разрядность, бит 1 8 8 16 16 16 16 32 32 24 24 (по Комментарии Логическое значение Целое со знаком Целое без знака Целое со знаком Целое без знака Целое со знаком Целое без знака Целое со знаком Целое без знака Вещественное с плавающей Вещественное с плавающей точкой можно увеличить до 32 с помощью опции компилятора -D32J Для явного приведения типа используется конструкция вида (unsigned long) = 0x012345678; Описание массива переменных: [= значение2, Строковые переменные объявляются как массивы символов и хранятся в фор- мате ASCIIZ: char = "Это строка"; Последний символ NUL с кодом при объявлении строки вставляется ав- томатически, но программисту приходится помнить о нем, если создание и обра- ботка строк происходят в самой программе. Для обращения к отдельному символу строковой переменной предусмотрена та же нотация, что и для элементов массива: b = // Выбрали символ строки. Для объявления указателя используется символ * (звездочка): char » String = "Это строка"; В микроконтроллере PIC16F84 переменные могут располагаться в первом бан- ке памяти по адресам с ОхОС до Ox4F, что соответствует абсолютным адресам с до OxOCF; они могут быть отображены в нулевой банк памяти. В мик- роконтроллере переменные хранятся как в нулевом, так и в первом банке памяти; отображение адресов между банками невозможно. В языке Lite, в отличие от стандартного С, нельзя использовать символ & для того, чтобы присвоить указателю адрес другой переменной. Обращение к конкретным адресам регистров в языке PICC Lite представлено в следующем формате: static unsigned char @ Приложение 4 383 Для обращения к отдельным битам регистра служит запись вида static bit • 8 + Если подключить к программе заголовочный файл pic.h, то можно использо- вать стандартные имена регистров и битов. Чтобы сообщить компилятору, что другая программа (скажем, процедура об- работки прерываний) может в любой момент изменить значение некоторой пере- менной, при ее описании надо указать volatile, например: volatile unsigned @ Для описания констант используется квалификатор const, например: const int Label = В результате переменная 1 будет размещена компилятором в ПЗУ, и ее значение нельзя будет изменить. Объявление вида const char ptr; создает указатель ptr на символ. Значение указателя может быть изменено, но сам символ - нет. Наоборот, если записать char » const ptr; то можно будет изменить значение символьной переменной, но не указателя. При использовании микроконтроллера все объявленные в про- грамме переменные размещаются в нулевом банке памяти, но можно использо- вать квалификатор если требуется хранить переменную в первом банке. Эта возможность недоступна для микроконтроллера PIC16F84. Структуры и объединения Формат описания структуры или объединения: struct | union { type type ' } Для доступа к полям структуры используется оператор ->. Для примера рас- смотрим следующее определение: struct < int dividend; ' // Частное. int remainder; // Остаток. } result; , // Результат деления. Тогда можно записать: result -> dividend = x / у; result -> remainder = x % у; Устройства управления роботами Приведем пример описания битовой структуры: struct { unsigned : 3; PageSel : 2; : 3; } PCLATH 9 // Старшие три бита не будут использоваться. // Выбор номера страницы. // Смещение внутри страницы. Функции Главная программа оформляется следующим образом: void { // Текст программы. > // Конец программы. Формат описания функции: ТипРезультата ( [ ] ) // Текст функции. return value; // значение. } // Конец функции. Для описания обработчика прерываний в заголовке функции надо указать модификатор interrupt: void interrupt ИмяФункции (void) { Операторы виде формат оператора языка Lite выглядит следующим обра- зом: Переменная \ Константа [ Операция [ ] Переменная \ Константа ] ] Оператор присваивания значения переменной: Переменная - К управляющим конструкциям относятся следующие: if, while, do, for, switch. Формат оператора if: if ( ) [ Оператор ]; | { Оператор; [ else [ Оператор ]; | { } ] Формат цикла while: while ( Выражение ) [ Оператор ]; | { Оператор; ... } Приложение 4 385 Цикл описывается так: for ( [ [ Условие Условие ]]; [ Выражение Оператор \ { Оператор; } // Инициализация параметра цикла. // Условие продолжения цикла. // Изменение параметра цикла. // Тело цикла. Для немедленного выхода из цикла можно использовать оператор break. Команда пропускает ту часть тела цикла, которая расположена пос- ле нее, и переходит к следующему шагу. Эту команду можно указывать в циклах while и do/while. Формат цикла с постусловием (он выполняется, пока условие истинно): do Оператор; [ { Оператор; } while ( Условие ); Оператор выбора: Выражение ) { case Оператор; ] [ break; ] case [ Оператор; ] [ break; ] [ Оператор; ] > Инструкция goto используется для перехода на указанный оператор (метка не может быть распо- ложена вне тела функции). Формат описания метки: Метка: Оператор; Для возвращения результата выполнения функции используется оператор return Выражение; Операции В табл. П4.3 приведены одноместные (унарные), в табл. П4.4 - двуместные (би- нарные), а в табл. П4.5 - составные операции. Таблица П4.3. Унарные операции Обозначение Операция Поразрядная инверсия Инкремент (увеличение на 1) Изменение знака числа Декремент (уменьшение на 1) 13-2101 386 Устройства управления роботами Таблица операции Обозначение & Л + - * / % == ! = < > < = > = Таблица \f \Ь \ t \v \а \ \ \xddd операции Код ASCII 0x0 ОА ОхООС 0x008 0x009 ОхООВ 0x007 0x027 0x022 - OxOdd Операция Логическое отрицание Логическое И Поразрядное И (AND) или Логическое ИЛИ (OR) Поразрядное ИЛИ (OR) Исключающее ИЛИ (XOR) Сложение Вычитание Умножение Деление от деления Сравнение на равенство Сравнение на неравенство Меньше Больше Меньше или равно или равно Сдвиг влево Сдвиг вправо Описание Возврат (CR) Перевод строки Перевод страницы Забой Горизонтальная табуляция Вертикальная табуляция Звонок (BEL) Апостроф (') Двойная кавычка Обратный слэш (\/ Восьмеричный код код Приложение 4 387 слова Ниже приведен список зарезервированных слов, которые не могут быть исполь- зованы в качестве имен переменных, констант или меток: auto break case char const continue default do else extern fastcall for goto if int interrupt persistent return signed static struct switch union unsigned void volatile while Управляющие символы В табл. П4.6 приведены специальные символы для управления экраном и по- ложением курсора. Таблица Управляющие символы Символ \п \f \Ь \t \v \а V \ \ \ddd \xddd Код ASCII OxOOD ОхООА ОхООС 0x008 0x009 ОхООВ 0x007 0x027 0x022 Ох05С - OxOdd Возврат каретки Перевод строки (LF) Перевод страницы Забой Горизонтальная табуляция Вертикальная табуляция Звонок (BEL) Двойная кавычка Обратный слэш Восьмеричный код код 388 Устройства управления роботами Директивы компилятора В табл. П4.7 приведены директивы управления компиляцией. Все директивы начинаются с символа # и выполняются при компиляции программы. Таблица Директивы компилятора Функция Пустая директива Ассемблерная вставка Условие Генерация ошибки, если условие ложно Имя Текст Определение идентификатора каждое вхождение которого в текст программы компилятор заменит указанным текстом "Файл" Сообщение Включение в текст программы содержимого указанного файла. Если имя файла приведено в кавычках, то он ищется в текущем каталоге и во всех каталогах, которые указаны в переменной окружения о если в угловых скобках, то файл ищется в каталогах, указанных в переменной окружения INCLUDE Генерация ошибки времени компиляции с выводом на экран указанного сообщения или #endif. условие истинно, компилируется следующий до директивы Если условие ложно, до #else или игнорируется Имя Если указанное имя определено в программе с помощью директивы ine, то следующий до директивы или Имя Если указанное имя не определено в программе с помощью директивы следующий до директивы или компилируется Условие Эта директива работает как #else и позволяет избежать вложенных директив Используется совместно с директивами #ifdef Используется для завершения директив или Номер ИмяФайла Определяет номер строки и имя файла листинга Определяет строки файла листинга «pragma Следующая функция обработки прерываний будет вызывать другую функцию. Позволяет подавить сообщение об ошибке, которое в этом случае генерируется по умолчанию Разрешает строки JIS национальный набор символов) #pragma Запрещает строки тип Определяет, что следующая должна принимать строковые данные в формате f psect = Имя Определяет, что данные будут помещены в определенный сегмент памяти regused Регистр Определяет регистры, которые будут сохранены в процедуре обработки прерывания Имя Отменяет определение указанного имени Сообщение Выводит предупреждающее сообщение во время компиляции Приложение 4 389 Параметры строки В табл. П4.8 приведены параметры, которые можно указывать в командной стро- ке при вызове компилятора Lite. Таблица Параметры командной строки компилятора Параметр -processor -ААНЕХ -BIN -С -D24 -D32 -Е -Ефайл -Е+файл -HELP -ICD -Мфайл -МОТ -NORT -0 -Офайл -Р -PRE -PROTO -Q Значение Определяет тип процессора (можно указывать только 16С84, 16F84, 16F84A или J6F627) параметр -опция ассемблеру Генерирует в символьном формате American файл Генерируется выходной файл Компиляция будет закончена созданием файлов Генерирует файл перекрестных ссылок Использует усеченный, 24-разрядный формат вещественных чисел Использует полный (стандарт IEEE 754), 32-разрядный формат вещественных чисел Определяет макрокоманду препроцессора (как директива Определяет расширенный формат для ошибок компилятора Перенаправляет сообщения об ошибках компилятора в указанный файл Сообщения об ошибках дописываются в конец существующего файла Задает формат для отладочной информации Разрешает использовать функции специальной библиотеки для работы с 32-разрядными вещественными числами Генерирует таблицу имен Выводит подсказку по командной строки Генерирует код для внутрисхемного отладчика Определяет путь к с подключаемыми файлами Генерирует выходной файл в формате Intel (по умолчанию) Определяет библиотеку, которая будет использоваться компоновщиком Определяет параметр который будет использоваться компоновщиком Запрашивает создание MAP файла Генерирует выходной файл в шестнадцатеричном формате Motorola Определяет размер идентификаторов (по умолчанию — 31 Запрещает компоновщику подключать к приложению стандартные модули времени выполнения Разрешает оптимизацию кода Определяет имя выходного файла Запускает препроцессор для обработки исходного текста программы Создает файлы с результатом работы препроцессора Генерирует информацию о прототипах функций После компоновки показывает карту памяти Определяет режим без вывода сообщений компиляции (данный параметр должен указываться первым) 390 Устройства управления роботами Таблица Параметры командной строки компилятора (окончание) Параметр -S -STRICT -ТЕК -V _ V Значение Резервирует диапазон указанных адресов ОЗУ Резервирует диапазон указанных адресов ПЗУ Определяет адресный диапазон для внешнего ПЗУ Останавливает компиляцию после получения исходных ассемблерных файлов Определяет для символьных переменных формат «целое со знаком» (если при описании переменной явно не указан другой квалификатор) Разрешает компилятору использовать строгие соглашения ANSI. В этом случае в программе нельзя использовать битовые переменные Генерирует выходной файл в формате Tektronix Отменяет определение указанного идентификатора выходной файл в формате Показывает в листинге параметры командной строки, заданные при вызове компилятора Устанавливает уровень предупреждающих сообщений компилятора Исключает локальные символы из таблицы имен Определяет уровень оптимизации (максимум 3) Стандартные функции Lite В табл. П4.9 приведен список встроенных функций PICC Lite. Стандартные функции PICC Lite Функция Заголовочный файл int double double double atari (double) double atan2 (double, double) double atof (const char *) int char int char *) double char *) double double void *) void char, unsigned char) unsigned char (unsigned char) math.h math.h math.h stdlib.h stdlib.h math.h math.h math.h Комм Вычисляет абсолютное значение числа Вычисляет арккосинус (ответ в Вычисляет арксинус (ответ в Вычисляет арктангенс (ответ в Вычисляет арккотангенс (ответ в Преобразует строку ASCII в вещественное число Преобразует строку ASCII в целое число Преобразует строку ASCII в длинное целое число Округляет число с плавающей запятой до ближайшего целого (в большую Получает строку из стандартного потока ввода Вычисляет косинус угла радианах) Вычисляет гиперболический косинус Выводит строку символов на экран Записывает байт в СППЗУ Считывает байт из СППЗУ Приложение 4 391 Таблица Стандартные функции Lite Функция Заголовочный файл Комментарии double double double double int *) char char void Bit Bit bit bit bit bit bit bit bit bit bit char double int) double double const void* void unsigned int) int const void *, unsigned int) void *, const void unsigned int) void (void *, const void unsigned int) void *, int, unsigned int) math.h math.h math.h conio.h ctype.h ctype.h ctype.h ctype.h ctype.h ctype.h ctype.h ctype.h ctype.h ctype.h conio.h math.h math.h math.h h Вычисляет экспоненту Вычисляет абсолютное значение числа Округляет число с плавающей запятой до ближайшего целого (в меньшую сторону) Вычисляет целую степень вещественного числа Получает один символ из стандарта потока ввода. Если входной поток пуст, ожидает появления символа двухбайтовый символ из потока ввода получения старшего байта требуется повторный вызов этой функции) Инициализирует UART Возвращает если символ является буквенно-цифровым Возвращает если символ является буквой Возвращает TRUE, если символ управляющий - или Возвращает если символ является цифрой Возвращает TRUE, если символ является печатным, но не пробелом (то есть его код лежит в диапазоне 0x021 Возвращает TRUE, если символ — буква нижнего регистра Возвращает если символ является знаком пунктуации Возвращает TRUE, если символ является печатным Возвращает TRUE, если код символа лежит в диапазоне 0x09 или является пробелом Возвращает TRUE, если символ — буква верхнего регистра Возвращает если символ - цифра Возвращает код нажатой клавиши Вычисляет целую степень целого числа Вычисляет натуральный логарифм Вычисляет десятичный логарифм Ищет первое вхождение символа Сравнивает две строки Копирует заданное число байтов Копирует заданное число байтов адресов источника и адресата могут перекрываться) Заполняет заданное число ячеек памяти одним и тем же символом |