Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КУРСОВАЯ ПО ВЫЧМАШ 2_9.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
644.61 Кб
Скачать

Последовательность выполнения программы

Д ля того, чтобы высвечивались символы, нужно в порт А (11 Н) отправить необходимую комбинацию из единиц и нулей в виде кода в шестнадцатеричной системе счисления, который соответствует символу.

Например, для того, чтобы на светодиодном индикаторе загоралась

цифра 1 нужно отправить в порт А код соответствующий этому 0110 0000, т.е. загораются только светодиоды В и С. Переведя в шестнадцатеричную систему счисления, получим 60 Н.

Составим таблицу кодов в двоичной и шестнадцатеричной системах для данных символов:

Высвечиваемый

символ

Код в двоичной системе счисления

Код в шестнадцатеричной системе счисления

A B C D E F G H

5

1 0 1 1 0 1 1 0

B6 H

6

1 0 1 1 1 1 1 0

ВЕ H

7

1 1 1 0 0 0 0 0

E0 H

8

1 1 1 1 1 1 1 0

FE H

LXI SP, 0500 H / Заполняем адрес в регистре SP. С этого начинается программа.

MVI A, 01 H

OUT 10 H / Программируем порт А на вывод, порт С на ввод. Для этого в регистре команд на порте А должны быть 1, а на порте С – 0. Отправляем в регистр команд 10Н слово режима 01.

M1: IN 13 H / Проверяем состояние кнопки, считывая информацию с порта С (13 Н). Кнопка нормально замкнута, т.е. на входе мы будем иметь 1

АNI A, 02 H / Для этого информацию с порта С мы будем сравнивать с числом 02 Н (в двоичной системе – 00000010)

JNZ М1 / Если не ноль, то проверяем кнопку снова. И до тех пор, пока мы не получим 0 (т.е. не разомкнем кнопку), наша программа не будет работать.

MVI A, __ H / Загружаем в аккумулятор код соответствующий символам 5,6,7,8 (повторяем 4 раза)

OUT 11 H / отправляем этот код в порт А (11 Н). В результате эти символы будут высвечиваться на светодиодном индикаторе.

CALL TIME / Вызываем подпрограмму TIME.

TIME:

MVI A, 10 H

OUT 14 H / Код 10 – задаем младший байт таймера (14 H)

MVI A, 27 H

OUT 15 H / код 27 – старший байт таймера (15 Н). Эта подпрограмма задает время свечения каждого символа (1мс).

MVI A, C1 H

OUT 10 H / Код С1 отправляем в регистр команд, чтобы работал таймер.

RET

MVI A, 00 H / Чтобы погасить весь индикатор загружаем в аккумулятор код 00 (00000000).

OUT 11 H / Отправляем в порт А (11Н). В результате ни один из индикаторов гореть не будет.

Теперь мы можем составить цельную программу. Она будет выглядеть следующим образом:

Программа на языке Ассемблера asm 8085

LXI SP, 0500 H

MVI A, 01 Н

OUT 10 H

M1: IN 13 H

АNI A, 04 H

JNZ М1

M14: MVI A, B6 H

OUT 11 H

CALL TIME

EI

HLT

M11: MVI A, 00 H

OUT 11 H

NOP

MVI A, ВЕ H

OUT 11 H

CALL TIME

EI

HLT

M12: MVI A, 00 H

OUT 11 H

NOP

MVI A, E0 H

OUT 11 H

CALL TIME

EI

HLT

M13: MVI A, 00 H

OUT 11 H

NOP

MVI A, FE H

OUT 11 H

CALL TIME

EI

HLT

MVI A, 00 H

OUT 11 H

NOP

HLT

TIME: MVI A, 10 H

OUT 14 H

MVI A, 27 H

OUT 15 H

MVI A, C1 H

OUT 10 H

003C: JMP M10

M10: INR A

CPI 64 H

JNZ TIME

INR C

CPI 01 H

JZ M11

CPI 02 H

JZ M12

CPI 03 H

JZ M13

CPI 04 H

JZ M14

RET

Вывод

В результате проделанной курсовой работы я научился разрабатывать электрическую принципиальную схему и создавать программу функционирования на языке Ассемблера ASM 85. Система команд МП 8085 (как и большинства других МП) ограничена узким кругом простых команд. Машинный язык – это единственный язык, непосредственно воспринимаемый микропроцессором, но программирование на нем нелегко. Поэтому обычно программы пишутся на языке ассемблера, а затем транслируются на машинный язык специальной программой. Язык ассемблера – это не какой-то конкретный язык программирования, а целый класс языков. Каждый микропроцессор имеет собственный язык ассемблера. В нашем случае рассматривался язык ассемблера микропроцессора Intel 8085.