Справочник по программировани BASCOM-8051 (М.Л. Кулиш, 2001). Справочник по программированию bascom8051 Краснодар 2001
Скачать 6.61 Mb.
|
М.Л.Кулиш СПРАВОЧНИК ПО ПРОГРАММИРОВАНИЮ BASCOM-8051 ® Краснодар 2001 ® Торговая марка «BASCOM-8051» принадлежит фирме MSC Electronics, Нидерланды. (http:\www.mcselec.com) Редакция 1.5 - 29.3.01 Содержание Содержание разделов Стр. Короткий справочник по Bascom-8051 (перечень директив, операторов, функций) 1-1 Введение (о программе Bascom-8051) 2-1 Системные соглашения (принятые элементы языка) 3-1 Директивы, операторы и функции Bascom-8051 4-1 Правила оформления ассемблерных вставок в тексте программ для компилятора «Bascom-8051» 5-1 Встроенный текстовый редактор 6-1 Распределение памяти при определении переменных, память программ и ограничения Bascom 7-1 Структура текста программы 8-1 Выбор и установка типа процессора 9-1 Установка параметров Bascom 10-1 Распределение ресурсов микроконтроллера 11-1 Начальная инициализация системы 12-1 Конфигурирование внешних устройств 13-1 Программирование прерываний 14-1 Проверка условий и изменение хода выполнения программы 15-1 Программирование вывода на индикатор 16-1 Программирование последовательного порта 17-1 Программирование аналоговых преобразователей 18-1 Программирование устройств c шиной Microwire 19-1 Программирование устройств I2C 20-1 Программирование таймеров 21-1 Программирование устройств с последовательным вводом-выводом 22-1 Вычисления и преобразования чисел 23-1 Преобразование строковых переменных 24-1 Применение логических функций 25-1 Организация циклов и систем реального времени 26-1 Программирование с использованием индексированных переменных Bascom 27-1 Программирование EEPROM AT89S82252 28-1 Стиль надежного программирования с помощью Bascom 29-1 Отладка программ Bascom 30-1 Ошибки и неприятности Bascom 31-1 Некоторые советы по созданию больших программ 32-1 Приложение A. Переменные Бейсика A-1 Приложение B. Система команд микроконтроллера 8051 B-1 Приложение C. Коды команд MCS-51 C-1 ===================================== Справочник по программированию «Bascom-8051» == 1. Короткий справочник по Bascom-8051 Ниже одной строкой приведены все (или почти все) определения, поддерживаемые компилятором Определения, представляющие собой список зарезервированных слов компилятора, сгруппированы по функциональному назначению в таблицах и расположены в алфавитном порядке. В последней колонке таблицы указана страница, на которой приведено более подробное описание данного определения. Наименование Действие, назначение Стр. Знаки соотношения и вычисления Bascom-8051 = Приравнять, преобразовать, переписать 3-1, 3-2 + - * / \ Арифметические операции 3-1,3-2 = < > <= >= <> Операторы соотношения 3-2 “ ; : , Разделители операций и данных 3-1 Типы данных и переменных BIT Бит 3-1 BYTE Байт (без знака) 3-1 CONST Константа (все типы) 3-1,20 INTEGER Двухбайтовая переменная со знаком 3-1 LONG Четырехбайтовая переменная со знаком 3-1 SINGLE Четырехбайтовая переменная с плавающей точкой 3-1 STRING Символьная переменная (строка символов) 3-1 WORD Двухбайтовая переменная без знака 3-1 Array(n) Массив числовых переменных (индексированных) любого типа 3-1 Числа (константы), понимаемые компилятором Bascom-8051 10, 12345, -100 Целые десятичные положительные и отрицательные 3-1 &h00FF, &h10 Целые шестнадцатеричные (одно-, двух- и четырехбайтные) 3-1 &b01010101 Целые двоичные (одно-, двух- и четырехбайтные) 3-1 123.456, 0.12 Десятичные, задаваемые в формате с плавающей точкой 3-1 «String Data» Строковая константа (до 254 символов) 3-1 Директивы компилятора Bascom-8051 $ASM Начать ассемблерный блок 4-1 $BAUD = бод Установить бодовую скорость системы 4-1 $CRYSTAL = Гц Объявить частоту тактового генератора 4-1 $DEFAULT XRAM Начать располагать переменные во внешней памяти 4-1 $END ASM Закончить ассемблерный блок 4-1 $EXTERNAL Указать используемые подпрограммы 4-1 $INCLUDE [файл] Включить в процесс компиляции внешний файл 4-1 $IRAMSTART = адрес Начать располагать во внутренней памяти с адреса 4-2 $LARGE Установить большую модель памяти 4-2 $LCD = адрес Обращаться по шине к ЖКИ-модулю по указанному адресу 4-2 $LIB Указать имя библиотеки с подпрограммами на ассемблере 4-2 $MAP Записывать в файл сообщений адреса начала кода каждой строки 4-2 $NOBREAK Пропускать при компиляции команды останова (для отладчика) 4-2 $NOINIT Не инициализировать микроконтроллер автоматически 4-3 $NOLCDINIT Запретить инициализацию LCD 4-3 $NONAN Заменяет вывод сообщения “NAN” на сообщение “0.0” 4-3 $NOSP Не устанавливать стек автоматически 4-3 $OBJ Вставить строчку объектного кода 4-3 $RAMSIZE = размер Установить размер внешней памяти 4-3 $RAMSTART = адрес Установить начальный адрес внешней памяти 4-3 $REGFILE=[файл] Указать имя файла для определения используемых регистров 4-3 $ROMSTART = адрес Установить начальный адрес памяти программы 4-3 ============================================================================= 1-1 ===================================== Справочник по программированию «Bascom-8051» == $SERIALINPUT = метка Определить имя программы последовательного ввода 4-4 $SERIALOUTPUT = метка Определить имя программы последовательного вывода 4-4 $SERIALINPUT2LCD Определить направление ввода-вывода (из посл. порта в LCD) 4-4 $SIM Исключить для отладчика циклы ожидания (при задержках) 4-4 Устройства и ресурсы, поддерживаемые системой Bascom-8051 (резервированные имена) 1WIRE Однопроводная линия: порт подключения 4-4,4-7 COUNTER0, 1 и 2 Счетчики таймеров 0, 1 и 2 4-10 EEPROM Перепрограммируемая память модели AT89S8252 4-11 DEBOUNCE Параметр периодичности опроса порта 19,4-7 I2C: I2CDELAY Параметр частоты синхронизации интерфейса I2C 4-7 LCD, LCDBUS, LCDPIN LCD-модуль: тип (размер), шина(разрядность) и подключение 4-7 I2C: SDA, SCL I2C интерфейс: порты подключения 4-8 Microwire: DIN, DOUT, CS, CLOCK Четырехпроводной последовательный интерфейс 4-8,4-28 SERVOS Генератор управления севроприводами 4-8,4-34 SPI: DIN, DOUT, CS, CLK SPI интерфейс: порты подключения 4-8 TIMER0, 1 и 2 Таймеры 0, 1 и 2 4-8,4-9 WATCHDOG Будильник модели AT89S8252 4-9 INT0 Внешнее прерывание 0 4-13,4-33 INT1 Внешнее прерывание 0 4-13,4-33 PCA Прерывание от массива счетчиков модели 8хС51FA 4-13,4-33 SERIAL Прерывание от последовательного приемопередатчика 4-13,4-33 TIMER0 Прерывание таймера 0 4-13,4-33 TIMER1 Прерывание таймера 1 4-13,4-33 TIMER2 Прерывание таймера 2 4-13,4-33 SOUND Генератор частоты звука 4-35 RC Измерение временного интервала (АЦП с RC-цепочкой) 4-15 RC5 Приемник кода интерфейса RC5 4-16 Операторы Bascom-8051 .. ALIAS .. Команда переименования переменных 4-5 BITWAIT bit Set(Reset) Ждать установления (или сброса) бита 4-5 BREAK Остановиться в отладчике 4-5 CALL имя Вызвать подпрограмму (функцию) с именем 4-6 CASE n : действие При значении n совершить действие 4-6 CASE IS : условие При значении , удовлетворяющем условию, совершить действие 4-6 CLOSE .. Закрыть устройство (канал) ввода или вывода 4-30 CONFIG устройство Установить режим одного из устройств микроконтроллера 4-7 4-9 CONST Определить имя константы 4-9 DATA Объявить блок непосредственных данных в памяти команд 4-10 DEBOUNCE Производить периодическую проверку состояния порта 4-11 DECLARE SUB Объявить процедуру (функцию) 4-12 DEFBIT Объявить имя битовой переменной 4-12 DEFBYTE Объявить имя байтовой переменной 4-12 DEFINT Объявить имя двухбайтовой переменной (со знаком) 4-12 DEFWORD Объявить имя двухбайтовой переменной 4-12 DEFLCDCHAR Определить изображение специального символа 4-12 DELAY Короткая задержка 4-12 DIM .. AS .. Определить размерность переменной или константы 4-13 DISABLE устройство Запретить прерывание от устройства 4-13 DO .. Определение начало простого цикла 4-13 .. ELSE .. Определить действия при невыполнении условий 4-20 .. ELSEIF.. условий Определить действия при невыполнении условий, но при выполнении других 4-20 ENABLE устройство Разрешить прерывание от устройства 4-13 END Закончить программу (остановиться) 4-14 .. END IF Закончить операцию проверки и выполнения условий 4-20 ============================================================================= 1-2 ===================================== Справочник по программированию «Bascom-8051» == ERASE Уничтожить переменную (освободить память) 4-14 EXIT .. Выйти из цикла 4-14 For…To/Downto...Step... Определение цикла с переменным параметром 4-14 GET Взять данные из устройства (канала) ввода 4-30 GOSUB имя Вызвать подпрограмму с именем 4-16 GOTO метка Перейти на метку 4-16 .. LOOP Замкнуть простой цикл 4-13 .. NEXT К следующему значению в цикле с переменным параметром 4-14 IDLE Выполнить останов процессора 4-14 IF .. Начать проверять условия 4-20 INPUT Ввести цифровое значение в десятичном виде 4-22 INPUTHEX Ввести цифровое значение в шестнадцатеричном виде 4-22 INPUTBIN Ввести двоичное число (без преобразования) 4-22 INKEY Ввести значение символа из приемного буфера 4-23 LCD Вывести десятичное значение на индикатор 4-23 LCDHEX Вывести шестнадцатеричное значение на индикатор 4-23 LOAD TIMER0, 1 и 2 Загрузка регистров таймера, определяющих частоту 4-25 MODE0, 1, 2, 3, 4, 5 Режимы таймеров, устанавливаемые при инициализации 4-13 NOSAVE Запретить автоматическое сохранение регистров в прерывании 4-29 ON [Interrupt] Объявление используемого прерывания 4-30 ON x GOTO (GOSUB) Переход (вызов) в зависимости от значения переменой x 4-30 OPEN .. Открыть устройство (канал) ввода или вывода 4-30 POWERDOWN Выключить генератор и остановить процессор 4-32 Вывести данные в десятичном виде в последовательный порт 4-32 PRINTHEX Вывести данные в шестнадцатеричном виде в посл. порт 4-32 PRINTBIN Вывести двоичные данные в последовательный порт 4-33 PRIORITY ON(OFF) .. Установить (снять) приоритет прерывания 4-33 PUT Поместить данные в устройство (канал) вывода 4-30 READEEPROM Считать данные из EEPROM модели AT89S8252 4-11 READ Считать данные из секции DATA 4-33 REM или ‘ Указывает комментарии в тексте программы 4-34 RESET Сбросить (установить в «0») бит. Применяется и к устройствам 4-34 RESTORE Указать блок DATA для считывания оператором READ 4-33 RETURN Возврат из подпрограммы 4-34 ROTATE .. Сдвигать переменную (влево – LEFT / вправо RIGHT) 4-34 SELECT CASE x Выбрать действие в зависимости от значения переменной x 4-6 SET Установить (в «1») бит. Применяется к устройствам 4-34 SERVO Установить длительность импульса 4-34 SHIFTIN Считать данные из сдвигового регистра 4-35 SHIFTOUT Записать данные в сдвиговый регистр 4-35 SOUND Генерация частоты на линии порта 4-35 SPIIN Считать данные через SPI 4-36 SPIOUT Записать данные через SPI 4-36 START TIMER0, 1, 2 Запустить счетчик таймера 0, 1 или 2 4-37 STOP TIMER0, 1, 2 Остановить счетчик таймера 0, 1 или 2 4-37 STOP Остановить исполнение программы 4-37 SUB Определить подпрограмму или процедуру 4-38 SWAP Поменять местами значения двух переменных одного типа 4-39 .. THEN .. Определить действия при выполнении условий 4-20 .. UNTIL .. Определить условия выхода их цикла 4-12 WAIT Ждать секунды 4-12 WAITKEY Ждать приема символа 4-23 WAITMS Ждать миллисекунды 4-12 WHILE .. WEND Цикл, выполняемый, пока условия остаются истинными 4-39 WRITEEEPROM Записать данные в EEPROM модели AT89S8252 4-11 Логические операции Bascom-8051 X AND Y Операция: логическое И 4-5 X OR Y Операция: логическое ИЛИ 4-5 ============================================================================= 1-3 ===================================== Справочник по программированию «Bascom-8051» == NOT Y Логическое инвертирование 4-5 X XOR Y Операция: ИСКЛЮЧАЮЩЕЕ ИЛИ 4-5 Функции Bascom-8051 ABS(x) Возвращает абсолютное значение знаковой переменой 4-5 ASC(s) Возвращает код символа 4-5 BDC(x) Выводит число в двоично-десятичном виде 4-5 СHR(x) Преобразует цифру в символ (записывает как символ) 4-6 CPEEK(x) Возвращает значение байта из памяти команд 4-10 DECR x Уменьшить переменную на единицу 4-12 INCR x Увеличить переменную на единицу 4-12 FUSING() Возвращает строку с форматир. значением числа с плав. точкой 4-15 GETRC() Возвращает значение постоянной времени RC-цепочки 4-15 GETRC5 Возвращает значение кода из инфракрасного порта (ПДУ) 4-16 HEX() Возвращает строку с шестнадцатеричным значением числа 4-16 HEXVAL() Возвращает значение строки в шестнадцатеричном виде 4-17 HIGH() Возвращает старший байт двухбайтной переменной 4-17 HIGHW() Выделить старшие два байта четырехбайтовой переменной 4-17 INP() Возвращает значение из ячейки внешней памяти 4-21 INSTR () Определить позицию включения в строке 4-21 LCASE() Возвращает строку со строчными символами (в нижний регистр) 4-23 LEFT() Возвращает символы строки, расположенные слева 4-25 LOW() Возвращает младший байт двухбайтной переменной 4-17 LOWW() Выделить младшие два байта четырехбайтовой переменной 4-17 LEN() Возвращает длину строки 4-25 LOOKUP Возвращает значение из таблицы числовых данных 4-26 LOOKUPSTR Возвращает значение из таблицы строковых данных 4-26 MAKEBCD(x) Преобразует двоичное число в двоично-десятичный код 4-26 MAKEDEC(x) Преобразует число в двоично-десятичном виде в двоичное 4-26 MAKEINT() Склеивает двухбайтное число из двух однобайтных 4-26 MAX() Выбрать максимальное значение массива 4-27 MID() Возвращает символы из середины строки (или вставляет) 4-25 MIN() Выбрать минимальное значение массива 4-27 MOD Возвращает остаток от деления двух переменных 4-27 OUT Записать значение во внешнюю память 4-21 PEEK() Возвращает значение байта, из внутренней памяти 4-32 POKE Записать байт в ячейку внутренней памяти 4-32 RIGHT() Возвращает символы строки, расположенные справа 4-25 SPACE() Возвращает строку, заполненную пробелами 4-36 STRING() Возвращает строку, заполненную одинаковыми символами 4-36 STR() Возвращает строку с десятичным значением числа 4-16,4-37 VAL() Возвращает значение строки в десятичном виде 4-17,4-39 VARPTR() Возвращает адрес переменной, располженной во внутр. памяти 4-39 UCASE() Возвращает строку с прописными символами (в верх. регистр) 4-23 Операторы Bascom-8051 для работы с однопроводной линией 1WREAD Считать данные по однопроводной шине 4-4 1WRESET Сбросить однопроводный интерфейс 4-4 1WWRITE Записать данные по однопроводной шине 4-4 Операторы Bascom-8051 для работы с двухпроводной линией I2C I2CRECEIVE Считать данные из устройства по шине I2C 4-18 I2CSEND Записать данные в устройство по шине I2C 4-18 I2CSTART Генерировать условия старта на шине I2C 4-19 I2CSTOP Генерировать стоп-условия окончания обмена по шине I2C 4-19 I2CRBYTE Принять один байт из I2C-устройства 4-19 I2CWBYTE Послать байт в I2C-устройство 4-19 ============================================================================= 1-4 ===================================== Справочник по программированию «Bascom-8051» == Операторы Bascom-8051 для работы с четырех линией Microwire |