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

] 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 Вихід частоти

Дія:Установка часу спрацьовування будильника моделі AT89S8252

Синтаксис:Config Watchdog = Time Time – час у мс з ряду: 16, 32, 64, 128, 256, 512, 1024 і 2048

Приклад:Config Watchdog = 1024 час спрацьовування 1024 мс

Дія:Оголосити символьне імя числа (константи) Певне символьне імя надалі можна використовувати в тексті програми в якості цифрового значення (константи) Символьне імя не можна використовувати в блоці визначення безпосередніх даних за допомогою оператора DATA Неприємності при символьному визначенні чисел виникають у випадках, коли компілятор не розуміє визначення В результаті, замість числа записується нульовий код без вказівки помилки

Синтаксис:DIM Symbol AS Const Value Symbol – імя константи Value – цифрове значення

Const Symbol = Value

Приклад:Dim Ar As Const 5         ‘Ar = 5

Dim Br As Const &ampB1001    ‘Br = 9

Dim Cr As Const &amphab00    ‘Cr = AB00H

‘Нова можливість визначення імен констант (починаючи з вер10019) Const Cbyte = & HF

Const Cint = -1000

Const Csingle = 11

Const Cstring = &quottest&quot

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

(Записується 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 TCON4

Mov tl0,#232

Mov th0,#3

Setb TCON4

Дія:Повертає значення коду за вказаною адресою з памяті команд Тк запис в память програм процесора моделі 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

рядкові константи Байтові константи в будь-якому вигляді, передбаченому Bascom Константи типу Integer і Word повинні бути із позначкою -% Константи типу Long – зі знаком & Константи з плаваючою точкою – Зі знаком. Компілятор дозволяє розміщені в одному рядку різні типи даних Їх поділ при зчитуванні є завданням програміста

Приклад:tab_byte:                       ‘byte data Data 0 , 1 , 2 , 20 , &amphFF , &ampb000101010

_tab_word:                      ‘integer

data Data 100% , 200% , 32345% , &ampha0df , &ampb0001010001010101

_tab_long:                      ‘long data Data 1000&amp , 22222222&amp , &amph125690bc

_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&amp , 11

Дія:Модель мікроконтролера AT89S8252 має вбудовану EEPROM обємом 2 Кбайт Для її використання передбачені директиви: WRITEEEPROM – записати дані і READEEPROM

–&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 вважати дані

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

Дія:Виробляти періодичну перевірку стан бітового порту, і коли очікувана зміна рівня відбувається, то здійснювати перехід на вказану мітку або викликати зазначену підпрограму В останньому випадку після виконання підпрограми проводиться повернення до оператора контролю рівня Періодичність перевірки рівня визначається директивою CONFIG DEBOUNCE = ms

Синтаксис:DEBOUNCE Pxy , state , label  [ , SUB]

Pxy – імя порту При state = 0 перехід відбувається при встановленні на

контрольованої лінії низького рівня і при state = 1 оператор чекає встановлення високого рівня Label – адреса переходу (GOTO) або підпрограми, що викликається, якщо є додаткове вказівка ​​SUB Щоб все працювало правильно, необхідно до моменту повернення з підпрограми повернути порт у вихідне (неактивне) стані Це ж правило, до речі, діє і при виклику зовнішніх переривань

Приклад:CONFIG DEBOUNCE = 30  ‘30mS

Do Debounce P11, 1, Pr тут чекаємо надходження вис рівня

Debounce P10 , 0 , Pr , SUB

‘^ —– Викликати як підпрограму

‘^ —– Мітка переходу

‘^ ———- Що чекаємо (тут «0») ^ —————- імя порту, де чекаємо Loop

End

Pr:   Print «P10 was/is low» : Return

Дія:Оголосити процедуру (нову функцію) Визначення процедур дає можливість розширити мову введенням нових функцій У простому випадку ОБЬЯВЛЕНИЯ процедуру можна використовувати як звичайну підпрограму Повне використання переваг процедури полягає в можливості її виклику з різними змінними, підставляє в місці використання Важливо, щоб замінюють змінні були такого ж типу, що й оголошені Перед використанням процедури директивою DIM повинні бути оголошені використовувані змінні із зазначенням імені та типу Опис процедури має виробляється тільки після її оголошення

Синтаксис:DECLARE SUB Test [(var as type, var1 as type)] Test – імя процедури

Var, var1 – імена використовуваних змінних Число змінних не повинно перевищувати 10

Тип змінних – Bit, Byte, Word / Integer, Long або String

Приклад:Dim a As Byte, b1 As Byte, c As Byte

Declare Sub Test (a As Byte) визначення процедури

A = 1 : b1 = 2: c = 3

Print a b1 c

Call Test (b1) Test b1 – можна записувати і так

Print a b1 c End

Sub Test (a as byte) опис процедури

A = b1 b1 = c c = a + b1

End Sub

Дія:Зменшити або збільшити змінну на одиницю Виповнюється швидше, ніж оператор: var = var – 1 При впливі на знакові змінні ці оператори діють з урахуванням знака

Синтаксис:DECR var INCR var Var – змінна типу: Byte, Integer, Word, Long, Single

Приклад:Dim A As Byte A = 5 беззнакове значення

Decr A : Print A       ‘4

Incr A : Print A       ‘5

Дія:Визначити тип змінних Рівноцінно визначенню за використання оператора Dim, однак,

можливості трохи вже

Синтаксис:DEFBIT b1 – визначити b1 як бітову змінну

DEFBYTE c – C як однобайтових

DEFINT I – I як типу Integer (двухбайтовая зі знаком)

DEFWORD x – X як слово

Приклад:Defbit b: DefInt c визначити тип як біт і слово (integer) Set b1 set bit to 1

C = 10      ‘let c = 10

Дія:Визначити зображення додаткових символів з кодом від 0 до 7 або від 8 до 15 (ті ж самі) Для того, щоб нові символи почали діяти, необхідно виконати команду CLS Для виведення додаткових символів потрібно застосовувати функцію Chr ()

Синтаксис:DEFLCDCHAR char, r1, r2, r3, r4, r5, r6, r7, r8 Char – код (номер) визначається символу (0-7) r1-r8

Приклад:Deflcdchar 0,1,2,3,4,5,6,7,8 визначити спец символ

Cls очистка приводить в дію

Lcd Chr (0) показати зображення

End

Дія:Чекати Програмні тимчасові затримки (при 12 МГц): Delay – коротка на 100 мкс WAIT –

на вказане число секунд WAITMS – на вказане число мілісекунд

Синтаксис:DELAY, WAIT time (значення в мсек), WAITMS time (значення в сек)

Значення time може бути задане як константою, так і змінної

Приклад:WAIT 3 чекати 3 сек

WAITMS 200 чекати 200 мс

Дія:Визначити розмірність змінних

Синтаксис:DIM var AS [XRAM/IRAM] type

Var – будь-яке імя, коротке або довге Змінна може бути оголошена як масив

змінних з індексом, наприклад ar (n), і займатиме n послідовних елементів

Type – тип змінної Передбачені наступні значення: Bit, Byte, Word, Integer, Long, Single і String

XRAM – вказує, що змінна буде розташована в зовнішній памяті IRAM – розташовує змінну під Внетренняя памяті (за замовчуванням) Для строкових змінних потрібно обовязково вказувати довжину, наприклад: Dim s As XRAM String * n

Строкова мінлива займе в памяті n +1 байт Ще одна особливість визначення строковой

змінної в тому, що тут призначається тільки довжина буфера, в який будуть міститися рядки різної довжини Справжня довжина змінної, що носить імя буфера, залежить від її змісту, але не може (і не повинна) перевищувати призначеної довжини Бітові змінні

можуть розташовуватися тільки у внутрішній памяті Змінні можуть визначатися перед

використанням, тобто можуть розташовуватися по всьому тексту програми, однак, компілятор відразу зарезервує місце для змінних оголошуються пізніше

Приклад:Dim B1 As Bit біт може бути: 0 або 1

Dim A As Byte байт від 0 до 255

Dim C As Integer      ‘integer -32768 – +32767

Dim D As String * 10 рядок довжиною 10 символів

Dim ar (10) As Byte масив з 10 байтових змінних

Dim E As Const 5 константи

Dim F As Const &ampB1001B1

B1 = 1: Set B1 призначити біти (assign bits) A = 12: A = A + 1 байти

C = -12: C = C + 100 слова

Waitms E чекати 5 мс

Print F : Print B1

End

Дія:Заборонити або дозволити переривання Фактично, ці оператори тільки встановлюють або скидають відповідні біти регістра IE

Синтаксис:DISABLE interrupt, ENABLE interrupt Interrupt – одне з імен джерел переривань: INTERRUPTS, INT0, INT1, SERIAL, TIMER0, TIMER1, TIMER2 або PCA

Приклад:

ENABLE INTERRUPTS

‘enable the setting of interrupts

ENABLE TIMER0

DISABLE SERIAL DISABLE INTERRUPTS

‘enable TIMER0

‘disables the serial interrupt

‘disable all interrupts

Дія:Визначити цикл Оператори циклу DO і LOOP встановлюють необхідність безумовного повторення виконання операторів, розташованих між ними Припинення циклу відбувається тільки при виконанні умов, заданих за допомогою ключового слова UNTIL З циклу також можна вийти, за допомогою операторів GOTO або EXIT з конструкції перевірки умов IF .. END IF

Джерело: МЛКуліш, ДОВІДНИК З ПРОГРАМУВАННЯ 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>

*

*