DIV10; поділ приватного на 10
SWAP A; передача залишку в старшу тетраду A
ORL A, R7; передача R7 ​​в молодшу тетраду A
JMP EXIT; вихід з процедури
; підпрограма поділу на 10
; вихідний двійковий код в акумуляторі
; результат: в R1 - приватне, в акумуляторі - Залишок
DIV10: MOV R1, # 0; скидання R1
SUB10: ADD A, # (NOT (10) +1); віднімання 10 з діленого
INC R1; інкремент приватного
JC SUB10; цикл, якщо залишок> = 0
DEC R1; відновлення приватного
ADD A, # 10; відновлення залишку
RET; повернення
EXIT: ...;
У результаті виконання процедури в молодшій тетраді R1 зберігаються сотні, в акумуляторі - десятки і одиниці двійковій-десяткового еквівалента вихідного двійкового числа.
3.4.3. Вивчення апаратних і програмних засобів введення/виведення інформації мікроконтролера ВЕ48
1) Вивчити організацію каналів введення/виведення інформації мікроконтролера ВЕ48, інтерфейс розширення введення/виводу;
2) Розглянути команди, які обслуговують простір введення/виводу;
3) Ознайомитися з наведеними нижче прикладами програм мовою асемблера;
4) Провести введення, налагодження і трансляцію в об'єктний код цих програм;
5) Виконати програми по кроках з переглядом результатів виконання в регістрах і оперативної пам'яті.
Приклад 3.1 . Ввести байт з порту 1 і передати його в порт 2:
TRAN: MOV A, # 0FF; настройка порту 1 на введення
OUTL P1, A;
IN A, P1; введення байта з порту 1
OUTL P2, A; висновок байта в порт 2
Приклад 3.2 . Увести дані з порту P7:
INPUT: MOVD A, P7; пересилання чотирьох бітів з порту 7
; в молодшу тетраду акумулятора
Приклад 3.3 . Маскування під час вводу. Ввести в регістр R7 інформацію з ліній 0, 1, 3, 4 і 7 порту 1:
IN A, P1; введення байта з порту 1
ANL A, # 10011011B; маскування
MOV R7, A; передача
Приклад 3.4 . Ввести в акумулятор дані з порту 2 і виділити необхідні біти по масці, що знаходиться в R0:
IN A, P2; введення байта з порту 2
ANL A, R0; маскування
Приклад 3.5 . Видати вміст акумулятора в послідовному коді через нульову лінію порту 1, залишаючи без зміни інші біти порту. Передачу вести, починаючи з молодшого біта:
MOV R1, # 8; лічильник біт
LOOP: JB0 ONE; перехід, якщо біт A.0 = 1
ANL P1, # (NOT 1); скидання P1.0
JMP NEXT;
ONE: ORL P1, # 1; установка P1.0
JMP NEXT; надлишкова команда для вирівнювання
; часу передачі 0 і 1
NEXT: RR A; зсув акумулятора вправо (підготовка до
DJNZ R1, LOOP; передачу чергового біта)
Приклад 3.6 . Налаштувати біти 0-3 порту 1 на введення:
ORL P1, # 0F; установка бітів P1.0 ... P1.3
Приклад 3.7 . Очистити біти 4-7 порту 2:
ANL P2, # 0F; скидання бітів P2.4 ... P2.7
Приклад 3.8 . Організувати очікування появи нульового рівня на вході T0:
WAIT: JT0 WAIT; перехід на WAIT, якщо на вході T0 одиниця
Приклад 3.9 . Організувати очікування поява одиничного рівня на вході в припущенні, що зовнішні переривання заборонені:
DIS I; заборона переривань по INT
WAIT: JNI WAIT; перехід на WAIT, якщо на вході INT нуль
3.4.4. Вивчення засобів реального часу мікроконтролера ВЕ48
1) Вивчити організацію таймера/лічильника і системи переривань мікроконтролера ВЕ48;
2) Розглянути команди управління засобами реального часу;
3) Ознайомитися з наведеними нижче прикладами програм мовою асемблера;
4) Провести введення, налагодження і трансляцію в об'єктний код цих програм;
5) Виконати програми по кроках з переглядом результатів виконання в регістрах і оперативної пам'яті.
Приклад 4.1 . Дочекатися надходження на вхід T1 100 імпульсів і перейти за міткою PULSE:
MOV A, # 156D; A = (256-100)
MOV T, A; попереднє встановлення лічильника
STRT CNT; запуск лічильника
WAIT: JTF PULSE; перехід, якщо пройшло 100 імпульсів
JMP WAIT;
PULSE: ...
Приклад 4.2 . Заборонити переривання від таймера, але дозволити переривання після восьми сигналів переповнення таймера. При переході до процедури обробки переривання зупинити таймер. Сигнали переповнення підраховувати в регістрі 5:
START: DIS TCNTI; заборона переривань від таймера
CLR A; скидання акумулятора
MOV T, A; скидання таймера
MOV R5, A; скидання регістра R5
STRT T; запуск таймера
M1: JTF COUNT; якщо TF = 1, то перехід до COUNT і скидання TF
JMP M1; цикл
COUNT: INC R5; інкремент ре гістре R5
MOV A, R5; пересилання вмісту R5 в акумулятор
JB3 INT; перехід до п...