Главная страница

Справочник по программировани BASCOM-8051 (М.Л. Кулиш, 2001). Справочник по программированию bascom8051 Краснодар 2001


Скачать 6.61 Mb.
НазваниеСправочник по программированию bascom8051 Краснодар 2001
АнкорСправочник по программировани BASCOM-8051 (М.Л. Кулиш, 2001).pdf
Дата26.04.2017
Размер6.61 Mb.
Формат файлаpdf
Имя файлаСправочник по программировани BASCOM-8051 (М.Л. Кулиш, 2001).pdf
ТипСправочник
#5699
КатегорияПромышленность. Энергетика
страница3 из 25
1   2   3   4   5   6   7   8   9   ...   25
Знаки
отношения
=
<>
<
>
<=
>=
Соответствуют следующим операциям сравнения (применимы с переменными типа):
Равенство (Equality) - X = Y. (Const, Bit, Byte, Word, Integer, Long, String, Single)
Неравенство (Inequality) - X <> Y. (Const, Bit, Byte, Word, Integer, Long, String, Single)
Меньше чем (Less than) - X < Y. (Const, Byte, Word, Integer, Long, Single)
Больше чем (Greater than) - X > Y. (Const, Byte, Word, Integer, Long, Single)
Меньше или равно (Less than or equal) - X <= Y. (Const, Byte, Word, Integer, Long, Single)
Больше или равно (Greater than or equal) - X >= Y. (Const, Byte, Word, Integer, Long, Single)
Знаки
логических
операций
NOT
AND
OR
XOR
Соответствуют следующим логическим операциям (с переменными типа Сonst, Bit, Byte,
Word, Integer, Long):
Инверсия (complement): 0 = NOT 1, 1 = NOT 0
И (Conjunction) : 1 = 1 AND 1, 0 = 1 AND 0 = 0 AND 0
ИЛИ (Disjunction): 1 = 1 OR 1 = 0 OR 0, 0 = 0 OR 0
Исключающее ИЛИ (Exclusive or): 1 = 1 XOR 0, 0 = 0 XOR 0 = 1 XOR 1
Знаки
арифметических
операций
+
-
*
/ или \
Соответствуют следующим арифметическим операциям (с переменными типа):
Сложение. (Const, Byte, Word, Integer, Long, String*, Single).
Вычитание. (Const, Byte, Word, Integer, Long, Single)
Умножение. (Const, Byte, Word, Integer, Long, Single)
Деление (Const, Byte, Word, Integer, Long, Single)
* - строковые переменные складываются не арифметически.
=============================================================================
3-2

===================================== Справочник по программированию «Bascom-8051» ==
4. Директивы, операторы и функции Bascom-8051
$ASM - $END ASM
Действие:
Обозначают начало и конец блока на языке ассемблера, вставляемого в текст программы на
Бейсике. Использование $ASM допускается только вместе с $END ASM.
Пример:
$asm Mer:
Mov r0,#{C} ;address of c
Mov a,#1
Mov @r0,a ;store 1 into var c
$end Asm
Примечание. Смотри раздел «Правила оформления ассемблерных вставок»
$BAUD, $CRYSTAL
Действие:
$BAUD – устанавливает скорость обмена асинхронного интерфейса (UART). Данная директива активизируется только при использовании команд PRINT, INPUT и обычно используется в блоке инициализации микроконтроллера. Также необходимо указывать и частоту кварцевого генератора (резонатора) с помощью директивы $CRYSTAL (иначе значение будет взято из панели параметров компилятора). Внимание! Если в тексте программы не применяются операторы типа PRINT и INPUT, то инициализация автоматически не выполняется - в таймер не загружается значение коэффициента деления и не устанавливается режим последевательного интерфейса, Для этого нужно добавить дополнительные операторы инициализации таймера и запустить таймер (см. пример).
Синтаксис: $BAUD = var1 ; $CRYSTAL = var2 var1, var2 – константы, численно равные соответственно скорости в бодах и тактовой частоте в герцах (частоте кварца).
Пример:
$Baud = 2400 $Crystal = 12000000 ‘ 12 MHz crystal
Config Timer2 = Timer , Gate = Internal , Mode = 2 ‘для Timer2
Scon = &h52 : Rcap2h = &hff : Rcap2l = &h64 : Start Timer2 '*
‘вариант для Timer1
Config Timer1 = Timer , Gate = Internal , Mode = 2 ‘для Timer1
Scon = &h52 : Pcon = &H80 : Th1 = &he6 : Start Timer1 '*
'* - эти строки добавляются, если в программе отсутствуют 'операторы типа Print и Input, но послед. интерфейс используется 'другим способом
$DEFAULT XRAM
Действие: После этой директивы компилятор начинает располагать каждую переменную во внешней памяти. Если какую-либо переменную после этого нужно расположить во внутренней памяти, к ней необходимо дополнительно применить указание IRAM
Пример:
$default Xram
Dim X As byte ‘во внешней памяти XRAM
Dim Y As Integer ‘тоже в XRAM
Dim Z As IRAM Integer ‘эта переменная определена в памяти IRAM
$EXTERNAL
Действие: Директива, определяющая используемую ассемблерную подпрограмму или подпрограммы пользователя. Это позволяет включать с процесс ассемблирования только необходимые для данного случая подпрограммы из всех, содержащихся в библиотеке. Однако, последнее в данной версии пока не работает – включается вся библиотека.
Синтаксис: $EXTERNAL myrout [, other] myrout– имя подпрограммы.
Пример:
$LIB "mylib.lib"
$EXTERNAL _dec76
$INCLUDE
Действие: Включить в процесс компиляции данной программы ASCII (текстовый) файл с текущей позиции.
В подключаемом файле должны содержаться только определения, предусмотренные BASCOM.
Синтаксис: $INCLUDE <имя файла>
Пример:
$include [c:\bascom\]123.bas ‘[полный путь] и имя
=============================================================================
4-1

===================================== Справочник по программированию «Bascom-8051» ==
$IRAMSTART
Действие: Устанавливает начальное значение распределения переменных во внутренней памяти.
Применяется совместно с директивами $NOINIT и $NOSP, отменяющими автоматичекую инициализацию микроконтроллера и установку стека.
Синтаксис: $IRAMSTART = constant Constant - начальное значение (0-255)
Пример:
$NOINIT ‘отменяет инициализацию процессора
$NOSP ‘отменяет инициализацию стека
$IRAMSTART = &H60 ‘начальное значение распределения памяти
SP = 80 ‘назначить стек
$LARGE
Действие:
Устанавливает модель большой памяти(более 2 КБайт). При этом компилятор начинает использовать команды Lcall и Ljmp.
Пример:
$LARGE ‘при компиляции появляется сообщение об ошибке 148,
‘когда требуется эта директива
$LCD
Действие:
Устанавливает адрес и режим обращения к символьному индикатору в 8-битном режиме, и подключенном к шине данных процессора D0…D7 (при использовании дополнительной команды
LCDBUS = 4 в 4-битном режиме с подключение к D4…D7). Линия «E» индикатора подключается через инвертор к линии процессора «Wr»(P3.6). Линия «RS» подключается к формирователю адреса A0 (регистру, защелкиваемому сигналом ALE). Линия «RW» индикатора заземляется, т.к. чтение из индикатора не производится
Синтаксис
:
$LCD = [&H] address address - 16-разрядный.
Пример:
$LCD = &ha000 ‘обращение к индикатору по адресу a000h,a001h
LCD «Hello world»
$LIB
Действие: Директива, указывающая имя файла (в директории /LIB), содержащего необходимые подпрограммы. Это прием позволяет не включать каждый раз ассемблерные подпрограммы в текст программы Бейсика и держать их в отдельном файле.
Синтаксис: $LIB myfile.lib myfile.lib– имя файла.
Пример:
$LIB "mylib.lib" ‘указать имя файла библиотеки
$EXTERNAL _dec76 ‘указать используемую подпрограмму
$MAP
Действие:
Указывает компилятору на необходимость записывать в файле сообщений шестнадцатеричный адрес начала исполняемого кода каждой строки исходного текста программы. Применяется для облегчения отладки программы.
Пример:
$MAP
A = A – F
Print "Hello"
Print "Test"
Будет записано в соответствующей секции файла сообщений :
Code map
-----------------------------------------------------------
Line Address(hex)
-----------------------------------------------------------
2 152 3 169 5 180
$NOBREAK
Действие:
Указывает компилятору на необходимость пропускать операторы Break», имеющиеся в тексте программы, и таким образом позволяет не убирать их из окончательного текста программы.
Пример:
$Nobreak ‘пропускать все команды останова отладчика
=============================================================================
4-2

===================================== Справочник по программированию «Bascom-8051» ==
$NOINIT
Действие:
Отменяет автоматическую инициализацию процессора параметрами, установленными в меню
«Options» - «Compiler» программы «Bascom». Так как данная директива отменяет все виды инициализации, то при ее использовании необходимо полностью сконфигурировать систему, включая установку начального адреса внутренней памяти (директивой Iramstart). Задаваемые в тексте программы параметры внутреннего и внешнего оборудования (директивы Config) имеют более высокий приоритет и обычно не требуют применения директивы $Noinit.
Пример:
$NOINIT ‘отменяет инициализацию процессора
$IRAMSTART = &H60 ‘начальное значение распределения памяти
$NOLCDINIT
Действие: Директива, запрещающая инициализацию LCD.
Синтаксис: $NOLCDINIT
$NONAN
Действие:
Заменяет вывод сообщения “NAN” на сообщение “0.0” в тех случаях, когда выводимое значение переменной в формате с плавающей точкой при преобразовании в строковую переменную не может быть представлено как число (выходит за пределы формата отображения, т.к. очень маленькое или очень большое или при вычислениях произошло произошло переполнение).
Пример:
$NONAN 'отменяет сообщение “NAN”
$NONULL
Действие:
$NONULL = 0 - устанавливает обычный формат записи в программе полей текстовых данных (с завершающим нулем). $NONULL = -1 - устанавливает формат записи полей текстовых данных без завершающего нуля.
Пример:
$NONULL = -1 'отменяет завершающий нуль
DATA “эта строка и следующая строка ”
$NONULL = 0$ 'разрешает установку завершающего нуля
DATA “являются одной текстовой константой”
$NOSP
Действие:
Отменяет автоматическую инициализацию стека после блока переменных. При использовании данной директивы необходимо включить в программу оператор инициализации регистра стека
(SP). Если этого не сделать, то указатель стека останется на 07h.
Пример:
$NOSP ‘отменяет инициализацию стека
SP = 80 ‘назначить стек
$OBJ
Действие:
Включить в программу объектный код
Синтаксис
:
$OBJ obj obj - включаемый объектный код в шестнадцатеричном виде
Пример:
$obj D29122 ‘КОМАНДЫ SETB P1.1, RET
$RAMSIZE
Действие:
Сообщает компилятору размер внешней памяти
Синтаксис
:
$RAMSIZE = [&H] size size - константа.
Пример:
$Ramsize = &h4000 ‘размер внешнего ОЗУ 16 кБ
$RAMSTART
Действие:
Устанавливает начало распределения внешней памяти.
Синтаксис
:
$RAMSTART = [&H] adress adress - константа.
Пример:
$Ramstart = &h1000 ‘начало распределения переменных с 1000h
$REGFILE
Действие:
Указать имя файла для определения имен используемых регистров. Применяется для установки модели применяемого микроконтроллера. Указываемый файл должен быть в директории компилятора. ВНИМАНИЕ! Эта директива должна записывается первой исполняемой строкой в тексте программы.
Синтаксис
:
$REGFILE = [File]
Пример:
'перед этой директивой могут быть строки комменариев
$REFILE = "8052.DAT"
=============================================================================
4-3

===================================== Справочник по программированию «Bascom-8051» ==
$ROMSTART
Действие:
Устанавливает начало распределения программной памяти. Эта директива не похожа на привычный оператор ORG, применяемый при программировании на ассемблере. Директива
$Romstart, независимо от места расположения, указывает начало исполняемого кода всей программы! Ее применение для установки начала последующей части программы с желаемого адреса невозможно.
Синтаксис
:
$ROMSTART = [&H] adress adress - константа.
Пример:
$Romstart = &h8000 ‘начало распределения ПЗУ с 8000h
$SERIALINPUT
Действие:
Перенаправляет действие функции INPUT на считывание данных из другого устройства.
Синтаксис
:
$SERIALINPUT = label label - имя подпрограммы, размещающей вводимые данные из произвольного устройства в аккумуляторе.
Пример:
$Serialinput = Myinput ‘определим имя программы ввода данных
!myinput:
;здесь проводим необходимые действия
Mov A , Sbuf ;посл. ввод в Acc от устройства Sbuf
Ret
$SERIALOUTPUT
Действие:
Перенаправляет действие функции PRINT на запись данных в другое устройство
Синтаксис
:
$SERIALOUTPUT = label label - имя подпрограммы, выводящей данные из аккумулятора в произвольное устройство.
Пример:
$SERIALOUTPUT = Myioutput ‘опр. имя программы вывода данных
!myoutput: ;здесь проводим необходимые действия Mov
Sbuf , A ;посл. вывод из Acc в устройства Sbuf
Ret
$SERIALINPUT2LCD
Действие:
Перенаправляет данные из последовательного порта в LCD-индикатор, обеспечивая режим эха.
Синтаксис
:
$SERIALINPUT2LCD
Пример:
$SERIALINPUT2LCD ’показывать вводимые данные
$SIM
Действие:
При наличии этой директивы компилятор генерирует код, исключающий циклы ожидания
(программные задержки операторов WAIT, WAITMS, DELAY), чтобы ускорить процесс отладки.
Синтаксис
:
$SIM
Пример:
$SIM ‘пропускать при отладке все задержки
$TIMEOUT
Действие:
При наличии этой директивы компилятор генерирует код, включающий использавание опции
TIMEOUT в операторах INPUT, INPUTHEX
Синтаксис
:
$TIMEOUT
Пример:
$TIMEOUT ‘будет использована опция TIMEOUT
=============================================================================
4-4

===================================== Справочник по программированию «Bascom-8051» ==
1WRESET, 1WREAD, 1WWRITE
Действие:
Эти операторы обеспечивают пользователю связь с микросхемами «Dallas Semiconductors», имеющими 1-проводный интерфейс (1Wire-devices).
1WRESET – сбросить 1w-шину.
1WWRITE var1 – послать значение переменной var1 в шину.
Синтаксис
:
1WRESET
1WWRITE var1 var2 = 1WREAD() var2 = 1WREAD() - считать в переменную var2 данные из шины. var1 - Byte, Integer, Word, Long, Constant. var2 - Byte, Integer, Word, Long.
Пример:
‘--------------------------------------------------
‘ демонстрация 1wreset, 1wwrite and 1wread()
‘ Подтянуть резистором 4K7 шину DS2401 на +5 V
‘--------------------------------------------------
Config 1wire = P1.1 ‘использовать этот вывод
Dim Ar(8) As Byte , A As Byte , I As Byte
1wreset ‘сбросить интерфейс
Print Err ‘вывести сообщение об ошибке, если не отзовется
1wwrite &H33 ‘команда считывания памяти
For I = 1 To 8
Ar(I) = 1wread() ‘считать 8 байт в переменную Ar
Next
For I = 1 To 8
Printhex Ar(I); ‘показать считанное
Next
Print ‘пустая строка
End
ABS(x)
Действие:
Возвращает абсолютное значение знаковой целой переменной. Не работает с числами в формате с плавающей точкой.
Синтаксис
:
var = ABS(var2) var - Byte, Integer, Word, Long. var2 – Integer, Long.
Пример:
Dim a as Integer, c as Integer , e as Single a = -1000 : c = Abs(a) ‘c=1000 e = -1000
$asm
Anl {e + 3} , &H7f ‘для Single достаточно стереть знак e=1000
$end Asm
ALIAS
Действие:
Осуществляет переименование переменных. Обычно применяется для определения имен битов и линий портов.
Синтаксис
:
Newvar ALIAS Oldvar Oldvar - старое имя. Newvar - новое имя.
Пример:
In_dir Alias P1.1 ‘линия «Ввод направления»
Ri Alias Scon.0 ‘только так можно определить привычное имя бита
ASC(s)
Действие:
Преобразует строку в ее ASCII значение (код символа). Преобразуется только значение первого символа. При отсутствии строки возвращается нулевое значение
Синтаксис
:
var = ASC(string) var - Byte, Integer, Word, Long. String - String, Constant.
Пример:
Dim a as byte, s as String * 10 s = «ABC» : a = Asc(s)
Print a ‘выводится 65 (41h) - код первого символа
=============================================================================
4-5

===================================== Справочник по программированию «Bascom-8051» ==
AND, OR, XOR, NOT
Действие:
Производят логические операции: AND-операция «И» (1 And 0 = 0, 1 And 1 = 1), OR-операция
«ИЛИ» (1 Or 0 =1, 0 Or 0 =0), XOR-операция «исключающего ИЛИ» (1 Xor 1 = 0, 0 Xor 1 = 1, 0
Xor 0 = 0), NOT – инвертирование
Синтаксис
:
Var3 = var AND var2, var3 = var OR var2 Var3 = var XOR var2, var3 = var NOT var2 var, var2 – переменные или константы типа Bit, Byte, Integer, Word, Long
Constant var3 – только переменные типа Bit, Byte, Integer, Word, Long
Пример:
Dim d As Byte , e As Byte Dim c As Const &B10011001 e = 12 : e = Not e : d = e Or c : d = d And &b00001000
BDC()
Действие:
Показывает (выводит) число в двоично-десятичном виде.
Синтаксис
:
Bcd(var) Var - отбражаемая переменная (типа Byte, Word, Integer, Long или Constant).
Пример:
Print arb ‘значения 10h, 21h, 40h показывает как 16, 33, 64
Print Bcd(arb) ‘значения 10h, 21h, 40h выводятся как 10, 21, 40
BITWAIT
Действие:
Ждет, пока бит не установится или не сбросится
Синтаксис
:
BITWAIT x SET/RESET x- имя бита
Пример:
Bitwaim a , Set ‘ждем, пока в прерыв. Установится Бит a
Bitwait P1.7, Reset ‘ждем, пока в порт не придет «0»
BREAK
Действие:
Остановиться при отладке. Компилятор устанавливает в месте расположения оператора Break код
A5h, служащий отладчику командой останова.
Пример:
Break ‘остановиться здесь при отладке
1   2   3   4   5   6   7   8   9   ...   25


написать администратору сайта