
- •Микропроцессоры и мп системы
- •Диаграмма использования микропроцессоров
- •История развития микропроцессоров Поколения микропроцессоров:
- •Молекулярные микропроцессоры
- •Классификация микропроцессоров
- •Архитектура микроконтроллера i8051 (кр1816ве51)
- •Базовая архитектура
- •Структурная схема мк51
- •Организация памяти
- •Организация внутреннего озу (Карта распределения резидентной памяти данных)
- •Система команд
- •Способы адресации
- •Сложение
- •Сложение с переносом
- •Команды безусловного перехода
- •Команда проверки условия
- •Параллельные порты ввода-вывода
- •Логические команды
- •Система прерываний
Организация внутреннего озу (Карта распределения резидентной памяти данных)
Адреса |
ОЗУ |
Комментарии |
||||
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 – флаг переноса. Устанавливается процессором в единицу, если в старшем бите результата происходит перенос или заем