Изучение особенностей функционирования микропроцессора КР580ВМ80 при выполнении команд ввода и вывода информации. Программное управление клавиатурой и дисплеем УМК

Страницы работы

Содержание работы

Федеральное агентство по образованию и науке

Российский государственный

профессионально-педагогический университет

Кафедра микропроцессорной управляющей вычислительной техники

Отчёт по лабораторной работе №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С

Похожие материалы

Информация о работе