65
Как было отмечено выше, часть команд МК51 при чтении порта считывает
информацию из защелки, другая часть команд считывает информацию непосред-
ственно с линий порта. Если в команде порт служит операндом-источником, то
информация считывается непосредственно с линий порта. Например при выпол-
нении команды ADD A,P1 содержимое аккумулятора складывается с информаци-
ей на выводах порта Р1 и результат заносится в аккумулятор.
Во всех случаях, когда операндом и регистром назначения результата является
порт или бит порта, команды считывают информацию с выходов защелок, а не с
внешних выводов порта. Команды, считывающие информацию с выходов заще-
лок, реализуют так называемый режим «чтение-модификация-запись», заклю-
чающийся в том, что команда считывает состояние защелки, при необходимости
модифицирует полученное значение и записывает результат обратно в защелку.
Ниже приведены команды, работающие в этом режиме.
ANL — логическое И, например, AML Р1,А.
ORL — логическое ИЛИ, например, ORL Р2,А.
XRL — логическое ИСКЛЮЧАЮЩЕЕ ИЛИ, например, XRL Р3,А.
JBC — переход, если бит равен «1» и очистка бита, например, JBC
P1.1,LABEL.
CPL — инверсия бита, например, CPL Р3.0.
INC — инкремент, например, INC P2.
DEC — декремент, например, DEC P2.
DJNZ — декремент и переход, если не ноль, например, DJNZ РЗ,LABEL.
MOV РХ.Y, С — пересылка бита переноса в бит Y порта X.
CLR РХ.Y — очистка бита Y порта X.
SETB РХ.Y — установка бита Y порта X.
Не очевидно, что последние три команды в приведенном списке работают в
режиме «чтение—модификация—запись», однако, это так. Указанные команды
считывают с порта весь байт целиком, модифицируют адресуемый бит, после чего
записывают полученный новый байт обратно в фиксатор-защелку порта.
Чтение информации с выходов защелок, а не с внешних линий порта позволя-
ет исключить возможную в ряде случаев неправильную интерпретацию уровня
сигнала на выводе порта. К примеру, вывод порта P1.0 мо-
жет использоваться для управления ключевым каскадом на
биполярном транзисторе, рис. 37. Т. к. данный порт имеет
нагрузочные резисторы, которые ограничивают выходной
ток, то в цепи базы дополнительный резистор можно не ус-
танавливать. В этом случае при записи в защелку «1» тран-
зистор откроется, но физически на линии данного разряда
будет присутствовать сигнал низкого уровня, определяемый
напряжением на эмиттерном переходе транзистора. Чтение
же выходного сигнала из защелки покажет истинное логиче-
ское значение сигнала на выводе порта.
Рис. 37