Кроме программируемых входов/выходов общего назначения микросхема
процессора содержит пять флагов FL0, FL1, FL2, FO и FI, предназначенных для
создания многопроцессорных систем и работающих всегда в одном направле-
нии: FL0, FL1, FL2, FO – выходы, FI – вход. Сигналы FO и FI могут исполь-
зоваться, если в системе не задействован последовательный порт SPORT1. Вы-
бор флагов FO, FI или порта SPORT1 выполняется с помощью бита 10 в реги-
стре управления системой, расположенном по адресу 0x3FFF.
Cостояние входного сигнала FI анализируется и учитывается в програм-
ме во время исполнения ассемблерной команды условного перехода “if
FLAG_IN” или “if not FLAG_IN”. В зависимости от уровня сигнала на входе
FI условие выполняется или не выполняется, процессор переходит на разные
участки программы. Флаг устанавливается (FL
i
= 1) командой SET, сбрасывает-
ся (FL
i
= 0) командой RESET. Примеры команд на языке ассемблера, рабо-
тающих с флагами FL
i
и программируемыми флагами PF
i
, приведены в листин-
ге 1. В одной строке располагается одна команда, которая заканчивается точкой
с запятой. Комментарии выделяются с помощью символов /*, */. Системные
переменные регистров PFTYPE и PFDATA должны быть объявлены в под-
ключаемом файле-заголовке с расширением h.
Листинг 1 Формирование флагов процессора
ax0 = 0xFF3F ;
dm(PFTYPE) = ax0 ; /* 0xFF3F = 1111 1111 0011 1111, PF7, PF6 – входы, PF5-PF0 –
выходы */
/* в регистре PFTYPE задано направление сигналов на выводах PF7-PF0 */
ax0 = 0x0С ;
dm(PFDATA) = ax0 ; /* 0x0С = 0000 1100 */
/* в регистр PFDATA записано число, формирующее сигналы PF5=PF4=P1=PF0=0, PF3=
PF2=1 */
SET FL2; /* установить флаг FL2, т.е. вывести на вывод FL2 напряжение логической
единицы */
RESET FL0; /* сбросить флаг FL0, т.е. вывести на вывод FL0 напряжение логического
нуля */
IF FLAG_IN JUMP MET1 ; /* если FI = 1, то уйти на метку MET1 */
IF MV SET FLAG_OUT, RESET FL1 ; /* если MV = 1 (переполнение МАС), то FO = 1,
FL1 = 0 */
MET1: RESET FL2 ; /* FL2 = 0 */