- •Шина керування (Control bus)
- •1.Організація однокристальних еом
- •1.3 Організація вводу/виводу інформації
- •1.4. Блок керування
- •1.5. Логічна схема умовних переходів
- •1.6.Режим преривання
- •1.7.Таймер/лічильник
- •2.Повноекраний налагоджувач ассемблерних програм для однокристальних еом кр1816ве48
- •2.2.Команди налагоджувача.
- •2.3.Повноекранне редагування.
- •2.4.Режим Ассемблера.
- •2.5. Робота з точками преривання.
- •3.Система команд оеом кр1816
- •3.1.Група команд пересилки данних
- •Рпзп Програм і
- •Порт р1
- •Порт р2
- •3.2.Група команд арифметичних та логічних операцій
- •3.3.Група команд вводу-виводу інформації.
- •3.4.Група команд передачі керування.
- •3.5.Група команд операцій з таймером
- •3.6.Група команд керування режимом роботи оеом
- •4.Приклади написання програм для оеом кр1816 ве48
- •4.1. Приклади використання команд передачі данних
- •4.2. Приклади використання команд арифметичних операцій.
- •4.3. Приклади використання команд логічних операцій
- •4.4. Приклади використання команд передачі керування і команд керування режимом оеом
4.3. Приклади використання команд логічних операцій
3.1
Маскування при вводі. Ввести в регістр R7 інформацію з ліній 0,1,3,4,7 порта1
IN A,P1 ; ввести байт з пору 1
ANL A,#10011011B ; маскування
MOV R7,A ; передача
3.2
Ввести в аккумулятор данні з порту 2 і виділити необхідні біти по масці, щознаходиться в R0:
IN A,P2 ; ввод з порта 2
ANLA,R0 ; маскування
3.3
Виконати логічний здвиг вліво двохбайтного слова, що розміщується в (R2) (A)
SHIFLL:RLC A ; здвиг молодшого байта
XCH A,R2 ; обмін аккумулятора та розширювача
RLC A ; здвиг старшого байта
XCH A,R2 ; обмін
3.4
Перемножити аккумулятор на число 2 в степені Х, де Х- число (не більше 8), що зберігається в R2. Перемноження на 2 заміняється арифметичним здвигом вліво аккумулятора і розширювача R1
MOV R1,#0 ; зброс R1
CLR C ; зброс признаку переносу
LOOP: RLC A ; арифметичний здвиг вліво обєднаного 16 біт-
XCH A,R1 ного результата в регістровій парі (R1) (A)
RLC A
XCH A,R1
DJNZ R2,LOOP ; цикл
3.5
Видати вміст аккумулятора в послідовному коді через нульову лінію порта 1, залишаючи без зміни решту бітів порта. Передачу вести, починаючи з молодшого біта
MOV R1,#8 ; лічильник біт
LOOP: JB0 ONE ; перехід, якщо біт А.0 рівняється 1
ANL P1,#(NOT 1) ; зброс Р1.0
JMP NEXT ;
ONE ORL P1,#1 ; установка Р1.0
JMP NEXT ; надмірна команда для вирівнювання
часу передачі 0 та 1
NEXT RR A ; здвиг аккумулятора вправо( підготовка до
DJNZ R1,LOOP ; передачі чергового біта)
3.6
Налагодити біти 0-3 порта 1 на ввод.
ORL P1,#0FH ; установка бітів Р1.0…Р1.3
3.7
Очистити біти 4-7 порта 2
ANL P2,#0FH ; зброс бітів Р2.4..Р2.7
3.8
Видати в лінію 0 порта 4 значення четвертого біта аккумулятора
SWAP A ; обмін бітів 0 і 4 аккумулятора
ANL A,#1 ; виділення біта А.0
ORLD P4,A ; установка Р4.0, якщо А.0=1
ORL A,#0EH ; установка бітів 1…3 аккумулятора
ANLD P 4,A ; зброс Р4.0, якщо А.0=0
3.9
Визначити парність числа одиниць в аккумуляторі.
CLR F0 ; зброс F0
MOV R7,#8 ; число повторів
LOOP: RRC A ; пересилка біта А.0 в перенос
JNC NEXT ; пропустити, якщо біт =0
CPL F0 ; підрахунок парітету
NEXT: DJNZ R7,LOOP ; повторити 8 раз
Після виконання програми аккумулятор зберігає своє значення, признак F0
буде встановленим, якщо число одиниць в аккумуляторі було непарним. Приз-нак F0 входить до складу ССП і в даному прикладі задається користувачем для виконання функцій признака паритету.