Лабораторная 21
.doc1. Аглоритм
Цикл:
-
считываем байт с порта Р3
-
сравниваем 3 и 7 биты
-
если они равны, обнуляем весь байт
-
отправляем байт на порт Р1
конец цикла
Обработчик прерываний: В начале исполнения выдается нулевой код. При каждом следующем вызове к педыдущему значению прибавляется +3, а результат инвертируется
2. Блок-схема
3. Текст программы
jmp start
org 100H
start:
mov R6,#5
mov R7,#0
mov R5,#0
REP:
mov A,P3
mov R3,A
subb A,R7
jnz PROG
jmp REP
PROG:
setb IE.7
setb IE.0
setb TCON.0
mov A,R3
mov R2,A
mov C,acc.7
mov acc.3,C
subb A,R2
jnz NULL
mov R2,#0
NULL:
mov A,R2
mov P1,A
djnz R6,REP
ORG 03
mov A,R5
add A,#3
cpl A
mov R5,A
clp IE.0
clp TCON.0
reti
3. Таблица трассировки
команда |
действие |
mov R6, #5
|
R6:=5 |
mov R7,#0 |
R6:=0
|
mov R5,#0 |
R5:=0
|
mov A,P3
|
A:=P3 |
mov R3,A
|
R3:=A |
subb A,R7 |
A-R7
|
setb IE.7
|
IE:=1xxxxxxx
|
setb IE.0
|
IE:=xxxxxxx1
|
setb TCON.0
|
TCON:=xxxxxxx1
|
mov A,R3
|
A:=R3 |
mov R2,A
|
R2:=A |
mov C,acc.7
|
C:=B7 |
mov acc.3,C |
B3:=C |
subb A,R2 |
A-R2
|
mov R1,A
|
R1:=A
|
mov R2,#0 |
R2:=00000000 |
mov A,R2
|
A:=R2 |
mov P1,A
|
P1:=A |
Обработчик прерываний |
|
mov A,R5
|
A:=R5 |
add A,#3
|
A:=A+3 |
cpl A
|
|
mov R5,A
|
R5:=A |
cpl IE.0
|
|
cpl TCON.0
|
|
reti
|
Возврат из подпрограммы прерывания |
|
|
|
4. Текст входного и выходного файлов
вход выход
1. AA (10101010) 1. 00 (00000000)
2. B3 (10110011) 2. 00 (00000000)
3. C2 (11000010) 3. C2 (11000010)
4. D8 (11011000) 4. D8 (11011000)
5. E5 (11100101) 5. E5 (11100101)