Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КС-ZAO / Лекции ЦЭВМруский вариант11.doc
Скачиваний:
188
Добавлен:
07.02.2016
Размер:
15.82 Mб
Скачать

§7.3.4 Особенность чтения-модификации-записи

Некоторые инструкции чтения из порта читают из регистра порта (защелки), а другие – непосредственно с контактов порта. Содержимое регистра читают те инструкции, которые считывают значение, возможно, изменяют его, и перезаписывают его обратно. Это так называемые инструкции «чтения-модификации-записи». Все они перечислены ниже. Когда операнд назначения порт, или бит порта, эти инструкции читают из регистра, а не с контакта.

ANL

логическое и

ORL

логическое или

XRL

логическое исключающее или

JBC

переход, если бит=1 и очистка бита.

CPL

сопряженный бит

INC

инкремент

DEC

декремент

DJNZ

декремент и переход, если не ноль

MOV PX.Y, C

загрузить бит переноса в бит Y порта X

CLR PX.Y

установить в «0» бит Y порта X

SETB PX.Y

установить в «1» бит Y порта X

Не совсем очевидным является тот факт, что 3 последние инструкции являются инструкциями «чтения-модификации-записи». Но это на самом деле так: они читают сразу все 8 бит из порта, изменяют необходимый бит и записывают байт обратно.

Причина, по которой инструкции «чтения-модификации-записи» не обращаются напрямую к контактам порта - в избежании возможного неверного толкования уровня напряжения на контакте. Например, бит порта может быть использован для управления базой транзистора. Когда бит устанавливается в «1» транзистор открывается. Допустим, если после этого процессор прочитает тот же самый бит на контакте, а не из регистра, он получит напряжение на базе транзистора и интерпретирует его как «0». Если же значение бита будет прочитано из регистра, то процессор получит верное значение «1».

§7.4.Доступ к внешней памяти

Возможен доступ к двум типам внешней памяти: внешней памяти программы и внешней памяти данных. Доступ к внешней программной памяти осуществляется с помощью сигнала PSEN# , как стробирующего сигнала чтения. Для доступа к памяти данных используют стробирующие сигналыRD# илиWR#.

При обращении к памяти программ всегда используют 16-разрядную адресацию, в то время как адресация памяти данных может быть либо 16-разрядной (MOVX @DPTR) либо 8-разрядной (MOVX @Ri).

Когда используется 16-разрядная адресация, старший байт адреса передается через порт Р2, где он удерживается на время цикла чтения или записи..Обратите внимание, что выходные схемы порта 2 используют сильную нагрузку во время наличия на них 1-иц. Это происходит во время выполнения команды MOVX @DPTR. В это время регистр порта Р2 (специальный функциональный регистр - СФР) не содержит 1s и содержимоеСФР порта Р2 не меняется. Если же следующий цикл чтения/записи внешней памяти не следует сразу за предыдущим, то неизмененое содержимоеСФР порта Р2 сохраняется и в следующем цикле.

При использовании 8-битной адресации (MOVX @Ri) содержимоеСФРпорта Р2 остается на выводах Р2 на протяжении всего цикла обращения к внешней памяти.Это облегчает страничную организацию памяти.

В любом случае, младший байт мультиплексируется во времени с байтом данных через порт Р0. Сигнал ADDR/DATA управляет обоими полевыми транзисторами в выходных буферах порта Р0. Поэтому в данном случае выводы порта Р0 не являются выходами с открытым стоком и не требуют внешнего напряжения. Сигнал ALE (Address Latch Enable) может быть использован для ввода адресного байта во внешний регистр. Адресный байт устанавливается при отрицательном переходе ALE (переход с высокого уровня на низкий). Затем, в цикле записи, байт данных записывается в порт Р0 сразу после установки сигнала WR#, и остается там пока сигнал WR# не будет снят. В цикле чтения, входящий байт принимается портом Р0 сразу после дезактивации строба чтения.

Во время любого обращения к внешней памяти, ЦП (Центральный Процессор) записывает 0FFH в регистр порта Р0 (специальный функциональный регистр-СФР), поэтому стирание любой информации может быть блокированоСФРпорта Р0. Если пользователь записывает в порт Р0 во время обращения к внешней памяти, то входящий байт кода разрушается. Поэтому не следует записывать что-либо в порт Р0, если используется внешняя програмная память.

Внешняя програмная память доступна в двух случаях:

  1. Когда активен сигнал EA#;

  2. Когда программный счетчик (РС) содержит номер, больший чем 0FFFH(1FFFH для 8052).

Это требует, чтобы в версии микросхемы без ПЗУ сигнал EA# был всегда на низком логическом уровне, т.к. только тогда можно будет обращатся к нижним 4K (8K для 8032) памяти программ внешней памяти.

Когда ЦП работает в режимевнешней програмной памяти, все 8 бит порта Р0 выделяются для функций вывода, и не могут быть использованы для ввода/вывода общего назначения. Во времядоступа к внешним программамони выводят старший байт программного счетчика. При этом порт Р2 используетсильную нагрузку для вывода единичных битов PC.

Соседние файлы в папке КС-ZAO