Передача данных
Система прерываний MК51
Внешние прерывания по входам INT0 и INT1 могут быть вызваны либо уровнем (0), либо фронтом (переход из 1 в 0) сигналов на выводах Р3.2, Р3.3, что определяется программированием битов IT0 и IT1 регистра TCON. При поступлении запроса внешнего прерывания устанавливаются флаги IE0 или IE1. При прерываниях по фронту эти флаги сбрасываются аппаратно при обращении к подпрограмме обслуживания, при прерываниях по уровню флаги очищаются при снятии запроса внешнего прерывания.
В блоке регистров специальных функций есть два регистра, предназначенных для управления режимом прерываний (IE) и уровнями приоритета (IP). Установка бита ЕА снимает общую блокировку прерываний.
Прерывания от таймеров/счетчиков вызываются при их переполнении установкой флагов TF0 и TF1. Очистка этих флагов происходит автоматически при обращении к подпрограммам обслуживания. Флаги запросов прерываний приемника и передатчика последовательного порта RI и TI устанавливаются аппаратно, но сбрасываться должны программой.
Если прерывания разрешены и сформировался соответствующий флаг, система прерываний помещает в стек содержимое счетчика команд РС и загружает в счетчик команд адрес вектора подпрограммы обслуживания. По адресу вектора обычно располагается команда безусловной передачи управления к начальному адресу подпрограммы обслуживания прерывания. Подпрограмма обслуживания должна в случае необходимости начинаться командами записи в стек (PUSH) PSW, ACC, B, DPTR и заканчиваться командами восстановления их из стека (РОР). Подпрограммы обслуживания обязательно заканчиваются командой RETI, снимающей блокировку прерываний.
Операнды, участвующие в операциях пересылки, различаются по месту расположения и способу адресации.
Взаимодействие с памятью программ ПП (только для чтения) и внешней памятью данных ВПД (для чтения и записи) осуществляется только через аккумулятор А с использованием косвенной адресации.
К ячейкам резидентной памяти данных РПД можно обратиться как с помощью косвенной адресации (в качестве указателей памяти используются регистры R0 или R1), так и с помощью прямой адресации.
Прямая адресация байтов используется при обращении к регистрам специальных функций РСФ.
При работе с битами всегда используется прямая адресация битов. Пересылка битов возможна только через триггер переноса С.
Шестнадцатиразрядный операнд может быть непосредственно загружен в регистр-указатель данных DPTR.
Доступ к внешней памяти данных возможен с использованием 16-битного адреса (MOVX A,@DPTR) или 8-битного адреса (MOVX A,@Ri). В любых случаях использования 16-разрядного адреса старший байт адреса фиксируется (и сохраняется неизменным в течение одного цикла записи или чтения) в регистре-защелке порта P2.