Разработка принципиальной схемы микропроцессорной системы. Модуль процессора. Разработка основного алгоритма работы программы, страница 6


2.5  Программы формирования временной задержки.

Для разрабатываемой микропроцессорной системы выбрана тактовая частота 2МГц. Значит длинна одного машинного такта будет составлять t=0.5мкс. Необходимое количество тактов для обеспечения паузы в 1 секунду равно n=2000000. Рассмотрим длительность процедур “Pusk” и “Stop”.

Процедура “Pusk”

Метка

Мнемо код

Количество тактов

Pusk:

mvi

A

,01h

MT1:

out

PA

10

mov

B

,A

5

in

PB

7

cmp

B

4

jnz

AVAR1

10

push

PSW

11

call

Delay1

17

pop

PSW

11

stc

4

ral

4

cpi

FFh

7

jnz

MT1

10

out

PA

10

ret

Процедура “Stop”

Метка

Мнемо код

Количество тактов

Stop:

mvi

A

,7Fh

MT2:

out

PA

10

mov

B

,A

5

in

PB

7

cmp

B

4

jnz

AVAR2

10

push

PSW

11

call

Delay1

17

pop

PSW

11

ana

A

4

rar

4

cpi

00h

7

jnz

MT2

10

out

PA

10

ret

Таким образом  обе процедуры имеют одинаковое количество тактов между выводами в порт равное n=10+5+7+4+10+11+17+11+7+4+4+10=100. На процедуру Delay1 остаётся 1999900 тактов.

Рассмотрим процедуру Delay1:

адрес

Маш. Код

Метка

Мнемо код

Комментарий

0109h

78

4D

C3

Delay1:

lxi

B

,C34Dh

;(BC)¬С34Dh

;(10 тактов)

010Ch

00

DM:

nop

;(4)

010Dh

00

nop

;(4)

010Eh

00

nop

;(4)

010Fh

00

nop

;(4)

0110h

0B

dcx

B

;(BC)¬(BC)-1 (5)

0111h

78

mov

A

,B

;(А)¬(B) (5)

0112h

81

add

C

;(A)¬(А)+(C) (4)

0113h

C2

0C

01

jnz

DM

;(10)

0116h

C9

ret

;возврат из п\п