![]() | |
![]() |
Электронные компоненты Мануалы некоторой последовательности машинных команд. Рассмотрение такого рода языков является самостоятельной задачей, которая здесь не затрагивается. Типичный оператор символического языка записывается в виде строки, содержащей поля метки, операции, операнда и комментария. Символическое обозначение может содержать любую комбинацию символов длиной до шести знаков, причем первым символом должна быть буква. Метка команды (ее символический адрес) позволяет обращаться к этой команде из любой точки программы. Комментарий необходим для документирования программы, так что рекомендуется уделять больше внимания его составлению и подробно указывать назначение выполняемых операций. Каждая программа сопровождается текстуальным разъяснением, в котором перечисляются входные и выходные условия, источники и получатели информации, выполняемые преобразования и т. п., а также схемой реализуемого алгоритма, составленной с учетом системы команд ЦПЭ. Для программирования различных алгоритмов обработки информации радиоинженеру необходимы знания основных приемов программирования, таких как программирование операций счета, сложных арифметических и логических операций, процедур ввода-вывода и ряда других. Далее рассмотрим некоторые из этих приемов и приведем конкретные примеры программирования. Организация счета. Операция счета выполняется с помощью некоторого регистра общего назначения, в который загружается константа, равная заданному коэффициенту пересчета N. Затем из содержимого этого регистра вычитаются единицы до получения нулевого результата, после чего следует условный переход по нулю. При отсутствии свободного регистра в качестве счетчика можно использовать ячейку ОЗУ. Обычно операция счета связана с созданием временной задержки, с какими-либо внешними событиями или с циклическим участком программы, когда некоторая основная функция повторяется несколько раз. Здесь возможны два способа организации счета: в первом случае сначала выполняется основная функция, а затем - счет и проверка состояния счетчика; во втором - наоборот. Соответственно, обеспечиваются следующие пределы изменения коэффициента пересчета: 1 </V<2"hO<A< 2"-1. Так как разрядность п регистра равна 8, то максимальная емкость счетчика, выполненного на одном регистре - 256. Пример 7.1. Составить программу счета, обеспечивающую выполнение основной функции N = 20 раз. Программа, составленная по первому из описанных способов, имеет следующий вид. COUNT 1: MV/ В, 20 ; Установка начального состояния счетчика путем загрузки константы N = 20 в регистр В. FUNC: ...........; Участок программы, обеспечивающий выпол- ..........; некие основной функции. DCR В ; Счет. JNZ FUNC ; Переход, если счет не закончен. Начальная успонаОка Вас Выполнение основной функции Счет в В ![]() Если требуется обеспечить N > 256, то следует организовать совместную работу двух или нескольких регистров. Блок-схема алгоритма работы двухкаскадного счетчика с коэффициентом пересчета 1 < < 2 приведена на рис. 7.1. Каскады счетчика выполнены на регистрах fi и С, начальные состоя- ния которых обозначим соответственно Кв и Кс- Общий коэффициент пересчета N определится как (7.1) Рис. 7.1. Блок-схема алгоритма работы двухкаскадного счетчика C0UNT2: FUNC: mi В, MVJ С. 148 98 Действительно, младший каскад счетчика, выполненный на регистре fi, отсчитывает сначала Кв событий, а затем еще Кс-1 циклов по 2 = 256 событий в каждом. Пример 7.2. Составить программу счета, осуществляющую выполнение основной функции 25 ООО раз. Из разложения (7.1) находим Кв = 148 и Кс = 98. Программа счета, составленная в соответствии с блок-схемой алгоритма (см. рис. 7.1), имеет следующий вид. Начальная установка счетчиков В и С. \: Выполнение основной функции. DCr " в ; Счет в В. JNZ FUN С ; Переход, если счет в В не закончен. DCR С ; Счет в С. JNZ FUNC ; Переход, если счет в С не закончен. Организация временной задержки. Функция временной задержки или генерации временных интервалов заданной длительности часто необходима для организации взаимодействия МП с внешними устройствами. Так как тактовая частота МП обычно стабилизирована, то задержка может осуществляться с большой точностью. Для реализации малых задержек можно использовать приведенные в табл. 7.1 команды, выполнение которых не изменяет содержимого регистров и элементов памяти МПВУ (за исключением содержимого СК). С помощью команд из табл. 7.1 можно обеспечить задержку на любое (кроме шести) число тактов Т начиная с четырех. Однако задержки большой длительности целесообразно получать путем организации счета, т. е. циклических участков в программе. В этом случае задача сводится к выбору числа каскадов счетчика, определению требуемых коэффициентов пересчета и к введению до- • полнительных малых задержек для обеспечения точного значения заданного времени задержки. Программа обеспечения задержки на основе однокаскадного (однобайтового) счетчика имеет следующий вид (используемые в программе
команды Ml , DCR и JNZ требуют для своего выполнения 7, 5 и 10 тактов). DELAY : MVI В, KB DCR JNZ В Ml Начальная установка счетчика В. Участок программы, обеспечиваюш.ий дополнительную задержку на Тдв. Счет в и переход, если счет не закончен (Тсч =5 + 10 = \ЪТ). Участок программы, обеспечивающий дополнительную задержку на Тдк. Время задержки в этом случае Тз = Туст + Кв (Тсч + Тцв ) + Тдк. (7.2) Таким образом, минимальный дискрет изменения времени задержки составляет 15Г, т. е. 7,5 мкс при работе данного МП на тактовой частоте Ft == 2 МГц. На базе однокаскадного счетчика целесообразно получать задержки длительностью до десятка миллисекунд. Для получения более длительных задержек число каскадов счетчика увеличивается программным путем. Приведем программу временной задержки на основе двухбайтового счетчика. DELAY2 MV1 В, KB MVI с, КС Ml :.....; DCR В JNZ Ml DCR С JNZ Ml Начальная установка счетчиков В и С. Команды, обеспечивающие задержку Гдв. ; Счет в В и переход, если счет не закон-; чей. ; Комаццы, обеспечивающие задержку Тдс. » Счет в С и переход, если счет не закончен. Команды, обеспечивающие задержку Тдк- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 [ 66 ] 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |