Нижегородский Государственный Технический Университет им. Р.Е. Алексеева Отчет по лабораторной работе №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 Индикаторы: Вывод: Составили схему в Анализере и определили адреса регистров контроллера, написали программу для ввода байта из клавиатуры и вывода на индикатор в десятичной системе.