Застосування логічних функцій BASCOM-8051

Сутність логічних функцій, очевидно, не потребує пояснень, тому зупинимося тільки на особливостях їх застосування Логічні операції проводяться тільки над бітовими, одно-, двох-і чотирьохбайтового змінними і правильно виконуються тільки при однаковій розмірності вихідних змінних Використання різних типів змінних неприпустимо, тому що виходять непередбачувані результати, і відбувається модифікація регістрів, що не беруть участь в призначеної операції Як операнда логічних операцій можуть застосовуватися і константи Форма запису констант повинна бути зрозумілою компілятору, тк неоднозначна запис також може дати невірний результат Логічні операції з числами з плаваючою точкою не виконуються і навіть не компілюються (пропускаються) На жаль, компілятор абсолютно не визначає помилки призначення невірних операндів логічних операцій Це завдання надана програмісту Нижче наведена демонстраційна програма логічних операцій У ній показано можливість (або неможливість) їх застосування та час виконання

‘————————————————- — Тестування логічних операцій

‘—————————————————-

$large

Dim Cnt As Const 5 число 5

Dim Bt As Bit Dim, Byt1 As Byte визначимо по парі всіх типів змінних

Dim Byt As Byte , Byt1 As Byte Dim Wrd As Word , Wrd1 As Word

Dim Intg As Integer , Intg1 As Integer

Dim Lng As Long , Lng1 As Long

Dim Sng As Single , Sng1 As Single

‘————————————————- — Set Bt: Reset Bt1 встановити біти

Bt = Bt And Bt1: Bt = Not Bt операція над бітами

Print Bt висновок значення біта

‘—————————————————-

Byt = Byt Or Bt це абсолютно неприпустимо

Byt1 = Byt1 Or & HAA правильно Byt1 = Byt And Byt1 правильно Wrd1 = & H1234: Byt = & H77: Intg = 0

Intg1 = Byt Or Wrd1 невірно операція відбудеться тільки з молодшими розрядами Intg = 1277H дивись наступний рядок Intg = & H1234: Wrd1 = & H77

Intg1 = Byt: Intg1 = Wrd1 Or Intg1 потрібно робити так

‘Результат: Intg = 0077H

Wrd = 1234 Or 5678 операнди десяткові константи Wrd1 = Wrd Xor 131112 результат буде неправильним Lng = Lng Xor & H10000000 правильно

‘—————————————————-

Sng = -1: Sng1 = 1000 над числами з плав точкою лог оп

Sng1 = Not Sng1 не виконуються

‘————————————————- — продуктивність логічних операцій

Byt = Byt And Byt1 11 тактів

Byt = Byt Or Byt1 11 тактів Byt = Byt Xor Byt1 11 тактів Wrd = Wrd And Wrd1 20 тактів Intg = Intg And Intg1 20 тактів Lng = Lng And Lng 93 Такту End

‘—————————————————-

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

*

*