Общие принципы построения микроконтроллеров, страница 9

  Если подпрограмма обслуживает прерывания, точки входов которых, как нам уже известно, находятся в нулевом банке, значение MBF должно быть обязательно равно нулю. Отсюда следует, что допустимо прерывание только той программы, которая находится в нулевом банке.

  Микроконтроллер имеет ряд команд передачи управления, не имеющих аналогов в МП580.

  Команда DJNZ эквивалентна двум командам (декремента и перехода по нулевому значению признака Z) и широко используется при организации циклов с выходом по нулю декрементного счетчика.

  Команды условного перехода по значению внешних (Т0, T1 ) и внутренних (F0, F1) признаков, не формируемых в процессе преобразования данных. Первые две команды используются для организации реакции микроконтроллера на внешние сигналы ТО, 71, вторые две команды — для разветвления вычислительных процессов по признакам пользователя F0 и F1.

  Команда условного перехода по сигналу внешнего прерывания JNI организует переход по сигналу INT = 0 в режиме опроса. Реакция на этот сигнал может быть отличной от той, которая имеет место при непосредственном воздействии INT = 0, когда прерывание разрешено (управление передается по адресу 003)

  Команда условного перехода JBb служит для тестирования b-то разряда аккумулятора; представляет собой совокупность двух команд-маскирования b-го разряда аккумулятора и перехода по его ненулевому значению.

  Команда JMPP @А передает управление команде текущей стра­ницы, адрес которой находится в аккумуляторе. Эта команда используется для организации многонаправленного перехода типа «переключатель». Пусть, например, требуется передать управление 16 различ­ным программам с именами Rout0 + Rout16 в зависимости от значения индекса X, изменяющегося в пределах от 0 до 15. Это может быть сделано при помощи следующего сегмента программы:

ORG 0 ;задание начального адреса программы;

ANL А, # OFH ;сброс старшей тетрады А во избежание ошибки перехода;

JMPP @ ;обращение к таблице переходов;

DB ROUT0 ;начальный адрес программы ROUT0

DB ROUT1 ;начальный адрес программы ROUT1

DB ROUTF ;начальный адрес программы ROUTF

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

  Пусть, например, требуется выполнить операцию вычитания X - Y, где X, Y - целые без знака, и поместить разность на место X. Положим, что X и Y располагаются в регистрах R3, R4 нулевого банка

SUB: SEL RB0 ; выбор банка 0

MOV A, R4 ; загрузка вычитаемого

CPL A ; получение дополнительного кода

INC A ; вычитаемого

ADD A, R3 ; формирование разности

MOV R3, A ; засылка результата

  Ограниченное количество портов ввода-вывода. В стандартном варианте микроконтроллер использует только три порта ввода/вывода: Р1, Р2 и BUS; в расширенном варианте к портам Р1 и Р2 могут быть подключены до четырех самостоятельных портов. При программировании операций ввода-вывода необходимо учитывать особенности работы портов Р1 ,Р2 и BUS

  Порты Р1 и Р2 могут выполнять ввод, вывод или ввод/вывод, в зависимости от программной настройки порта на выполнение заданной операции.

  Вывод информации осуществляется с помощью команды OUTL А,Рр (р = 1,2), которая фиксирует выводимые данные на выходном регистре порта. Состояние этого регистра остается неизменным до следующей команды вывода.

  При вводе информации используется команда IN А, Рр (р = 1,2), которая производит маскирование (поразрядное «И») входной информации содержимым выходного регистра порта, после чего передает результат маскирования в аккумулятор. При этом содержимое выходного регистра не изменяется.