Цифровые устройства и микропроцессорные системы. Задачи и упражнения: Учебное пособие (Представление чисел и арифметические операции в цифровых устройствах. Микропроцессорные устройства и системы на базе МП КР580ВМ80), страница 92

CODER:          IN        07

MV1    B,0

M1:                 CP1     01

JZ        M2

RAR

INR     B

JMP     M1

M2:                 MOV   A,B

OUT    05

JMP     CODER

Р8.6. В алгоритм, имитирующий работу дешифратора, можно заложить следующую идею:

если введенное число x = 0, то вывести унитарный код нуля 00000001;

если введенное число x ¹ 0, то сдвинуть код 00 000 001 влево x раз и вывести результат сдвига.

Программа будет следующей:

DECOD:         IN        07

ADI     00

JZ        M2

MOV   B,A

MVI    A,01

M1:                 RAL

DCR    B

JNZ     M1

JMP     M3

M2:                 MVI    A,01

M3:                 OUT    05

JMP     DECOD

Р8.7. Обмен данными между МП и ВУ осуществляется по командам «Ввод» (мнемокод IN) и «Вывод» (мнемокод OUT). При синхронном обмене готовность ВУ к приему данных из МП или выдаче данных в МП обеспечивается за счет жесткого временного согласования между МП и ВУ. При асинхронном обмене такого согласования нет; МП, прежде чем производить обмен данными, запрашивает готовность ВУ к обмену и производит этот обмен только после подтверждения готовности.

Р8.8. а) Программа имеет следующий вид:

PROC:             MVI    A,81H                         ;Программирование ППА (режим 0,

OUT    0FBH                          ;Порт ПС – ввод, порт ПВ – вывод)

LP                    IN        0FAH                          ;Ввод данных из наборного поля

ANI     0AAH                          ;Маскирование нечетных разрядов

OUT    0F9H                           ;Вывод результата на индикаторы

JMP     LP                               ;Организация цикла

Р8.9. Алгоритм формирования меандра представлен на рис. Р8.2. В аккумулятор загружается уровень aÎ{0,1}, в регистре B организуется счетчик. Программа имеет следующий вид (в столбце справа указано число тактов):

MEANDR:      MVI    A,81H                         ;Программирование ППА на           7

OUT    0FBH                          ;вывод из порта ПВ                           10

MVI    A,0                              ;Загрузка в аккумулятор уровня 0         7

M1:                 OUT    0F9H                           ;Вывод уровня в порт F9                  10

CMA                                       ; . Загрузка в аккумулятор 4

;нового уровня

MVI    B,K                              ;Загрузка в регистр B числа K,            7

;определяющего частоту колебаний

M2:                 DCR    B                                 ;Декремент регистра B                    5

JNZ     M2                              ;Организация внутреннего цикла  10

JMP     M1                              ;Организация внешнего цикла            10

Рис. Р8.2. Алгоритм формирования меандрового напряжения

Длительность каждой полуволны формируемого напряжения определяется длительностью выполнения программы, которая, в свою очередь, зависит от числа внутренних циклов К, вводимого командой МVI В,К. Общее число тактов во внешнем цикле:

N = 10 + 7 (5 + 10)K + 4 + 10 = 31 + 15K.

При тактовой частоте МП fт = 2 МГц период и частота колебаний на выходе будут соответственно

,

Поскольку число K может находиться в  пределах 1 £ K £ 256, предельные значения

Tмакс = 3871 мкс, Tмин = 46 мск, fмин » 260 Гц, fмакс » 21,8 кГц

Для получения требуемых периодов и частоты колебаний Т и f необходимо, чтобы K имело значение:

где T — в микросекундах; f — в килогерцах; [x] означает ближайшее к x целое число.

Погрешности установки периода и частоты колебаний за счет дискретности K соответственно:

DT £ 7,5 мкс;

Рис. Р8.3. Алгоритм формирования прямоугольного напряжения с произвольной скважностью импульсов

f - в килогерцах; Df - в герцах.

Для получения f = 1 кГц необходимо выбрать К = 65; при этом истинные период колебаний и частота будут соответственно Тист = 31 + 15×65 = 1006 мкс; fист »994 Гц.

Р8.10. Схема алгоритма на рис. Р8.3 отличается от приведённой на рис. Р8.2 тем, что вместо четвертой команды вначале доверяется выполнение  неравенства а ¹ 0 и затем при а ¹ 0; регистр С загружается числом L, а при а = 0 — числом К, где L и К определяют соответственно длительности импульса паузы.