Директиви, оператори та функції Bascom-8051 – ЧАСТИНА 2

Дія:Ці оператори забезпечують користувачеві звязок з мікросхемами «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 = P11 використовувати цей висновок 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

Дія:Повертає абсолютне значення знакової цілої змінної Не працює з числами у форматі з плаваючою точкою

Синтаксис: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

Дія:Здійснює перейменування змінних Звичайно застосовується для визначення імен бітів і ліній портів

Синтаксис:Newvar ALIAS Oldvar Oldvar – старе імя Newvar – нове імя

Приклад:In_dir Alias ​​P11 лінія «Введення напряму»

Ri Alias ​​Scon0 тільки так можна визначити звичне імя біта

Дія:Перетворює рядок в її 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-операція «І» (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 &ampB10011001

e = 12 : e = Not e : d = e Or c : d = d And &ampb00001000

Дія:Показує (виводить) число в двійковій-десятковому вигляді

Синтаксис: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 x SET / RESET x – імя біта

Приклад:Bitwaim a, Set чекаємо, поки в прерів Встановиться Біт a Bitwait P17, Reset чекаємо, поки в порт не прийде 0

Дія:Зупинитися при налагодженні Компілятор встановлює в місці розташування оператора Break код

A5h, службовець отладчику командою зупину

Приклад:Break зупинитися тут при налагодженні

Дія:Типи змінних, застосовувані в 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 масив з десяти байт

Дія:Викликає процедуру або підпрограму У процедуру може входити до 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

Дія:Запустити виконання одного з послідовних блоків дій залежно від значення змінної

Синтаксис: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

Дія:Перетворює значення змінних типу 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

Дія:Очищає поле LCD і ставить курсор в першу позицію

Приклад:

CLS

Очистити індикатор

LCD «Hello»

Вивести повідомлення

Дія:Визначення виведення, підключеного до 1-провідний шині

Синтаксис:CONFIG 1WIRE = pin pin – імя будь-якого битово адресуемого порту

Приклад:Config 1WIRE = P10 ‘P10 is used for the 1-wire bus 1WRESET             ‘reset the bus

Дія:Встановити затримку для оператора DEBOUNCE За замовчуванням, якщо не застосовано дане визначення, затримка встановлюється рівною 25 мс

Синтаксис:

CONFIG DEBOUNCE = time

time – константа, що задає в мілісекундах значення

Приклад:

затримки (при кварці 12 МГц)

Config Debounce = 50 ’50 mS

Дія:Встановити затримку між тактами синхронізації по лінії SCL інтерфейсу I2C За замовчуванням затримка встановлюється рівною 5 мкс

Синтаксис:CONFIG I2CDELAY = 0 або 1 0 – без затримки (виходить швидкість обміну близько 400 кГц при частоті кварцового генератора 12 МГц) 1 – з додатковою затримкою 5 мкс (це стандартна швидкість – 100 кГц)

Приклад:CONFIG I2CDELAY = 0 без затримки

Дія: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

–&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp при використанні побітного режиму управління індикатором (самого повільного)

pin – перерахування імен портів підключених до індикатора Для управління індикатором можуть використовуватися будь-які лінії, адресовані як біти Або CONFIG LCDPIN, ..” – в старій версії синтаксис був таким

Приклад 1:Побітно управління індикатором

CONFIG LCDPIN = PIN , DB4 = P11 , DB5 = P12 , DB6 = P13, _ DB7 = P14 , E=P15 , RS=P16

‘Визна підключення індикатора Лінія RW-Gnd CONFIG LCD = 40 * 4 40 символів, 4 рядки

Приклад 2:Підков Індикатора на шину RW-Gnd RS-A0 E-інв Wr (P36)

$ LCD = & ha000 використовувати адреси A000h і A001h

CONFIG LCDBUS = 8 шина 8-біт (подкл D0-D7 соот P00-Po7)

Дія:Встановити конфігурацію 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 = P11 , Din = P12 , Dout = P14 , _ Clock = P15 , Al = 7

Дія:Встановити конфігурацію виходу оператором Print при використанні інтерфейсу RS-485,

що вимагає додаткового порту для управління драйвером

Синтаксис:Config Print = Pin Pin – імя порту, на якому формується керуючий сигнал

Printmode = Set (Reset) Визначається рівень (1 або 0 відповідно),

устанавливающийся на лінії управління при виведенні даних

Приклад:Config Print = P17 : Printmode = Reset

Дія:Встановити кількість сервомоторів і їхні висновки управління

Синтаксис:Config SERVOS = number, SERVO1 = pin, SERVO2 = pin, SERVO3 = pin Number – число сервомоторів Максимальна кількість – 16

servo 1, servo2, servo 2, servo3 – імена виходів, присваив висновків

При використанні цієї функції таймер 0 вже не може бути використаний для інших цілей

Приклад:Config SERVOS = 3, SERVO1 = P11 , SERVO2 = P12 , SERVO3 = P14

Дія:Визначити висновки, підключені до 2-провідний шині інтерфейсу I2C

Синтаксис:CONFIG SCL = pin pin – імя будь-якого битово адресуемого порту CONFIG SDA = pin

Приклад:CONFIG SDA = P17 : CONFIG SCL = P16 ‘P17 – SDA, P16 is the SDA

Дія:Визначити висновки, підключені до 4-провідний шині SPI Bascom реалізує тільки програмний інтерфейс, і тому працює з будь-якими лініями Апаратний SPI моделі AT89S8252 компілятором не підтримується

Синтаксис:CONFIG SPI = SOFT, DIN = Pin, DOUT = Pin , CS = Pin, CLK = Pin , Nocs=1

Pin – перерахування імен портів підключених до SPI Можуть використовуватися будь-які лінії,

адресовані як біти DIN – введення даних DOUT – висновок даних CS – вибір кристала CLK

–&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp тактирование даних При Nocs = 0 – висновок CS не керується після кожного байта – це потрібно робити вручну При Nocs = 1 – звичне використання виведення CS

Приклад:Config SPI=SOFT , DIN=P10 , DOUT=P11 , CS=P12 , CLK=P13

SPIOUT var , 1              ‘send 1 byte

Дія:Установити такі режими таймера 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)

Дія:Установити такі режими таймера 2:

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

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

Джерело: МЛКуліш, ДОВІДНИК З ПРОГРАМУВАННЯ BASCOM-8051, Краснодар 2001

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*