Федеральное агентство по образованию и науке
Российский государственный
профессионально-педагогический университет
Кафедра микропроцессорной управляющей вычислительной техники
Отчёт по лабораторной работе №3
«Изучение временных диаграмм выполнения команд ввода и вывода информации»
Выполнил: Шайдуров А.П.
Проверил: Мешков В.В.
Екатеринбург, 2007
Цель работы: изучение особенностей функционирования микропроцессора при выполнении команд ввода и вывода информации, приобретение навыков программного управления клавиатурой и дисплеем УМК.
Общие сведения
Команды ввода и вывода информации обеспечивают информационный обмен данными между микропроцессором и устройствами ввода-вывода (портами вода/вывода) микропроцессорной системы. В табл. представлены команды указанной группы.
Мнемоника команд |
Число байт |
Выполняемые действия |
Состав машинных циклов/количество тактов в циклах |
Команды ввода информации в аккумулятор из порта ввода |
|||
IN<В2> |
2 |
(А)<=port<В2> |
1/4,2/3,6/3 |
Команды вывода информации в порт вывода из аккумулятора |
|||
OUT<В2> |
2 |
Port<В2><=(А) |
1/4,2/3,7/3 |
Шестипозиционный дисплей на семисегментных полупроводниковых индикаторах работает в программном мультиплексном режиме, причем для выдачи байта индикации используется порт В, а для выбора позиции индикации порт А. Выбор столбца опроса на клавиатуре осуществляется через тот же порт, через который производится выбор позиции индикации, а считывание кода нажатой клавиши производится через порт С.
Если нажатая клавиша находится в верхней строке, то считывается код 64h, если во второй сверху – 34h, в третьей сверху – 54h и, наконец, в нижней – 70h. Если не нажата ни одна клавиша, то код равен 74h. Считывании кода отличного от указанных означает, что либо нажаты несколько клавиш, либо произошла какая - либо ошибка.
Блок схема
Листинг программы
0800 |
01 |
01 |
|
0801 |
02 |
02 |
|
0802 |
04 |
04 |
|
0803 |
08 |
08 |
|
0804 |
10 |
10 |
|
0805 |
20 |
20 |
|
0806 |
3E |
3E |
V |
0807 |
78 |
78 |
t |
0808 |
40 |
40 |
- |
0809 |
66 |
66 |
4 |
080A |
06 |
06 |
1 |
080B |
6D |
6D |
5 |
Задержка: |
|||
0810 |
MVI A |
3E |
А←05 |
0811 |
05 |
05 |
|
0812 |
MVI B |
06 |
В←FF |
0813 |
FF |
FF |
|
0814 |
DCR B |
05 |
В=В-1 |
0815 |
JMZ |
C2 |
Перейти, если А=0 в 0814 |
0816 |
14 |
14 |
|
0817 |
08 |
08 |
|
0818 |
DCR A |
3D |
А=А-1 |
0819 |
JMZ |
2C |
Перейти, если А=0 в 0812 |
081A |
12 |
12 |
|
081B |
08 |
08 |
|
081C |
RET |
C9 |
Выход из подпрограммы |
0820 |
MVI C |
0E |
С←06 |
0821 |
06 |
06 |
|
0822 |
MVI A |
3E |
А←89 |
0823 |
89 |
89 |
|
0824 |
OUT |
D3 |
РУС |
0825 |
FB |
FB |
|
0826 |
LXI H |
21 |
HL(М) |
0827 |
00 |
00 |
L |
0828 |
08 |
08 |
H |
0829 |
LXI D |
11 |
DE(M) |
082A |
06 |
06 |
E |
082B |
08 |
08 |
D |
082C |
MOV A M |
7E |
А←M(HL) |
082D |
OUT |
D3 |
Вевести |
082E |
F8 |
F8 |
На порт А |
082F |
LDAX D |
1A |
А←M(DE) |
0830 |
OUT |
D3 |
Вывести |
0831 |
F9 |
F9 |
На порт В |
0832 |
CALL |
CD |
Вызов подпрограммы задержки |
0833 |
10 |
10 |
|
0834 |
08 |
08 |
|
0835 |
INX H |
23 |
HL=HL+1 |
0836 |
INX D |
13 |
DE=DE+1 |
0837 |
DCR C |
0D |
C=C-1 |
0838 |
JMZ |
C2 |
Перейти, если А=0 в 082С |
0839 |
2C |
2C |
|
083A |
08 |
08 |
|
083B |
JMP |
C3 |
Перейти 0820 |
083C |
20 |
20 |
|
083D |
08 |
08 |
Задание: Составить программу выдачи на какой либо разряд дисплея результатов опроса какой-либо линейки клавиш.
Листинг программы
0800 |
00 |
00 |
|
0801 |
MVI A |
3E |
Выбрать второй индикатор и вторую линейку клавиатуры |
0802 |
02 |
02 |
|
0803 |
OUT |
D3 |
|
0804 |
F8 |
F8 |
|
0805 |
IN |
DB |
Опросить клавиатуру |
0806 |
FA |
FA |
|
0807 |
STA |
32 |
Записать в ячейку 0800 |
0808 |
00 |
00 |
|
0809 |
08 |
08 |
|
080A |
SUI |
D6 |
Вычесть |
080B |
64 |
64 |
|
080C |
JNZ |
C2 |
Перейти если не равно нулю |
080D |
16 |
16 |
|
080E |
08 |
08 |
|
080F |
MVI A |
3E |
Выдать цифру 1 на семисигментный индикатор |
0810 |
06 |
06 |
|
0811 |
OUT |
D3 |
|
0812 |
F9 |
F9 |
|
0813 |
CALL |
CD |
Вызвать подпрограмму задержки |
0814 |
60 |
60 |
|
0815 |
08 |
08 |
|
0816 |
LDA |
3A |
Загрузить содержимое ячейки в аккумулятор |
0817 |
00 |
00 |
|
0818 |
08 |
08 |
|
0819 |
SUI |
D6 |
Вычесть |
081A |
34 |
34 |
|
081B |
JNZ |
C2 |
Перейти если не равно нулю |
081C |
25 |
25 |
|
081D |
08 |
08 |
|
081E |
MVI A |
3E |
Выдать цифру 2 на семисигментный индикатор |
081F |
57 |
57 |
|
0820 |
OUT |
D3 |
|
0821 |
F9 |
F9 |
|
0822 |
CALL |
CD |
Вызвать подпрограмму задержки |
0823 |
60 |
60 |
|
0824 |
08 |
08 |
|
0825 |
LDA |
3A |
Загрузить содержимое ячейки в аккумулятор |
0826 |
00 |
00 |
|
0827 |
08 |
08 |
|
0828 |
SUI |
D6 |
Вычесть |
0829 |
54 |
54 |
|
082A |
JNZ |
C2 |
Перейти если не равно нулю |
082B |
34 |
34 |
|
082C |
08 |
08 |
|
082D |
MVI A |
3E |
Выдать цифру 3 на семисигментный индикатор |
082E |
4F |
4F |
|
082F |
OUT |
D3 |
|
0830 |
F9 |
F9 |
|
0831 |
CALL |
CD |
Вызвать подпрограмму задержки |
0832 |
60 |
60 |
|
0833 |
08 |
08 |
|
0834 |
LDA |
3A |
Загрузить содержимое ячейки в аккумулятор |
0835 |
00 |
00 |
|
0836 |
08 |
08 |
|
0837 |
SUI |
D6 |
Вычесть |
0838 |
70 |
70 |
|
0839 |
JNZ |
C2 |
Перейти если не равно нулю |
083A |
01 |
01 |
|
083B |
08 |
08 |
|
083C |
MVI A |
3E |
Выдать цифру 4 на семисигментный индикатор |
083D |
66 |
66 |
|
083E |
OUT |
D3 |
|
083F |
F9 |
F9 |
|
0840 |
CALL |
CD |
Вызвать подпрограмму задержки |
0841 |
60 |
60 |
|
0842 |
08 |
08 |
|
0843 |
JMP |
C3 |
Зациклить программу |
0844 |
01 |
01 |
|
0845 |
08 |
08 |
|
0860 |
Задержка |
||
… |
|||
086С |
|||
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.