Цифровые устройства и микропроцессорные системы. Задачи и упражнения: Учебное пособие (Представление чисел и арифметические операции в цифровых устройствах. Микропроцессорные устройства и системы на базе МП КР580ВМ80), страница 61

Рис. Р6.3 Память микроконтроллера КР 1816:

а) внутреннее ОЗУ (память данных ), б) внутреннее и внешнее ПЗУ (память программ)

Р6.67. Каждый из двух блоков ППЗУ МК1816 (рис. Р6.3, б), имеющий емкость 2 Кбайта, делится на 8 страниц по 256 байтов в каждом. Поэтому для указания адреса ячейки в пределах страницы достаточно 1 байта. В большинстве команд МК1816, в том числе в командах условных переходов, адресация осуществляется пределах страницы, что накладывает определенные ограничения при составлении программ, но позволяет обходиться 2-байтовыми командами (а не 3-байтовыми, как в МП КР580ВМ80). Для перехода к другой странице данного блока ППЗУ используются команды вызова подпрограммы CALL или безусловного перехода JMP, которые также содержат по два байта, но в них три старших бита первого байта указывают код выбираемой страницы.

Р6.68. Таймер микроконтроллера МК1816 представляет собой 8-разрядный суммирующий счетчик, который может быть использован для организации временных задержек и подсчета внешних импульсов. В первом случае посредством начальной установки счетчика, счета импульсов, следующих с периодом 80 мкс, и анализа признака переполнения может быть реализована задержка от 80 мкс до 20 мс. Во втором случае внешние импульсы подаются на вход МК Т1; разрешающее время счетчика 7,5 мкс. Для управления таймером в системе команд МК1816 имеются специальные команды.

Р6.69. a) (A)←(R5); прямая адресация приемника и источника информации: в аккумулятор пересылается содержимое регистра R5 ОЗУ; код команды 11111101 =FDH;

б) (А)←А1Н; прямая адресация приемника и непосредственная адресация источника: в аккумулятор загружается число А1Н; код команды (2 байта) 00100011 10100001 = 23А1Н;

в) (A)←[(R1)]; прямая адресация приемника и косвенная адресация источника; в аккумулятор пересылается содержимое ячейки внутреннего ОЗУ, адрес которой хранится в разрядах 0...5 регистра R1 ОЗУ; код команды 11110001 = F1H;

г) (А)←(Т); прямая адресация приемника и источника: в аккумулятор пересылается содержимое счетчика таймера; код команды 01000010 = 42 Н;

д) [(RO)]←(A); прямая адресация источника и косвенная адресация приемника; в ячейку ОЗУ, адрес которой хранится в разрядах 0...5 регистра RO ОЗУ, пересылается содержимое аккумулятора; код команды 10010000 = 90Н;

е) прямая адресация приемника информации — аккумулятора; косвенная адресация источника информации — ячейки из текущей страницы блока памяти; код команды 10100011 = A3 Н:

ж) (A)←[(RO)]; прямая адресация приемника и косвенная адресация источника; в аккумулятор пересылается содержимое ячейки памяти внешнего ЗУ, адрес которой указан в регистре RO ОЗУ; код команды 10000000 = 80Н;

з) (A)↔(R4); прямая адресация источника и приемника: аккумулятор и регистр R4 обмениваются содержимым; код команды 00101100 = 2СН;

и) (A)↔[(R1)]; аккумулятор и ячейка ОЗУ с адресом, указанным в регистре R1 ОЗУ, обмениваются содержимым; код команды 00100001 = 21Н.

к) прямая адресация приемника информации-аккумулятора; косвенная адресация источника информации — ячейки из непосредственно указанной 3-й страницы блока памяти; код команды 11100011=ЕЗН.

Р6.70. a) (A)←(A) + (R5); (A) = C9H; (С) = 0;

б) (А)←(А) + ОВН; (А) = В5Н; (С) = 0;

в) (A)←(A)+[(RO)]; (A) = OCH; (С) = 1;

г) (R4)←(R4)+1; (R4) = 50H; (C) = 0;

д) [(R1)]←[(R1)] + 1; [(R1)] = 2BH; (C) = 0;

е) (А)←(А) -1; (А) = 4ВН; (С) = 0;

ж) Циклический сдвиг содержимого аккумулятора влево: (А) = 64Н, (С) = 0;

з) Циклический сдвиг содержимого аккумулятора вправо: (А)= D9H; (C)=l;

и) Циклический сдвиг содержимого аккумулятора вправо через перенос: (А) = 59Н; (С)=1.

Р6.71. a) (A)←(A)Ù(R1); (A) = 28H;

б) (А) ←(А)ÙFO; (А) = А0Н (с помощью непосредственно заданного операнда FOH выделяется старшая тетрада содержимого аккумулятора);

в) (А) ← (A)Ú[(RO) ] = (A)Ú4CH; (A) = 5DH;

г) (A)←(A)Å61H; (A) = D2H;

д) (A) ← 0; (A) = 0; очищение (обнуление) аккумулятора;

e) (A) ←(A); (A) = 4CH; инвертирование содержимого аккумулятора.

Р6.72. а) (А) ← (Р1); ввод данных из порта Р1 в аккумулятор;