Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессоры и микропроцессорные системы.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
151.55 Кб
Скачать

Организация внутреннего озу (Карта распределения резидентной памяти данных)

Адреса

ОЗУ

Комментарии

80-FF

Регистры специальных функций

128 ячеек

30-7F

Байт-адресуемые данные

20-2F

Бит-адресуемые данные

07

06

01

00

18-1F

Банк 3 R0-R7

Регистры общего назначения

10-17

Банк 2 R0-R7

08-0F

Банк 1 R0-R7

00-07

Банк 0 R0-R7

Внутреннее ОЗУ можно разделить на следующие участки:

  • Первые 32 ячейки (00-1F) занимают Регистры общего назначения. Они разделены на группы называемые Банками. Всего 4 банка по 8 регистров в каждом. Текущий банк только один – Банк 0. Номер текущего банка определяется в регистре специальных функций PSW – слово состояния программы Programs State Word. Доступ к данным через регистры общего назначения наиболее эффективный с точки зрения сокращения времени выполнения программы и уменьшения объема памяти программы, так как эти команды занимают 1-2 байта и выполняются за 1-2 мкс.

  • Следующие 16 адресов (20-2F) занимают ячейки памяти, которые могут адресоваться как побайтно, так и побитно. Побитная адресация означает, что каждый бит имеет свой адрес и может быть доступен непосредственно по адресу

  • Следующая область из 80 ячеек (30-7F) может адресоваться только побайтно и используется по усмотрению программиста для хранения промежуточных данныз

  • Следующие 128 ячеек (80-FF) занимают регистры специальных функций, которые используются микроконтроллером

Система команд

МК51 программируется с помощью языка ASSEMBLER.

Assembler – это машинный язык, написанный в символической форме

Система команд МК51 содержит 111 команд, которые объединяются в следующие группы:

  • Арифметические команды (+ - * /)

  • Логические команды (и или не искл.или)

  • Команды пересылки данных

  • Команды передачи управления

  • Операции над битами

Каждая команда представляет собой следующую простую конструкцию:

Операция операнд(ы)

В поле операция записывается мнемоническое обозначение команды, которое является аббревиатурой полного английского наименования выполняемого действия. В поле операнд(ы) определяются объекты участвующие в операции, могут быть команды без операндов. Если операндов 2 или 3 они разделяются запятой БЕЗ ПРОБЕЛОВ. Если команд имеет 2 операнда первый операнд – приемник, а второй – источник.

Операнды бывают 3х типов:

  • Биты

  • Байты

    • Ячейки памяти программ

    • Ячейки памяти данных

    • Константы

    • Регистры

    • Порты ввода-вывода

  • Слова

    • Прямые адреса

    • Константы

Способы адресации

В МК51 существует 5 способов адресации:

  • Регистровая адресация, когда в качестве операндов используются регистры общего назначения и регистры специальных функций

  • Прямая адресация, когда в качестве операнда указывается адрес ячейки ОЗУ или адрес регистра

  • Непосредственная адресация, когда в качестве операнда используется непосредственное число (может быть только вторым) MOV A,#10h (h=16 b=2)

  • Косвенная адресация. При косвенной адресации необходимо:

    • В регистры R0 или R1 или DPTR записать адрес в виде непосредственного числа MOV R0,#40

    • Прочитать (или записать) из адреса находящегося в регистре R0 или R1 или DPTR число. Косвенный адрес сопровождается значком @. MOV A,@R0

  • Косвенная адресация, с помощью двух регистров Базового DPTR и индексного A.

MOVC A,@A+DPTR

Команды пересылки данных

Команда пересылает данные из второго операнда в первый, оставляя второй без изменения

Команда пересылки данных во внутреннем ОЗУ. MOV

  • Если первым операндом является аккумулятор (А) второй может быть

    • R0-R7

    • Ad – прямой адрес

    • @R0,R1

    • #d

  • MOV ad,

    • R0-R7

    • #d

    • A

    • Ad

    • @R0-R1

  • MOV R0-R7

    • A

    • Ad

    • #d

  • MOV @R0-R1

    • A

    • #d

    • Ad

  • MOV DPTR

    • #d

  • MOV bit

    • C

MOV 20.0,C

Команда пересылки для внешнего ОЗУ MOVX

MOVX A,@DPTR Выцепить данные из ячейки внешнего ОЗУ

Пример

Прочитать данные из адреса 0200 внешнего ОЗУ

MOV DPTR,#0200

MOVX A,@DPTR

MOVX @DPTR, A Записать данные в ячейку внешнего ОЗУ

Записать по адресу внешнего ОЗУ число FF

MOV A,#FF

MOV DPTR,#1C50

MOVX @DPTR,A

Команда пересылки для ПЗУ

MOVC A,@A+DPTR

Пример прочитать данные из ячейки 0100h ПЗУ

MOV DPTR,#0100h

MOV A,#0

MOVC A,@A+DPTR

Арифметические команды

Состав регистра PSW (слово состояния программы)

7

6

5

4

3

2

1

0

С

AC

F0

RS1

RS2

OV

-

P

P – флаг паритета (четности). Флаг устанавливается процессором в единицу если число единичных бит в аккумуляторе нечетное, иначе равен нулю

OV – флаг переполнения. Устанавливается процессором в единицу, если результат сложения (вычитания) не укладывается в 7 битах и старший 8 бит результата не может интерпретироваться как знаковый. При выполнении операции деления флаг устанавливается в единицу если деление на 0.

RS1,RS2 – выбор банка регистров. Этими битами управляет программист

F0 – пользовательский флаг устанавливается и сбрасывается программно самим программистом

AC – флаг вспомогательного переноса. Устанавливается в единицу процессором, если при выполнении операции сложения (вычитания) между тетрадами (полубайтами) байта произошел перенос или заем

C – флаг переноса. Устанавливается процессором в единицу, если в старшем бите результата происходит перенос или заем