Главная » Bascom-8051, Basic, Железо » Директивы, операторы и функции Bascom-8051 – ЧАСТЬ 2

0

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) – код первого символа

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   ‘остановиться здесь при отладке

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

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

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

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 ‘сброс счетчика

Start Counte ‘разрешим счет

(Tl0 и Th0)

CONFIG TIMER2

Действие:      Установить следующие режимы таймера 2:

CONFIG TIMER2 = COUNTER – внешний генератор C/T2=1

CONFIG TIMER2 = TIMER – внутренний генератор (Fкв/12 или Fкв/2) C/T2=0

Источник: М.Л.Кулиш, СПРАВОЧНИК ПО ПРОГРАММИРОВАНИЮ BASCOM-8051, Краснодар 2001

По теме:

  • Комментарии