ПМСУ1(6)
.docГОУ ВПО «Сургутский государственный университет Ханты-Мансийского автономного округа – Югры»
Факультет автоматики и телекоммуникаций
Кафедра автоматики и компьютерных систем
ОТЧЕТ
по лабораторной работе № 1
«Изучение особенностей функционирования КПР»
Выполнили: студенты
Принял: преподаватель
Запевалов Андрей Валентинович
Сургут
2011
Цель: создать программное обеспечение, отображающее основную надпись и реагирующее на запросы от трёх источников прерываний. Подпрограммы обслуживания запросов осуществляют отображение на дисплее в течение 3-5 секунд определённой надписи.
Адреса КПР: master – 98h, 99h.
slave – 9Ch, 9Dh.
При активации запросов IRQ3, IRQ4, IRQ5 взводятся триггеры, расположенные по адресам В1, В2, В3 – соответственно. При выходе из подпрограммы обслуживания данных прерываний триггеры необходимо сбрасывать.
При программировании Ведущему сообщить о том, что к его 0-му и 7-му IRQ подключен Ведомый. Ведомому назначить номер №7 и замаскировать все его запросы.
Вариант №9.
Основная надпись |
№ IRQ |
Надпись |
№ IRQ |
Надпись |
№ IRQ |
Надпись |
сосна |
5 |
береза |
3 |
граб |
4 |
роза |
Блок-схема алгоритма:
Обслуживание IRQ5: Обслуживание IRQ3: Обслуживание IRQ4:
Основная программа:
Код программы:
Адрес |
Метка |
Машинный код |
Ассем. код |
Комментарии |
0800 |
|
3E |
MVI A,00h |
Обнуление аккумулятора |
0801 |
|
00 |
|
|
0802 |
|
D3 |
OUT B3h |
Сброс триггера В3 |
0803 |
|
B3 |
|
|
0804 |
|
D3 |
OUT B1h |
Сброс триггера В1 |
0805 |
|
B1 |
|
|
0806 |
|
D3 |
0UT B2h |
Сброс триггера В2 |
0807 |
|
B2 |
|
|
0808 |
|
3E |
MVI A,14h |
Инициализация КИ1 |
0809 |
|
14 |
|
|
080A |
|
D3 |
OUT 98h |
Отправка КИ1 Ведущему |
080B |
|
98 |
|
|
080C |
|
D3 |
OUT 9Ch |
Отправка КИ1 Ведомому |
080D |
|
9C |
|
|
080E |
|
3E |
MVI A,09h |
Инициализация КИ2 |
080F |
|
09 |
|
|
0810 |
|
D3 |
OUT 99h |
Отправка КИ2 Ведущему |
0811 |
|
99 |
|
|
0812 |
|
D3 |
OUT 9Dh |
Отправка КИ2 Ведомому |
0813 |
|
9D |
|
|
0814 |
|
3E |
MVI A,81h |
Инициализация КИ3 |
0815 |
|
81 |
|
|
0816 |
|
D3 |
OUT 99h |
Отправка КИ3 Ведущему |
0817 |
|
99 |
|
|
0818 |
|
3E |
MVI A,07h |
Инициализация КИ3 |
0819 |
|
07 |
|
|
081A |
|
D3 |
OUT 9Dh |
Отправка КИ3 Ведомому |
081B |
|
9D |
|
|
081C |
|
3E |
MVI A,C7h |
Инициализация КО1 |
081D |
|
C7 |
|
|
081E |
|
D3 |
OUT 99h |
Отправка КО1 Ведущему |
081F |
|
99 |
|
|
0820 |
|
3E |
MVI A, FFh |
Инициализация КО1 |
0821 |
|
FF |
|
|
0822 |
|
D3 |
OUT 9Dh |
Отправка КО1 Ведомому |
0823 |
|
9D |
|
|
0824 |
|
3E |
MVI A,C4h |
Инициализация КО2д |
0825 |
|
C4 |
|
|
0826 |
|
D3 |
OUT 98h |
Отправка КО2д Ведущему |
0827 |
|
98 |
|
|
0828 |
|
D3 |
OUT 9Ch |
Отправка КО2д Ведомому |
0829 |
|
9C |
|
|
082A |
|
FB |
EI |
Разрешение прерываний |
082B |
M1 |
21 |
LHI H,0BFAh |
Инициализация указателя |
082C |
|
FA |
|
|
082D |
|
0B |
|
|
082E |
|
36 |
MVI M,00h |
Запись кода «пробел» |
082F |
|
00 |
|
|
0830 |
|
23 |
INX H |
Инкремент указателя |
0831 |
|
36 |
MVI M,77h |
Запись кода буквы «А» |
0832 |
|
77 |
|
|
0833 |
|
23 |
INX H |
Инкремент указателя |
0834 |
|
36 |
MVI M,76h |
Запись кода буквы «Н» |
0835 |
|
76 |
|
|
0836 |
|
23 |
INX H |
Инкремент указателя |
0837 |
|
36 |
MVI M,39h |
Запись кода буквы «С» |
0838 |
|
39 |
|
|
0839 |
|
23 |
INX H |
Инкремент указателя |
083A |
|
36 |
MVI M,3Fh |
Запись кода буквы «О» |
083B |
|
3F |
|
|
083C |
|
23 |
INX H |
Инкремент указателя |
083D |
|
36 |
MVI M,39h |
Запись кода буквы «С» |
083E |
|
39 |
|
|
083F |
|
CD |
CALL 01C8h |
Сканирование дисплея |
0840 |
|
C8 |
|
|
0841 |
|
01 |
|
|
0842 |
|
C3 |
JMP M1 |
Безусловный переход по метке М1 |
0843 |
|
2B |
|
|
0844 |
|
08 |
|
|
0845 |
N1 |
F5 |
PUSH PSW |
Запись в стек слова состояния |
0846 |
|
C5 |
PUSH B |
Запись в стек пары ВС |
0847 |
|
E5 |
PUSH H |
Запись в стек пары HL |
0848 |
|
FB |
EI |
Разрешение прерываний |
0849 |
|
06 |
MVI B,02h |
Инициализация счетчика№1 |
084A |
|
02 |
|
|
084B |
M3 |
0E |
MVI C, FFh |
Инициализация счетчика №2 |
084C |
|
FF |
|
|
084D |
M2 |
21 |
LHI H,0BFAh |
Инициализация указателя |
084E |
|
FA |
|
|
084F |
|
0B |
|
|
0850 |
|
36 |
MVI M,77h |
Запись кода буквы «А» |
0851 |
|
77 |
|
|
0852 |
|
23 |
INX H |
Инкремент указателя |
0853 |
|
36 |
MVI M,4Fh |
Запись кода буквы «З» |
0854 |
|
4F |
|
|
0855 |
|
23 |
|
Инкремент указателя |
0856 |
|
36 |
MVI M,79h |
Запись кода буквы «Е» |
0857 |
|
79 |
|
|
0858 |
|
23 |
INX H |
Инкремент указателя |
0859 |
|
36 |
MVI M,73h |
Запись кода буквы «Р» |
085A |
|
73 |
|
|
085B |
|
23 |
INX H |
Инкремент указателя |
085C |
|
36 |
MVI M,79h |
Запись кода буквы «Е» |
085D |
|
79 |
|
|
085E |
|
23 |
INX H |
Инкремент указателя |
085F |
|
36 |
MVI M,7Dh |
Запись кода буквы «Б» |
0860 |
|
7D |
|
|
0861 |
|
CD |
CALL 01C8h |
Сканирование дисплея |
0862 |
|
C8 |
|
|
0863 |
|
01 |
|
|
0864 |
|
0D |
DCR C |
Декремент счетчика №2 |
0865 |
|
C2 |
JNZ M2 |
Переход на М2 если Z=0 |
0866 |
|
4D |
|
|
0867 |
|
08 |
|
|
0868 |
|
05 |
DCR B |
Декремент счетчика №1 |
0869 |
|
C2 |
JNZ M3 |
Переход на М3 если Z=0 |
086A |
|
4B |
|
|
086B |
|
08 |
|
|
086C |
|
3E |
MVI A,00h |
Обнуление аккумулятора |
086D |
|
00 |
|
|
086E |
|
D3 |
OUT B3h |
Сброс триггера B3 |
086F |
|
B3 |
|
|
0870 |
|
3E |
MVI A,20h |
Инициализация КО2а |
0871 |
|
20 |
|
|
0872 |
|
D3 |
OUT 98h |
Отправка КО2а Ведущему |
0873 |
|
98 |
|
|
0874 |
|
E1 |
POP H |
Извлечение пары HL из стека |
0875 |
|
C1 |
POP B |
Извлечение пары BC из стека |
0876 |
|
F1 |
POP PSW |
Извлечение из стека слова состояния |
0877 |
|
C9 |
RET |
Выход из подпрограммы |
0878 |
N2 |
F5 |
PUSH PSW |
Запись в стек слова состояния |
0879 |
|
C5 |
PUSH B |
Запись в стек пары ВС |
087A |
|
E5 |
PUSH H |
Запись в стек пары HL |
087B |
|
FB |
EI |
Разрешение прерываний |
087C |
|
06 |
MVI B,02h |
Инициализация счетчика№1 |
087D |
|
02 |
|
|
087E |
M5 |
0E |
MVI C, FFh |
Инициализация счетчика №2 |
087F |
|
FF |
|
|
0880 |
M4 |
21 |
LXI H,0BFAh |
Инициализация указателя |
0881 |
|
FA |
|
|
0882 |
|
0B |
|
|
0883 |
|
36 |
MVI M,00h |
Запись кода «пробел» |
0884 |
|
00 |
|
|
0885 |
|
23 |
INX H |
Инкремент указателя |
0886 |
|
36 |
MVI M,00h |
Запись кода «пробел» |
0887 |
|
00 |
|
|
0888 |
|
23 |
INX H |
Инкремент указателя |
0889 |
|
36 |
MVI M,7Dh |
Запись кода буквы «Б» |
088A |
|
7D |
|
|
088B |
|
23 |
INX H |
Инкремент указателя |
088C |
|
36 |
MVI M,77h |
Запись кода буквы «А» |
088D |
|
77 |
|
|
088E |
|
23 |
INX H |
Инкремент указателя |
088F |
|
36 |
MVI M,73h |
Запись кода буквы «Р» |
0890 |
|
73 |
|
|
0891 |
|
23 |
INX H |
Инкремент указателя |
0892 |
|
36 |
MVI M,31h |
Запись кода буквы «Г» |
0893 |
|
31 |
|
|
0894 |
|
CD |
CALL 018Ch |
Сканирование дисплея |
0895 |
|
8C |
|
|
0896 |
|
01 |
|
|
0897 |
|
0D |
DCR C |
Декремент счетчика №2 |
0898 |
|
C2 |
JNZ M4 |
Переход на М4 если Z=0 |
0899 |
|
80 |
|
|
089A |
|
08 |
|
|
089B |
|
05 |
DCR B |
Декремент счетчика №1 |
089C |
|
C2 |
JNZ M5 |
Переход на М5 если Z=0 |
089D |
|
7E |
|
|
089E |
|
08 |
|
|
089F |
|
3E |
MVI A,00h |
Обнуление аккумулятора |
08A0 |
|
00 |
|
|
08A1 |
|
D3 |
OUT B1h |
Сброс триггера B1 |
08A2 |
|
B1 |
|
|
08A3 |
|
3E |
MVI A,20h |
Инициализация КО2а |
08A4 |
|
20 |
|
|
08A5 |
|
D3 |
OUT 98h |
Отправка КО2а Ведущему |
08A6 |
|
98 |
|
|
08A7 |
|
E1 |
POP H |
Извлечение пары HL из стека |
08A8 |
|
C1 |
POP B |
Извлечение пары BC из стека |
08A9 |
|
F1 |
POP PSW |
Извлечение из стека слова состояния |
08AA |
|
C9 |
RET |
Выход из подпрограммы |
08AB |
N3 |
F5 |
PUSH PSW |
Запись в стек слова состояния |
08AC |
|
C5 |
PUSH B |
Запись в стек пары ВС |
08AD |
|
E5 |
PUSH H |
Запись в стек пары HL |
08AE |
|
FB |
EI |
Разрешение прерываний |
08AF |
|
06 |
MVI B,02h |
Инициализация счетчика№1 |
08B0 |
|
02 |
|
|
08B1 |
M7 |
0E |
MVI C, FFh |
Инициализация счетчика №2 |
08B2 |
|
FF |
|
|
08B3 |
M6 |
21 |
LHI H,0BFAh |
Инициализация указателя |
08B4 |
|
FA |
|
|
08B5 |
|
0B |
|
|
08B6 |
|
36 |
MVI M,00h |
Запись кода «пробел» |
08B7 |
|
00 |
|
|
08B8 |
|
23 |
INX H |
Инкремент указателя |
08B9 |
|
36 |
MVI M,00h |
Запись кода «пробел» |
08BA |
|
00 |
|
|
08BB |
|
23 |
INX H |
Инкремент указателя |
08BC |
|
36 |
MVI M,77h |
Запись кода буквы «А» |
08BD |
|
77 |
|
|
08BE |
|
23 |
INX H |
Инкремент указателя |
08BF |
|
36 |
MVI M,4Fh |
Запись кода буквы «З» |
08C0 |
|
4F |
|
|
08C1 |
|
23 |
INX H |
Инкремент указателя |
08C2 |
|
36 |
MVI M,3Fh |
Запись кода буквы «О» |
08C3 |
|
3F |
|
|
08C4 |
|
23 |
INX H |
Инкремент указателя |
08C5 |
|
36 |
MVI M,73h |
Запись кода буквы «Р» |
08C6 |
|
73 |
|
|
08C7 |
|
CD |
CALL 01C8h |
Сканирование дисплея |
08C8 |
|
C8 |
|
|
08C9 |
|
01 |
|
|
08CA |
|
0D |
DCR C |
Декремент счетчика №2 |
08CB |
|
C2 |
JNZ M6 |
Переход на М6 если Z=0 |
08CC |
|
B3 |
|
|
08CD |
|
08 |
|
|
08CE |
|
05 |
DCR B |
Декремент счетчика №1 |
08CF |
|
C2 |
JNZ M7 |
Переход на М7 если Z=0 |
08D0 |
|
B1 |
|
|
08D1 |
|
08 |
|
|
08D2 |
|
3E |
MVI A,00h |
Обнуление аккумулятора |
08D3 |
|
00 |
|
|
08D4 |
|
D3 |
OUT B2h |
Сброс триггера B2 |
08D5 |
|
B2 |
|
|
08D6 |
|
3E |
MVI A,20h |
Инициализация КО2а |
08D7 |
|
20 |
|
|
08D8 |
|
D3 |
OUT 98h |
Отправка КО2а Ведущему |
08D9 |
|
98 |
|
|
08DA |
|
E1 |
POP H |
Извлечение пары HL из стека |
08DB |
|
C1 |
POP B |
Извлечение пары BC из стека |
08DC |
|
F1 |
POP PSW |
Извлечение из стека слова состояния |
08DD |
|
C9 |
RET |
Выход из подпрограммы |