16-разрядный генератор псевдослучайных чисел

Страница 2

описывает состояние одного элемента из микросхемы. Микросхема К555ЛП5 потребляет ток 10 мА.

К555ЛЛ1

Четыре логических элемента 2ИЛИ. Микросхема имеет два вход на каждый элемент, на выходу вырабатывается сигнал логического ИЛИ.

К555ЛА7

Два логических элемента 4И — НЕ с открытым коллекторным входом и повышенной нагрузочной способностью.

К555ЛН1

Шесть логических элементов НЕ.

1.1.2 Описание работы схемы

По заданию необходимо построить схему усовершенствованного 16-разрядного генератора псевдослучайных чисел, в котором число 0 включено в последовательность случайных чисел. Для осуществления этой цели были выбраны четыре сдвиговых регистра влево, выходы которого выдают число на выходную шину. ( В начале работы в регистры заносится число 4146h. Возможно так же занесение любого другого числа. Для этого необходимо подключить к входам параллельного ввода информации регистров: “землю”, если необходимо записать ноль в соответствующий разряд и пятый выход входной шины, если необходимо записать единицу.)

Затем, на входы последовательного ввода информации каждого регистра, поступает уровень записываемого сигнала, который получается по функции

D = Q3 Å Q4, (1)

где Q3 и Q4 это выходы соседних регистров.

В результате, по срезу импульса С (по нажатию кнопки SB1) в регистр записывается уровень сигнала со сдвигом влево.

Связь регистров между собой: уровень для регистра DD1 формируется с выходов регистра DD4, для DD2 – с выходов регистра DD1, для DD3 – с выходов регистра DD2, а для DD4 – с выходов регистра DD3,

В процессе работы устройства происходит проверка на выдачу регистрами чисел 0000h или FFFFh, причем при появлении числа FFFFh в регистры заносится число 0000h, а при появлении 0000h в регистры заносится число 414Bh (т е. число соответствующее включению схемы).

Чтобы реализовать индикацию числа были выбраны светодиоды, на которые поступаю инвертированные сигналы от регистров. Светодиоды подключены в обратном направлении, через сопротивление R3. Как только в разрядах регистров появляется высокие уровни сигнала, соответствующие им светодиоды загораются зеленым светом.

1.2 Программная часть

1.2.1 Алгоритм

Уменьшение счетчика 1

Да

Обмен данными между регистрами H и L

1.2 Листинг программы

Адрес

Код

Метка

Мнемокод

Комментарий

1000

0E 02

FRANDOM:

MVI C,2

;Занесение числа в регистр C ;(установили первый счетчик).

1002

7D

MALKOT1:

MOV A,L

;Заносим содержимое регистра L в ;аккумулятор.

1003

E6 07

 

ANI 7

;Все биты кроме трех младших ;устанавливаем в 0.

1005

3C

 

INR A

 

1006

71

 

MOV B,A

;Заносим содержимое аккумулятора ;в регистр B(установили счетчик2).

1007

7D

 

MOV A,L

;Заносим содержимое регистра L в ;аккумулятор.

       

;Производим действия над ;аккумулятором, такие как:

1008

C6 41

MALKOT2:

ADI 41H

;Сложения байта с содержимым ;аккумулятора.

100A

07

 

RLC

;Циклический сдвиг содержимого ;аккумулятора влево.

100B

0B

 

DCR B

;Уменьшаем первый счетчик рег.В

100C

C2 08 10

 

JNZ MALKOT2

;Если содержимое счетчика не 0, ;переход по метке MALKOT.

100F

6F

 

MOV L,A

;Иначе, заносим содержимое ;аккумулятора в регистр L.

1010

0D

 

DCR C

;Уменьшаем второй счетчик рег.С

1011

CA 1A 10

 

JZ END

;Если счетчик равен нулю то переход ;на конец программы, по метке END

1014

44

 

MOV B,H

;Меняем местами содержимое

1015

65

 

MOV H,L

;регистров Н и L при помощи

1016

68

 

MOV L,B

;промежуточного регистра В

1017

C3 0210

 

JMP MALKOT1

;Если содержимое регистра не 0, ;переход по метке FRANDOM

101A

C9

END:

RET

;Иначе выход из подпрограммы