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

2.2. Система команд микроЭВМ К1816

  Система команд К1816 во многом повторяет систему команд МП580. Тем не менее между ними есть весьма существенные различия, обусловленные архитектурой микроконтроллера К1816.

1.Разделение памяти на CSEG и DSEG. Объем внутренней памяти данных составляет 64 или 128 байт, а внешней — не превышает 256 байт.

  Эти сегменты образуют разные поля памяти, поэтому размер кода адреса данных не превышает одного байта. Объем внутренней и внешней памяти не превышает 2 Кбайт, суммарный объем памяти не превышает 4 Кбайт, для адресации такой памяти достаточен код длиной в 12 бит.

  Для уменьшения длины адресной части команды программная память К1816 имеет страничную организацию.

  Страница CSEG включает 256 ячеек, которые адресуются младшими разрядами программного счетчика PC{7:0}. Все страницы объединяются в два банка (нулевой и первый) по 2 Кбайта каждый. Выбор банка определяется состоянием триггера выбора банка памяти MBF, который формально является старшим разрядом счетчика команд. При выполнении программы переход от страницы к странице происходит автоматически (граница прозрачна), а при переходе от банка к банку — только путем программного изменения значения MBF (граница не прозрачна). Номер страницы в банке определяется старшими разрядами программного счетчика РС{10:8}. Таким образом, адрес ячейки программной памяти формируется как ADRC{10:1} = номер банка, номер страницы, адрес ячейки = MBF.PC{10:8}.PC{7:0}

2. Разделение сверхоперативных регистров на два банка. При обращении к сверхоперативному регистру в режиме прямой адресации его адрес формируется по номеру банка RBF и адресу регистра внутри банка N: ADR R = 000. (11&RBF).N{2:0}

3.Наличие внешних (Т0, T1) и внутренних (TF) сигналов прерывания помимо стандартного сигнала прерывания INT.

4.Наличие внутренних признаков пользователя (F0, F1)

5.Ограниченное число портов ввода-вывода (напомним, что в МП580 возможно обращение к 256 портам ввода и 256 портам вывода).

  Команды пересылки. Служат для изменения содержимого аккумулятора, регистров оперативной памяти и регистров портов ввода-вывода в режиме копирования [2]. Пересылка осуществляется от регистра источника S (source) к регистру приемнику D (destination). Порядок следования имен регистров в команде фиксирован: DS-передача идет справа-налево, в пересылке регистр-регистр одним из регистров всегда является аккумулятор. Используется прямая регистровая, косвенная @ и непосредственная # адресация. В скобках указаны аналоги команд МП580.

MOV A, Rr; r = 0 + 7 (MOV A, R)

MOV Rr, A (MOV R, A)

MOV A, @Rn (MOV A, M); MOV @Rn, A (MOV M, A); N = 0,1; - в МП580 только по одному адресному регистру (регистру HL)

MOVP A, @A - загрузка аккумулятора содержимым ячейки программной памяти, расположенной в текущей странице (page) выполняемой программы,

MOVP3 A, @A - то же, но с третьей страницы (page 3) нулевого банка программной памяти,

MOVX A, @Rn; MOVX @Rn, A; - обращение к внешней (exernal) оперативной памяти,

MOV Rr, # DATA (MVI R, D8)

MOV A, # DATA (MVI A, D8)

MOV A, PSW; MOV PSW, A; - в отличии от МП580 имеет длину в один байт,

MOV A, T - считывание с таймера,

MOVT, A - запись в таймер,

XCH A, Rr; XCH A, @ Rn; - обмен (exchange) между аккумулятором и ячейкой ОЗУ,

XCHD A, @ Rn - обмен младшими тетрадами,

SWAP A - обмен местами младшей и старшей тетрады аккумулятора,

INA, Pp (IN ADR8) p = 1, 2 - передача данных из порта P1 или P2 в аккумулятор,

INA, BUS (IN ADR 8) - передача данных из порта BUS в аккумулятор,

OUTL, Pp, A; OUTL BUS, A; - передача данных из аккумулятора и их фиксация (latch) в портах P1, P2, BUS.

Команды преобразования данных.

 ANL A, (ANA R) Операции поразрядного преобразования выполняются как операции накапливающего типа относительно аккумулятора или регистров портов ввода-вывода.

ORL A, Rr (ORA R)

XRL A, Rr (XRA R)

ANL A, @ Rn (ANA M)