Uploaded by Максим Бойков

1

advertisement
Нижегородский Государственный Технический Университет
им. Р.Е. Алексеева
Отчет по лабораторной работе №1
Предмет: “ Интерфейсы периферийных устроиств”
Выполнил студент:
Группа 19-ВМв, 5 курс
Бойков М.В.
Проверил преподаватель:
Киселев Ю. Н.
Нижний Новгород, 2023г.
Цель работы: Ввод данных по прерываниям и вывод данных в программноуправляемом режиме.
Задание: В схеме микро-ЭВМ к лаб.раб. 2 по МПС для управления
индикатором и ввода данных из клавиатуры использовать контроллер
КР580ВВ55. Ввод данных должен выполняться по нажатию спец. кнопки
*ПУСК*.по прерываниям ЦП. Ввод вектора - с помощью шинного
формирователя, вектор прерывания RST.5. Дополнить схему отображения
еще одним одноместным индикатором с управлением от полубайта порта С.
Составить схему в Анализере и определить (задать) адреса регистров
контроллера, разработать программу для ввода байта из клавиатуры и вывода
на индикатор в десятичной системе.
Ход работы:
Схема микро-ЭВМ
Программа .asm:
;В схеме использован порт С (С7-С4 т.к. они не задействованы в управлении
обменом) для отображения числа сотен,
;число формируется программой *convert* в памяти в виде 0Nh, потом оно
преобразуется к виду N0h
; и выводится в порт С. При этом сбрасывается разряд С2, который разрешает
формирование INT от порта B
org 0
lxi sp,1000h
mvi a,86h
out 03h
mvi a,05h
out 03h
jmp m
skip 38h
jmp vvod
:m
ei
nop
jmp m
skip 50h
:vvod
in 01h
call convert
lxi h,stroka
mov a,m
;передвигаю число сотен в старшие разряды аккумулятора для вывода в С7С4 порта С
rlc
rlc
rlc
rlc
out 02h ;запись в С7-С4 чтобы отобразить числа сотен, при этом появляется
запрет формирования INT
inx h
mov a,m
rlc
rlc
rlc
rlc
ani 0f0h
inx h
ora m
out 00h
mvi a,05h
out 03h ;восстанавливаю разрешение формирования INT от канала B
jmp m
;преобразуемое число должно находится в Аккумуляторе
:convert ; конвертирование двоичного байта в десятичное число
push d
push psw
push h
lxi h,stroka ;Строка - адрес памяти куда будет записано число сотен, Строка+1
- чиспо десятков,
; Строка+2 - число единиц результата.
const stroka 0100h ;задание начального адреса Строки
; d,e.a рабочие регистры, sto-двоичный эквивалент 100(64h), dec-двоичный
эквивалент 10(0Ah)
const sto 64h ;
const dec 0ah ;
lxi d,0000h ;обнуление регистровой пары d
;mvi a,bait
;определение числа сотен
:m1
sui sto ;из исходного числа вычитаем двоичный эквивалент 100
jc m2 ;если флаг С = 1, значит был заем и исходное число меньше 100,
уходим на определение числа десятков,
; иначе подсчитываем число сотен
inr d
jmp m1
;подсчет числа десятков, но прежде надо восстановить число
:m2
mov m,d ;сохранение числа сотен в памяти
adi sto ;восстановление
inx h
:m3
sui dec ;
jc m4
inr e
jmp m3
:m4
adi dec ;восстановление
mov m,e ;сохранение числа десятков
inx h
mov m,a ;сохранение числа единиц
pop h
pop psw
pop d
ret
Файл листинга ASM80
Стр. Адрес Код
---- ------- ---0001 0000
0002 0000
Мнемоники
---------
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0000
0000
org 0
0000 31 00 10
lxi sp,1000h
0003 3E 86
mvi a,86h
0005 D3 03
out 03h
0007 3E 05
mvi a,05h
0009 D3 03
out 03h
000B C3 3B 00
jmp m
000E 00 00 00 00 00 00 00 00 00 skip 38h
00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00
00 00 00 00 00 00
0038 C3 50 00
jmp vvod
003B
:m
003B FB
ei
003C 00
nop
003D C3 3B 00
jmp m
0040 00 00 00 00 00 00 00 00 00 skip 50h
00 00 00 00 00 00 00
0050
:vvod
0050 DB 01
in 01h
0052 CD 72 00
call convert
0055 21 00 01
lxi h,stroka
0058 7E
mov a,m
0059
0059 07
rlc
005A 07
rlc
005B 07
rlc
005C 07
rlc
005D D3 02
out 02h
005F 23
inx h
0060 7E
mov a,m
0061 07
rlc
0062 07
rlc
0063 07
rlc
0064 07
rlc
0065 E6 F0
ani 0f0h
0067 23
inx h
0068 B6
ora m
0069 D3 00
out 00h
006B 3E 05
mvi a,05h
006D D3 03
out 03h
006F C3 3B 00
jmp m
0072
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0072
0072
0072 D5
0073 F5
0074 E5
0075 21 00 01
0078
0078
0078
0078
0078
0078 11 00 00
007B
007B
007B
007B D6 64
007D DA 84 00
0080
0080 14
0081 C3 7B 00
0084
0084
0084 72
0085 C6 64
0087 23
0088
0088 D6 0A
008A DA 91 00
008D 1C
008E C3 88 00
0091
0091 C6 0A
0093 73
0094 23
0095 77
0096 E1
0097 F1
0098 D1
0099 C9
009A
009A
009A
:convert
push d
push psw
push h
lxi h,stroka
const sto 64h ;
const dec 0ah ;
lxi d,0000h ;
;mvi a,bait
;
:m1
sui sto ;
jc m2 ;
;
inr d
jmp m1
;
:m2
mov m,d ;
adi sto ;
inx h
:m3
sui dec ;
jc m4
inr e
jmp m3
:m4
adi dec ;
mov m,e ;
inx h
mov m,a ;
pop h
pop psw
pop d
ret
Отладчик:
Осцилограф:
Состояние KB580BB55
Индикаторы:
Вывод: Составили схему в Анализере и определили адреса регистров
контроллера, написали программу для ввода байта из клавиатуры и вывода
на индикатор в десятичной системе.
Download