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

Справочник по программировани 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
КатегорияПромышленность. Энергетика
страница4 из 25
1   2   3   4   5   6   7   8   9   ...   25
Bit, Byte, Integer, Long, Word, Single, String()
Действие:
Типы переменных, применяемые в BASCOM. Тип переменной необходимо указывать перед использованием при объявлении имени с помощью директивы Dim.
Пример:
Dim B1 As Bit , A As Byte , C As Integer
Dim D As Word , E As Long , G As Single
Dim S As string * 16 ‘на 16 символов
Dim F(10) As Byte ‘массив из десяти байт
CALL
Действие:
Вызывает процедуру или подпрограмму. В процедуру может входить до 10 параметров.
Допускается вызывать процедуру вообще без параметров (даже если их наличие было объявлено).
Синтаксис
:
CALL Test [(var1, var-n)] или Test var1 , var-n
Var1, var-n - любая переменная или константа. Test
Пример:
Dim A as byte, B1 as byte
Declare Sub Test(b1 as byte)
A = 65
Call test (a) ‘вызов п/п test с параметром A
Test a ‘альтернативный вариант записи вызова
End
SUB Test(b1 as byte) ‘использовать некоторую переменную
LCD b1 ‘поместить на индикатор
Lowerline : LCD BCD(b1)
End SUB
=============================================================================
4-6

===================================== Справочник по программированию «Bascom-8051» ==
CASE, SELECT CASE, CASE IS ..
Действие:
Запустить исполнение одного из последовательных блоков действий в зависимости от значения переменной
Синтаксис
:
SELECT CASE var - объявление выбора
CASE test1 : statements - первое условие: var=test1?
[CASE test2 : statements ] - второе условие: var=test2?
CASE ELSE : statements – остальные значения?
END SELECT
Var – тестируемая переменная типа Byte. Test1, Test2 – значения переменной, при котором происходит выполнение соответствующего блока. Statements – выполняемый оператор (операторы). В последних версиях Bascom поддерживаются операторы проверки условия «больше или равно» (“IS >=”) и диапазона «от - до» (“TO”). Проверяйте, поддерживает ли ваша версия компилятора такие определения.
Оператор
Dim b2 as byte
SELECT CASE b2 'начать проверку и выбор
CASE 2 : PRINT «2»
CASE 4 : PRINT «4»
CASE IS >=5 : PRINT «>5» 'для проверки условия требуется 'ключевое слово IS.
CASE 6 TO 19 : PRINT “6-19” 'проверка диапазона. Ключевое слово TO
CASE ELSE : PRINT “Other” 'необязательная составляющая
END SELECT 'закончить
END
CHR()
Действие:
Преобразует значение переменных типа Byte, Integer/Word или константы в символ. Применяется при выводе данных на индикатор, в последовательных порт, для записи в строковую переменную или для преобразования кода в символ. Фактически, данным оператором число преобразуется в байт и записывается в строку.
Синтаксис
:
PRINT CHR(var) : LCD CHR(var) S = CHR(var) : S = «Date=» + CHR(var) var – переменная типа Byte, Integer/Word или числовая константа. s - строковая переменная.
Пример:
Dim a as byte, s as string * 10 a = 110 : LCD a ‘отпечатается «110»
LCDHEX a ‘отпечатается «6E»
LCD Chr(a) ‘отпечатается «n»
LCD Bdc(a) ‘отпечат «6>» - некорректная операция
S = «Byte=» : S = S + Chr(a) ‘можно добавить к строке!!!
Print S ‘отпечатается «Byte=n»
End
CLS
Действие:
Очищает поле LCD и ставит курсор в первую позицию
Пример:
CLS ‘очистить индикатор
LCD «Hello» ‘вывести сообщение
CONFIG 1WIRE
Действие:
Определение вывода, подключенного к 1-проводной шине
Синтаксис
:
CONFIG 1WIRE = pin pin - имя любого битово адресуемого порта.
Пример:
Config 1WIRE = P1.0 ‘P1.0 is used for the 1-wire bus
1WRESET ‘reset the bus
CONFIG DEBOUNCE
Действие:
Установить задержку для оператора DEBOUNCE. По умолчанию, если не применено данное определение, задержка устанавливается равной 25 мс.
Синтаксис
:
CONFIG DEBOUNCE = time time – константа, задающая в миллисекундах значение задержки (при кварце 12 МГц).
Пример:
Config Debounce = 50 ’50 mS
=============================================================================
4-7

===================================== Справочник по программированию «Bascom-8051» ==
CONFIG I2CDELAY
Действие:
Установить задержку между тактами синхронизации по линии SCL интерфейса I2C. По умолчанию задержка устанавливается равной 5 мкс.
Синтаксис
:
CONFIG I2CDELAY = 0 или 1 0 – без задержки (получается скорость обмена около
400 кГц при частоте кварцевого генератора 12 МГц). 1 - с дополнительной задержкой 5 мкс (это стандартная скорость - 100 кГц).
Пример:
CONFIG I2CDELAY = 0 ‘без задержки
CONFIG LCD, CONFIG LCDBUS, CONFIG LCDPIN
Действие:
CONFIG LCD – установить тип индикатора
CONFIG LCDBUS – установить количество линий управления в шинном режиме (при использовании установки «$LCD»). В 4-битном режиме индикатор должен подключаться к линиям D4-D7 шины. Запись в индикатор в шинном режиме ведется командой MOVX A,@DPTR.
CONFIG LCDPIN – определить линии управления индикатором (не шинный режим).
Синтаксис
:
CONFIG LCD = LCDtype LCDtype – один из параметров в соответствии с типом используемого индикатора (символов * строк). Можно применять: 40 * 4, 16 * 1, 16 * 2, 16 * 4, 16
* 4, 20 * 2 или 20 * 4. По умолчанию устанавливается - 16 * 2.
CONFIG LCDBUS = 4 - при использовании 4-битной шины.
CONFIG LCDBUS = 8 - при использовании 8-битной шины (по умолчанию).
CONFIG LCDPIN=PIN , DB4=pin, DB5=pin, DB6=pin, DB7=pin, E=pin, RS=pin
– при использовании побитного режима управления индикатором (самого медленного). pin - перечисленние имен портов подключенных к индикатору. Для управления индикатором могут использоваться любые линии, адресуемые как биты. Или “CONFIG LCDPIN, … “ – в старой версии синтаксис был таким.
Пример 1:
‘Побитное управление индикатором
'ВНИМАНИЕ! Добавлен символ, дающий возможность переносить длинные
‘строки с помощью символа «_» (подчеркивателя):
CONFIG LCDPIN = PIN , DB4 = P1.1 , DB5 = P1.2 , DB6 = P1.3, _
DB7 = P1.4 , E=P1.5 , RS=P1.6
‘опред. подключение индикатора. Линия RW-Gnd
CONFIG LCD = 40 * 4 ’40 символов, 4 строки
Пример 2:
‘Подк. Индикатора на шину. RW-Gnd. RS-A0. E-инв. Wr(P3.6)
$LCD = &ha000 ‘использовать адреса A000h и A001h
CONFIG LCDBUS = 8 ‘шина 8-бит (подкл. D0-D7 соот. P0.0-Po.7)
CONFIG MICROWIRE
Действие: Установить конфигурацию 4-проводного интерфейса Microwire
Config Microwire=Pin, Cs=pin, Din=pin, Dout=pin, Clock=pin, Al=7
Pin - перечисленние имен портов, подключенных к Microwire. Могут использоваться любые линии, адресуемые как биты. DIN – ввод данных. DOUT - вывод данных. CS - выбор кристалла. CLK – тактирование данных. AL – число используемых адресных линий.
Указываемое значение зависит от выбранного размера записываемых данных (bytes or words).
Выбор размерности осуществляется установкой уровня на линии “Org” микросхемы памяти.
Синтаксис:
Chip (модель кристалла) 93C46 93C56 93C57 93C66
Data bits (длина данных)
8 16 8 16 8 16 8 16
AL (параметр)
7 6 9 8 8 7 9 8
Пример:
'ВНИМАНИЕ! Добавлен символ, дающий возможность переносить длинные
‘строки с помощью символа «_» (подчеркивателя):
Config Microwire = Pin , Cs = P1.1 , Din = P1.2 , Dout = P1.4 , _
Clock = P1.5 , Al = 7
=============================================================================
4-8

===================================== Справочник по программированию «Bascom-8051» ==
CONFIG PRINT, PRINTMODE
Действие: Установить конфигурацию выхода оператором Print при использовании интерфейса RS-485, требующего дополнительного порта для управления драйвером
Синтаксис: Config Print = Pin Pin - имя порта, на котором формируется управляющий сигнал.
Printmode = Set (Reset) Определяется уровень (1 или 0 соответственно), устанавливающийся на линии управления при выводе данных
Пример:
Config Print = P1.7 : Printmode = Reset
CONFIG SERVOS
Действие: Установить количество сервомоторов и их выводы управления
Синтаксис: Config SERVOS=number, SERVO1=pin, SERVO2=pin, SERVO3=pin
Number – число сервомоторов. Максимальное количество – 16 servo 1, servo2, servo 2, servo3 – имена выходов, присваемые выводам.
При использовании этой функции таймер 0 уже не может быть использован для других целей.
Пример:
Config SERVOS
= 3, SERVO1 = P1.1 , SERVO2 = P1.2 , SERVO3 = P1.4
CONFIG SDA, CONFIG SCL
Действие:
Определить выводы, подключенные к 2-проводной шине интерфейса I2C.
Синтаксис
:
CONFIG SCL = pin pin - имя любого битово адресуемого порта. CONFIG SDA = pin
Пример:
CONFIG SDA = P1.7 : CONFIG SCL = P1.6 ‘P1.7 – SDA, P1.6 is the SDA
CONFIG SPI
Действие:
Определить выводы, подключенные к 4-проводной шине SPI. Bascom реализует только программный интерфейс, и поэтому работает с любыми линиями. Аппаратный SPI модели
AT89S8252 компилятором не поддерживается.
Синтаксис
:
CONFIG SPI = SOFT, DIN = Pin, DOUT = Pin , CS = Pin, CLK = Pin , Nocs=1
Pin - перечисленние имен портов подключенных к SPI. Могут использоваться любые линии, адресуемые как биты. DIN – ввод данных. DOUT - вывод данных. CS - выбор кристалла. CLK
– тактирование данных. При Nocs = 0 – вывод CS не управляется после каждого байта – это нужно делать вручную. При Nocs = 1 – привычное использование вывода CS.
Пример:
Config SPI=SOFT , DIN=P1.0 , DOUT=P1.1 , CS=P1.2 , CLK=P1.3
SPIOUT var , 1 ‘send 1 byte
CONFIG TIMER0, TIMER1
Действие:
Установить следующие режимы таймера 0 или 1:
CONFIG TIMERx = COUNTER – внешний генератор C/Tx=1
CONFIG TIMERx = TIMER – внутренний генератор (Fкв/12) C/Tx=0
GATE = INTERNAL - внутреннее разрешение счета GATEx=0
GATE = EXTERNAL - внешнее разрешение счета GATEx=1
GATE = MODE=0,1,2 или 3 – режим таймера (соответственно описанию 8051)
Пример:
Config Timer0=Counter, Mode=1, Gate=Internal
Counter0 = 0 ‘сброс счетчик (Tl0 и Th0) а
Start Counte ‘разрешим счет
=============================================================================
4-9

===================================== Справочник по программированию «Bascom-8051» ==
CONFIG TIMER2
Действие:
Установить следующие режимы таймера 2:
CONFIG TIMER2 = COUNTER – внешний генератор C/T2=1
CONFIG TIMER2 = TIMER – внутренний генератор (Fкв/12 или Fкв/2) C/T2=0
]GATE = INTERNAL - внутреннее разрешение счета EXEN2=0
GATE = EXTERNAL - внешнее разрешение счета EXEN2=1
MODE = 0 - режим самозагрузки CP/RL2=0
MODE = 1 - режим захвата CP/RL2=1
MODE = 2 - режим генератора бодовой скорости RCLK=1 TCLK=1
MODE = 3 - генератор бод. только приемника RCLK=1 TCLK=0
MODE = 4 - генератор бод. только передатчика RCLK=0 TCLK=1
MODE = 5 - режим выдачи частоты T2OE=1
DIRECTION=UP - считать вперед (увеличивать) DCEN=1
DIRECTION=DOWN - считать назад (уменьшать) DCEN=0
Пример:
CONFIG TIMER2=COUNTER , GATE=INTERNAL , MODE=0 ‘Режим самозагрузки
CONFIG TIMER2=COUNTER , GATE=INTERNAL , MODE=0 , DIRECTION=UP
CONFIG TIMER2 = COUNTER , GATE = INTERNAL , MODE = 1 ‘Режим захвата
CONFIG TIMER2=TIMER , GATE=INTERNAL , MODE=2 ‘Бодовый генератор CONFIG
TIMER2=TIMER , GATE=INTERNAL , MODE=3 ‘Бод. генер. на прием CONFIG
TIMER2=TIMER , GATE=INTERNAL , MODE=4 ‘Бод.генер. на передачу CONFIG
TIMER2=TIMER , MODE=5 ‘Выход частоты
CONFIG WATCHDOG
Действие:
Установка времени срабатывания будильника модели AT89S8252
Синтаксис
:
Config Watchdog = Time Time – время в мс из ряда: 16 , 32, 64 , 128 , 256 , 512 , 1024 и 2048.
Пример:
Config Watchdog = 1024 ‘время срабатывания 1024 мс
CONST
Действие:
Объявить символьное имя числа (константы). Определенное символьное имя в дальнейшем можно использовать в тексте программы в качестве цифрового значения (константы).
Символьное имя нельзя использовать в блоке определения непосредственных данных с помощью оператора DATA. Неприятности при символьном определении чисел возникают в случаях, когда компилятор не понимает определения. В результате, вместо числа записывается нулевой код без указания ошибки.
Синтаксис
:
DIM Symbol AS Const Value Symbol - имя константы. Value - цифровое значение
Const Symbol = Value
Пример:
Dim Ar As Const 5 ‘Ar = 5
Dim Br As Const &B1001 ‘Br = 9
Dim Cr As Const &hab00 ‘Cr = AB00H
'Новая возможность определения имен констант (начиная с вер.1.0.0.19)
Const Cbyte = &HF
Const Cint = -1000
Const Csingle = 1.1
Const Cstring = "test"
=============================================================================
4-10

===================================== Справочник по программированию «Bascom-8051» ==
COUNTERx
Действие:
Записать значение непосредственно в счетчик таймера. При загрузке счетчик останавливается
(записывается TRx=0), а затем счет разрешается снова (устанавливается TRx=1).
Синтаксис
:
COUNTERX = var или var = COUNTERX
Var - переменная типа byte, Integer/Word variable или константа (последняя только при загрузке).
CounterX - COUNTER0 , COUNTER1 или COUNTER2. Используйте СounterX = 0 для сброса счетчика.. Счетчик может считать от 0 до 255 в режиме 2 (8-битный с самозагрузкой) и до 65535 в режиме 1 (16-битный).
Пример:
Dim A As Byte , C As Integer
Config Timer0 = Counter , Gate = Internal , Mode = 1
Counter0 = 0 ‘очистить
Start Counter0 ‘начать счет
Do ‘цикл
A = Inkey ‘прочитаем введеное
C = Counter0 ‘считаем таймер
Print C ‘отпечатаем значение таймера
Loop Until A = 27 ‘пока не пришел символ escape продолжаем
End
Оператор:
COUNTER0 = 1000
Компилируется:
Clr TCON.4
Mov tl0,#232
Mov th0,#3
Setb TCON.4
CPEEK()
Действие:
Возвращает значение кода по указанному адресу из памяти команд. Т.к. запись в память программ процессора модели 8051 невозможна, то операция и соответственно команда CPOKE, имеющаяся в стандартном Бейсике, невозможна.
Синтаксис
:
var = CPEEK( address ) Var - переменная (байтовая), которая будет содержать считанное значение. Address - переменная или константа (типа Word или Integer).
Пример:
Dim I As Integer , B1 As Byte
For I = 0 To 127
B1 = Сpeek(i) ‘взять байт из памяти
Printhex B1 ; « « ; ‘показать
Next
DATA
Действие:
Объявить блок непосредственных данных
Синтаксис
:
DATA var , var2, var3[, varn] var , var2, var3[, varn] - числовые или строковые константы. Байтовые константы в любом виде, предусмотренном Bascom. Константы типа Integer и Word должны быть со значком - %. Константы типа Long - со знаком &. Константы с плавающей точкой - со знаком !. Компилятор позволяет размещить в одной строке разные типы данных. Их разделение при считывании является задачей программиста.
Пример:
tab_byte: ‘byte data
Data 0 , 1 , 2 , 20 , &hFF , &b000101010
_tab_word: ‘integer data Data 100% , 200% , 32345% , &ha0df , &b0001010001010101
_tab_long: ‘long data
Data 1000& , 22222222& , &h125690bc
_tab_sing: ‘single data
Data 1000! , 2000! , 3000! , 4000! , 5000!
_tab_string: ‘string data
Data «0123456789» , $35 ‘and new format of the string data
_tab_mix: ‘mix of constant types on one line DATA «TEST» , 5 ,
1000% , -1& , 1.1!
=============================================================================
4-11

===================================== Справочник по программированию «Bascom-8051» ==
DATA EEPROM: WRITEEEPROM , READEEPROM
Действие:
Модель микроконтроллера AT89S8252 имеет встроенную EEPROM объемом 2 кБайта. Для ее использования предусмотрены директивы: WRITEEEPROM - записать данные и READEEPROM
– считать данные.
Синтаксис
:
WRITEEEPROM var [, address ] READEEPROM var [, address ] Var - любая переменная BASCOM. Address - адрес EEPROM в диапазоне от 0 до 2047. Адрес можно не указывать, он будет устанавливаться автоматически в порядке следования записей при компиляции. При считывании переменной значение адреса будет вставляться компилятором также автоматически, используя значение, полученное (вычисленное) ранее при ее записи.
Естественно, записи в этом случае будут производиться с адреса 000 или после последнего указанного. Кроме того, при автоматическом выборе адреса данные можно вернуть только в тот регистр, из которого они были записаны, и, соответственно, нельзя записать данные из одной ячейки внутренней памяти в разные ячейки EEPROM.
Пример:
Dim S As String * 15 , S2 As String * 10
S = «Hello» : S2 = «test»
Dim L As Long
L = 12345678 Writeeeprom S : Writeeeprom S2 ‘записать строки
Writeeeprom L ‘записать длинную переменную
S = «» : S2 = «» : L = 0 ‘очистить переменные
Readeeprom L : Print L
Readeeprom S : Print S
Readeeprom S2 : Print S2
End
DEBOUNCE
Действие:
Производить периодическую проверку состояние битового порта, и когда ожидаемое изменение уровня происходит, то осуществлять переход на указанную метку или вызывать указанную подпрограмму. В последнем случае после исполнения подпрограммы производится возврат к оператору контроля уровня. Периодичность проверки уровня определяется директивой CONFIG
DEBOUNCE = ms.
Синтаксис
:
DEBOUNCE Px.y , state , label [ , SUB]
Px.y – имя порта. При state = 0 переход происходит при установлении на контролируемой линии низкого уровня и при state = 1 оператор ждет установления высокого уровня. Label - адрес перехода (GOTO) или вызываемой подпрограммы, если имеется дополнительное указание SUB. Чтобы все работало правильно, необходимо к моменту возврата из подпрограммы вернуть порт в исходное (неактивное) состоянии. Это же правило, кстати, действует и при вызове внешних прерываний.
1   2   3   4   5   6   7   8   9   ...   25


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