Материалы по микроконтроллерам / HC05
.DOCMC68HC05
MOTOROLA
ОДНОКРИСТАЛЬНЫЕ МИКРОКОНТРОЛЛЕРЫ
Основные характеристики
-
1975 г. - начало линии М6800, семейства М6801, М6805 - n-MOP технология
-
MC68HC05 - КМОП технология
-
Около 200 заказных модификаций
-
Одинаковое 8-разрядное процессорное ядро
-
2 Мгц - внутренняя тактовая частота шины, (некоторые модификации работают на удвоенной частоте)
-
8 методов адресации
-
ПЗУ - до 32К (масочное, однократно программируемое, с УФ стиранием, с электрическим стиранием)
-
ОЗУ - до 768 байт
-
Как правило отсутствует возможность обращения к внешней памяти за исключением подтипа MC68HC05Е, не содержащего встроенной памяти и адресующего внешнюю объемом до 64К.
-
Таймер с 1-2 каналами IC, OC (Input Capture, Output Compare)
-
COP Watchdog (Computer Operate Properly) таймер
-
SPI - Serial Peripheral Interface - синхронный последовательный канал связи
-
SCI - Serial Communication Interface - асинхронный последовательный канал связи, 75-131000Гц
-
АЦП - до 8 каналов, 8 бит
-
ШИМ - (PWM - Pulse Width Modulation) управление громкостью звука, яркостью изображения, управление электродвигателями
-
Котроллеры клавиатуры, дисплея, жидкокристаллического индикатора, светодиодных сборок, локальной сети
-
6 источников прерывания
Обозначения
OP - код операции;
<- - операция присвоения;
: - операция конкатенации;
ad8 - прямой восьмиразрядный адрес 8-разрядного или 16-разрядного регистра; ad8 - адрес старшего байта; ad8+1 - адрес младшего байта;
ADMAX - максимальный адрес в системе: $1FFF для MC86HC705C8
ad - прямой адрес разрядности, соответствующей ADMAX (дополняется до 16 разрядов нулями слева), 8-разрядной ячейки памяти ;
d - непосредственные 8-разрядные или 16-разрядные данные;
d8 - непосредственные 8-разрядные данные;
of8 - восьмиразрядное смещение без знака;
of16, of16h, of16l - шестнадцатиразрядное смещение без знака, старший и младший байты;
rel - приращение адреса из множества [-128,+127] в командах условного перехода, прибавляемого к адресу следующей за командой перехода команды;
D, S - префиксы, явно указывающие на принадлежность соответственно к приемнику и источнику операнда;
(ad) - содержимое байта либо слова, адресуемого адресом ad;
cad - метка в ассемблере, обозначающая адрес команды, на которую осуществляется переход; абсолютное значение адреса заменяется ассемблером на относительное приращение rel, равное расстоянию в байтах между адресом следующей за текущей команды и меткой cad.
Регистры
|
7 0 |
|
|
||||||||||
|
|
A - Аккумулятор |
|
||||||||||
|
|
7 0 |
|
|
|||||||||
|
|
X - индексный регистр |
|
||||||||||
|
12 8 |
7 0 |
|
|
|||||||||
|
$00FF по Reset |
SP растет вниз, на свободную ячейку |
|
||||||||||
|
$1FFE по Reset |
PC–разрядность зависит от об. памяти |
|
||||||||||
|
|
1 |
1 |
1 |
H |
I |
N |
Z |
C |
CCR |
Флаги
CCR - Condition Code Register - регистр флагов
H - (Half carry) - перенос из 3-го разряда в 4-ый;
I - (Interrupt) - маска прерывания: 1 - все прерывания запрещены;
N - (Negativ) - отрицательный результат команды;
Z - (Zero) - нулевой результат команды;
C - (Carry) - перенос;
Карта памяти для MC68HC705C8
0000 |
Ввод-вывод 32 байта |
|
|
0020 0030 |
ППЗУ 48 байт RAMO=0 |
Отсутствует 16 байт ОЗУ 32 байта RAMO=1 |
|
0050
00FF |
ОЗУ 176 байт в том числе стек 64 байта |
|
|
0100 |
ППЗУ 96 байт RAMI=0 |
ОЗУ 96 байт RAMI=1 |
|
0160 |
ППЗУ 7584 байт
|
|
|
1F00 |
Загрузочное масочное ПЗУ 223 байта |
|
|
1FDF |
Регистр конфигурации |
|
|
1FE0 |
Загрузочные векторы прерыв. ПЗУ16 байт |
|
|
1FF0 |
Отсутствуют 4 байта |
|
|
1FF4
1FFF |
Векторы прерываний - 6 источников 12 байт |
|
-
ПЗУ и ОЗУ перераспределяются в небольших пределах в зависимости от состояния регистра конфигурации.
-
Совмещенный ввод - вывод - адреса портов одинаковы для всех моделей семейства
Векторы прерываний
|
15 0 |
|
1FF4 |
SPI |
|
1FF6 |
SCI |
|
1FF8 |
Таймер |
|
1FFA |
|
|
1FFC |
Программного прерывания SWI |
|
1FFE |
RESET |
|
Способы адресации
-
Подразумеваемая (INH)
OP
|
7 0 |
|
|
OP |
Операнд(ы) (A, X) кодируется в OP |
TXA; (A) <- (X)
-
Непосредственная (IMM)
OP #d8
|
OP |
d8 |
Операнд в команде |
ADD #d8; A)<-(A)+ d8
-
Прямая (DIR)
OP ad8
|
OP |
ad8 |
Старший байт 00 |
-
область RAM - наиболее часто используемые данные
-
сокращение на 1 цикл времени
ADD ad8; (A) <- (A)+ad8
JMP ad8; (PC) <- ad8
LDX ad8; (X) <- (ad8)
STX ad8; (ad8) <- (X)
-
Расширенная (EXT)
OP ad
|
OP |
adh |
adl |
|
-
Ассемблер сам определяет ad8 либо ad
ADD ad; (A)<-(A)+(ad)
JMP ad; (PC) <- ad
-
Индексная без смещения (IX)
OP ,X
|
OP |
|
-
(X) - исполнительный адрес
-
перемещение указателя по таблице
ADD ,X; (A)<-(A)+((X))
JMP ,X; (PC) <- (X)
-
Индексная с 8-битным смещением (IX8)
OP of8,X
|
OP |
of8 |
Без знака |
-
- of8+(X) - исполнительный адрес
-
выделение к-ого элемента в таблице; к - в (X)
ADD of8,X; (A)<-(A)+(of8+(X))
JMP of8,X; (PC) <- of8+(X)
-
Индексная с 16-битным смещением (IX16)
OP of16,X
|
OP |
of16h |
of16l |
Без знака |
-
- of16+(H:X) - исполнительный адрес
-
выделение к-ого элемента в таблицеж; к - в (X)
-
ассемблер сам определяет of8 либо of16
ADD of16,X; (A)<-(A)+(of16+(X))
JMP of16,X; (PC) <- of16+(X)
8. Относительная - в командах условного перехода (REL)
OP cad
|
OP |
rel |
Со знаком [-128, +127] |
-
rel+(PC) - исполнительный адрес
-
ассемблер сам вычисляет rel
BCS cad; Если (C)=1, (PC)<-(PC)+rel