Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник по программировани BASCOM-8051 (М.Л. Кулиш, 2001).pdf
Скачиваний:
421
Добавлен:
12.08.2013
Размер:
6.93 Mб
Скачать

===================================== Справочник по программированию «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:

Четырехпроводной последовательный интерфейс

4-8,4-28

DIN, DOUT, CS, CLOCK

 

 

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

 

PRINT

Вывести данные в десятичном виде в последовательный порт

 

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

MWINIT

Установить интерфейса Microwire в исходное состояние

 

4-28

MWREAD

Считать значение из интерфейса Microwire

 

4-28

MWWRITE

Записать значение в интерфейса Microwire

 

4-28

MWWOPCODE

Записать код операции в устройство с интерфейсом Microwire.

 

4-28

Операторы Bascom-8051 для работы с синхронным последовательным интерфейсом

 

 

 

 

SHIFTIN

Считать данные из сдвигового регистра

 

4-35

SHIFTOUT

Записать данные в сдвиговый регистр

 

4-35

SPIIN

Считать данные через SPI

 

4-36

SPIOUT

Записать данные через SPI

 

4-36

Команды Bascom-8051 для работы с последовательным асинхронным интерфейсом (UART)

CLOSE ..

Закрыть устройство (канал) ввода или вывода

4-31

GET

Взять данные из устройства (канала) ввода

4-31

INKEY

Ввести значение символа из приемного буфера

4-23

INPUT

Ввести цифровое значение в десятичном виде

4-22

INPUTHEX

Ввести цифровое значение в шестнадцатеричном виде

4-22

INPUTBIN

Ввести двоичное число (без преобразования)

4-22

OPEN ..

Открыть устройство (канал) ввода или вывода

4-31

PRINT

Вывести данные в десятичном виде в последовательный порт

4-32

PRINTHEX

Вывести данные в шестнадцатеричном виде в посл. порт

4-32

PRINTBIN

Вывести двоичные данные в последовательный порт

4-32

PUT

Поместить данные в устройство (канал) вывода

4-31

WAITKEY

Ждать приема символа

4-23

Операторы Bascom-8051 для работы с символьным индикатором

 

 

 

 

.. BLINK

Мигать курсором (установить в виде мигающего блока)

4-24

CURSOR ..

Управление курсором (включить - ON / выключить - OFF)

4-24

DISPLAY ..

Управление индикатором (включить - ON / выключить - OFF)

4-24

HOME ..

Поставить курсор в начало строки

4-24

..FOURTH или .. F

Поставить курсор на четвертую строку

4-24

FOURTHLINE

Поставить курсор на четвертую строку

4-24

LCD ..

Вывести десятичное значение на индикатор

4-23

LCDHEX ..

Вывести шестнадцатеричное значение на индикатор

4-23

LOCATE y , x

Расположить курсор в строке y, в знакоместе x

4-24

..LOWER или .. L

Поставить курсор на строку ниже

4-24

LOWERLINE

Поставить курсор на строку ниже

4-24

.. NOBLINK

Не мигать курсором (установить в виде подчеркивателя)

4-24

SHIFTLCD ..

Сдвинуть изображение (влево - LEFT / вправо RIGHT)

4-24

SHIFTCURSOR ..

Сдвинуть курсор на позицию (влево – LEFT / вправо RIGHT)

4-24

.. THIRD или .. T

Поставить курсор на третью строку

4-24

THIRDLINE

Поставить курсор на третью строку

4-24

.. UPPER или .. U

Поставить курсор на верхнюю строку

4-24

UPPERLINE

Поставить курсор на нижнюю строку

4-24

Операторы Bascom-8051 для работы с битовыми переменными

 

 

 

 

BITWAIT bit Set(Reset)

Ждать установления (или сброса) бита

4-5

DEBOUNCE port ..

Производить периодическую проверку состояния порта

4-7,4-11

IF bit = 0 THEN ..

Проверять бит на 0

4-20

IF bit = 1 THEN ..

Проверять бит на 1

4-20

SET bit

Установить бит в «1».

4-34

RESET bit

Сбросить бит в «0».

4-34

============================================================================= 1-5

===================================== Справочник по программированию «Bascom-8051» ==

Новые операторы Bascom-8051, начиная с версии 1.0.0.19

$MAP

Записывать в файл сообщений адреса начала кода каждой строки

4-2

$NONAN

Заменяет вывод сообщения “NAN” на сообщение “0.0”

4-3

$REGFILE=[файл]

Указать имя файла для определения используемых регистров

4-3

LCASE()

Возвращает строку со строчными символами (в нижний регистр)

4-23

UCASE()

Возвращает строку с прописными символами (в верх. регистр)

4-23

Новые возможности операторов Bascom-8051, начиная с версии 1.0.0.19

 

 

 

 

CONST

Определить имя константы

4-9

SHIFTIN

Считать данные из сдвигового регистра

4-35

FUSING()

Возвращает строку с форматир. значением числа с плав. точкой

4-15

Новые операторы Bascom-8051, начиная с версии 1.0.0.20

 

 

 

 

$EXTERNAL

Указать используемые подпрограммы

4-1

$LIB

Указать имя библиотеки с подпрограммами на ассемблере

4-2

$NOLCDINIT

Запретить инициализацию LCD

4-3

CONFIG Microwire

Установка способа подключения к шине Microwire

4-8

HIGHW()

Выделить старшие два байта четырехбайтовой переменной

4-17

INSTR ()

Определить позицию включения в строке

4-21

LOWW()

Выделить младшие два байта четырехбайтовой переменной

4-17

MIN(), MAX()

Выбрать минимальное или максимальное значение массива

4-26

MWINIT

Установить интерфейса Microwire в исходное состояние

4-28

MWREAD

Считать значение из интерфейса Microwire

4-28

MWWRITE

Записать значение в интерфейса Microwire

4-28

MWWOPCODE

Записать код операции в устройство с интерфейсом Microwire.

4-28

Новые возможности операторов Bascom-8051, начиная с версии 1.0.0.20

 

 

 

 

INPUT

Добавлена опция TIMEOUT

4-22

IF X=”A”

Добавлена возможность сравнения с символьной константой

4-20

ON .. , PRIORITY ..

Добавлена поддержка PCA (80С51FA), как стандартной модели

4-29,4-33

Новые директивы, функции и операторы Bascom-8051, начиная с версии 2.04

 

 

 

 

$BGF=[файл]

Вставить в код программы графический файл BMP

Нет*

$NONULL = x

Управление форматом текстовых данных

4-3

$TIMEOUT

Разрешить использовать опцию TIMEOUT

4-4

CONFIG GRAPGLCD

Поддержка графического индикатора – установка конфигурации

Нет

CONFIG PRINT

Определение дополнительной линии управления для RS-485

4-9

PSET

Вывести точку на графический индикатор

Нет

REPLACE

Замена одних символов в строке другими

4-35

RND()

Функция возвращающая случайное число в указанном диапазоне

4-31

SHOWPIC

Вывести на графический индикатор картинку

Нет

SPC()

Вывод заданного количества пробелов в операторах Print и Lcd

4-37

Новые возможности операторов Bascom-8051, начиная с версии 2.04

 

 

 

 

IF … THEN … ELSE …

Добавлена возможность записи оператора условий в одну строку

4-20

OPEN … INVERTED …

Добавлена опция инверсии программного UART

4-32

… NOCS = x …

Добавленна опция NOCS оператор CONFIG SPI

4-9

… NOINT

Добавлена опция запрещения прерывания при генерации звука

4-37

… TIMEOUT = x …

Изменены условия использования этой опции

4-23

CLS TEXT, CLS GRAPH

Очистка графического индикатора

Нет

CLS BOTH

 

 

* - не описаны

 

 

============================================================================= 1-6

===================================== Справочник по программированию «Bascom-8051» ==

2. Введение

Bascom-8051 ® - программная среда для создания исполняемого кода микроконтроллеров семейства 8051. В основе Bascom-8051 находится компилятор программ, написанных на языке высокого уровня близкого к стандартному Бейсику. Кроме компилятора с состав пакета Bascom входит текстовый редактор, построчный отладчик-симулятор (с программными эмуляторами терминала, символьного индикатора, EEPROM), упрощенный эмулятор терминала (без файлового сервиса), контекстная информационно-справочная система и утилиты загрузки аппаратных эмуляторов и программаторов. Программы на Бейсике могут создаваться в любом текстовом редакторе, т.к. содержит только текстовые конструкции. Чтобы комментарии на русском языке были читаемы в окнах Bascom, тексты следует выполнять в кодировке «Windows» (ANSI).

Язык программирования Bascom составляют:

директивы - указания для компилятора, определяющие порядок компиляции и конфигурацию среды создаваемой программы;

операторы и функции Бейсика, преобразуемые в исполняемый код; переменные и константы, которые могут быть представлены в виде битов, одно-, двух- и четырехбайтовых

чисел без знака и со знаком (записанных в дополнительном коде), текстовых строк, а также чисел в стандартном формате с плавающей точкой. Переменные могут быть организованы в виде массивов с возможностью доступа с помощью указателей (индексных переменных);

элементы стандартного ассемблера процессора 8051. Ассемблерные вставки могут располагаться в любом месте программы без ограничений;

файл (файлы) описания регистров микроконтроллера.

Производительность кода, созданного на основе библиотек Bascom на 25-50 % ниже аналогичных ассемблерных программ. По сравнению с программированием на ассемблере эффективность использования ресурсов оперативной памяти ниже на 30-50 %, программной – на 10-25 %. Однако, Bascom обеспечивает существенное сокращение затрат времени программирования. Кроме того, встроенная мощная поддержка многих стандартных физических устройств, наиболее часто применяемых в микропроцессорных системах, обеспечивает дополнительные удобства. По сравнению с компиляторами языка Си, Bascom дает намного более компактный код (60-80 % от кода Си при выполнении аналогичных задач). Еще одна особенность Bascom - минимальные начальные затраты по созданию работоспособной программы. Компиляция всего нескольких строк может дать полностью рабочую программу, пригодную для записи в кристалл.

Компилятор позволяет создавать программы для всех моделей микроконтроллеров, совместимых по набору команд со стандартным 8051. Предусмотрены средства настройки компилятора под любую модель процессора с любым набором дополнительных регистров относительно модели 8051 или 8052. Все имена регистров, используемые в программе, определяются внешним файлом, описывающим их адреса.

Далее приведено исчерпывающее описание всех директив, операторов и функций Bascom, сопровождаемыми примерами их использования. Кроме этого, рассмотрены многие вопросы практического программирования. Дается множество примеров, которые взяты из действующих программ или специально написанных для соответствующих случаев. Почти во всех примерах намеренно оставлены все компоненты программы, обеспечивающие ее реальную работоспособность, хотя это и создает впечатление перегруженности и многократного повторения одинаковых фрагментов.

В результате компиляции могут быть получены файлы исполняемого кода в бинарном виде или HEXформате. Компилятор также может создавать файлы сообщений (о распределении памяти и обнаруженных ошибках) и файлы для собственного отладчика.

Настоящее описание Bascom-8051” неоднократно дополнялось по мере выхода новых версий компилятора. Следующее далее описание директив, операторов и функций соответствует последней версии компилятора, существующей на момент выхода очередной редакции (смотри дату на 1-м листе). Последующие разделы могут содержать устаревшие сведения, хотя и их содержание дополняется и корректируется, но не столь обязательно. Это обусловлено тем, что практически не существует ограничений на использование обновленных компиляторов для старых исходных текстов (совместимость почти 100 %, можно написать только лучше и больше).

В версиях 2.хх произошло заметное обновление библиотек – в результате размер кода сокращается по сравнению с компиляторами версий 1.хх на 5-7 %.

============================================================================= 2-1