Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Микропроцессоры Токхайм / 9.2. ЦИКЛИЧЕСКИЕ ПРОГРАММЫ

.doc
Скачиваний:
167
Добавлен:
13.05.2015
Размер:
803.33 Кб
Скачать

9 .2. ЦИКЛИЧЕСКИЕ ПРОГРАММЫ

Решения

Рассмотрим функциональную схему системы, построен­ной на МП Intel 8080/8085, представленной на рис. 9.5, а. Предположим, что двоичный 8-разрядный видеотерминал

будет вести прямой счет, начиная с 0000 00002. На рис. 9.5, б представлена подробная структурная схема, которая ре­шает эту задачу.

Первая прямоугольная ячейка на рис. 9.5, б соответст­вует установке аккумулятора в ООН, вторая — передаче счета в порт вывода 02Н, третья — инкрементированию счета в аккумуляторе. Эта программа позволит вывести на видеотерминал результат счета с очень большой скоростью.

Программа в табл. 9.3 осуществит двоичный счет, соот­ветствующий структурной схеме. Команда XRA А сбрасы­вает аккумулятор. Команда OUT передает его содержимое в порт вывода 02Н. Счет в аккумуляторе повышается на 1 по команде INRA. Команда JMP вызывает переход МП (возврат) к команде с символической меткой LOOP. Цик­лическая программа продолжается в последовательности OUT, INRA, JMP.

В действительности программа, приведенная в табл. 9.3, будет считать настолько быстро, что лампы видеотер­минала будут казаться горящими постоянно. С целью за­медления счета в программу обычно вводится задержка. На рис. 9.6, а представлена функциональная схема про­граммы двоичного счета, содержащая временную задер­жку.

Более подробная структурная схема на рис. 9.6, б яв­ляется развитием предшествующей функциональной схемы. Пять основных ячеек ее относятся к подпрограмме задерж­ки, которая производится повторением цикла задержки 65 535 (FFFFH) раз.

Соответствующая программа на ассемблере приведена в табл. 9.4. Отметим, что каждая прямоугольная ячейка

на рис. 9.6, б эквивалентна одной команде на ассемблере. Цикл временной задержки имеет символический адрес или метку DELAY (см. табл. 9.4). Более долгий цикл счета име­ет символический адрес COUNT. Программа выполнится в цикле 65 536 раз, проходя через цикл временной задержки каждый раз, когда она входит в цикл счета. В МП Intel 8080/8085 состав команд DCX Я; MOV A,L; ОРА Н и JNZ занимает 24 мкс. В цикле, повторенном 65 536 раз, общий интервал времени будет: 24x65 536 = 1 572 884 мкс, т.е. около 1,6 с. Будет объявлено первое число, затем после интервала в 1,6 с — второе и т. д.

Цель команд MOV A, L и ORA Н программы в табл. 9.4 не может быть неочевидной — эти две команды находятся здесь для установления индикатора Z, когда пара HL окон­чательно декрементирована до 0000Н.

К сожалению, пре

9.7. Временной задержки. 9.8. Команда JMP LOOP побудит МП перейти к программе по символическому адресу LOOP, в этом случае к

дыдущая команда ДЕКРЕМЕНТИРОВАТЬ пару HL (ко­манда DCX Н) никак не воздействует на индикатор. По­этому были добавлены команды MOV A, L и ORA Н.

Подпрограммы временной задержки с программами микро-ЭВМ используются совместно. Они основаны на том, что каждая команда процессора требует для выпол­нения некоторое время. Существуют методы программиро­вания, позволяющие выдавать более долгие интервалы, чем те, что мы только что изучили.

Отметим использование в программе на рис. 9.6, б двух циклов: один из них находится внутри другого. Этот спо­соб программирования называется вложением циклов. Цикл задержки называется внутренним циклом.

Упражнения

Программы в табл. 9.3 и 9.4 идентичны, за исклю­чением того, что последняя содержит подпрограмму _____.

См. табл. 9.3. Последней командой программы яв­ляется JMP. Куда перейдет программа после этой команды?

См. табл. 9.4. Записать пять команд, формирующих подпрограмму временной задержки.

См. рис. 9.6, б. Цикл временной задержки, пред­ставленный на структурной схеме, называется програм­мистами _______(бесконечным, вложенным).

См. табл. 9.4. Первый раз, когда МП встретит ко­манду JNZ, индикатор ________ (сброшен в 0, установлен в

1). Выполнив ее, МП перейдет к выполнению следующей команды.

См. табл. 9.4 Записать необходимый шестнадцатеричный машинный код для выполнения программы, на­чинающейся с адреса 2000Н в памяти.

См. табл. 9.4. Записать шестнадцатеричный ма­шинный код, нужный для выполнения программы, начи­нающейся в памяти с адреса 2000Н:

Решения

команде OUT. 9.9. LXI Я; DCX Я; MOV A, L; ORA Я и JNZ. 9.10. Вложенным 9.11. (Z)=Q; DCX Я (символический адрес DELAY). 9.12. Установлен в 1; MOV А, В. 9.13. Обратиться к табл. 8.4.