Mc68hc08 motorola однокристальные микроконтроллеры
Основные характеристики
MC68HC08 - КМОП технология - с 1994 г.
Одинаковое 8-разрядное процессорное ядро, на порядок более производительное, чем M68HC05
8 Мгц - внутренняя тактовая частота шины (4мгц для HC08AS48)
CSIC - Customer Specified Integrated Circuits design strategy - определяемая пользователем архитектура на базе набора стандартных модулей
Объектная совместимость снизу вверх с M6805, M68HC05
16 методов адресации
64k - общее адресное пространство
ПЗУ - до 56К (HC08LN56) (масочное, однократно программируемое, с УФ стиранием, с электрическим стиранием)
ОЗУ - до 1.5К
7 портов ввода / вывода
Поддержка прямого доступа к памяти (НС708XL36)
Отсутствует возможность обращения к внешней памяти
Таймер 16-разрядный до 6 каналов IC, OC (Input Capture, Output Compare)
COP (Computer Operate Properly) Watchdog таймер
SPI - Serial Peripheral Interface - синхронный последовательный канал связи
SCI - Serial Communication Interface - асинхронный последовательный канал связи, 75-131000Гц
АЦП - до 16 каналов, 8 бит
ШИМ - (PWM - Pulse Width Modulation) (HC708MP16) - управление громкостью звука, яркостью изображения, управление электродвигателями
Котроллер жидкокристаллического индикатора (HC08LN56)
24 источника прерывания, в т.ч. 6 источников RESET, приоритет которых выше приоритета прерываний
64- выводной QFP или 52-выводной PLCC корпус
Обозначения
OP - код операции;
<- - операция присвоения;
: - операция конкатенации;
ad8 - прямой восьмиразрядный адрес 8-разрядного или 16-разрядного регистра; ad8 - адрес старшего байта; ad8+1 - адрес младшего байта;
ad16 - прямой шестнадцатиразрядный адрес 8-разрядной ячейки памяти ;
ADMAX - максимальный адрес в системе: $FFFF для НС08, $1FFF для MC86HC705C8
d - непосредственные 8-разрядные или 16-разрядные данные;
d8 - непосредственные 8-разрядные данные;
d16, d16h, d16l - непосредственные 16-разрядные данные, старший и младший байты;
of8 - восьмиразрядное смещение без знака;
of16, of16h, of16l - шестнадцатиразрядное смещение без знака, старший и младший байты;
rel - приращение адреса из множества [-128,+127] в командах условного перехода, прибавляемого к адресу следующей за командой перехода команды;
D, S - префиксы, явно указывающие на принадлежность соответственно к приемнику и источнику операнда;
(ad) - содержимое байта либо слова, адресуемого адресом ad;
cad - метка в ассемблере, обозначающая адрес команды, на которую осуществляется переход; абсолютное значение адреса заменяется ассемблером на относительное приращение rel, равное расстоянию в байтах между адресом следующей за текущей команды и меткой cad.
Регистры
|
7 0 |
| ||||||||
|
|
A - Аккумулятор | ||||||||
|
15 8 |
7 0 |
| |||||||
H |
|
|
X H:X - объед-й индексный регистр; | |||||||
Reset |
0 - совмест-ть сHC05 |
|
H не сохраняется в стеке | |||||||
|
|
|
| |||||||
|
$00FF по Reset |
SP растет вниз, на свободную ячейку | ||||||||
|
$FFFE по Reset |
PC | ||||||||
|
V |
1 |
1 |
H |
I |
N |
Z |
C |
CCR |
Флаги
CCR - Condition Code Register - регистр флагов
V - (oVerflow) - переполнение;
H - (Half carry) - перенос из 3-го разряда в 4-ый;
I - (Interrupt) - маска прерывания: 1 - все прерывания запрещены;
N - (Negativ) - отрицательный результат команды;
Z - (Zero) - нулевой результат команды;
C - (Carry) - перенос;
+ - флаг устанавливается в 0 или 1;
- - флаг не изменяется;
0 - флаг устанавливается в 0;
1 - флаг устанавливается в 1;
? - флаг неопределен.
Способы адресации
Подразумеваемая (INH)
OP
|
7 0 |
|
|
OP |
Операнд(ы) (A, H:X, H, X) кодируется в OP |
TXA; (A) <- (X)
PSHX; ((SP)) <- (X); (SP)<-(SP)-1
DIV; (A) <- (H:A)/(X); (H) <- (H:A)mod(X)
TSX; (H:X) <- (SP)+1
Непосредственная (IMM)
OP #d
|
OP |
d8 |
Операнд в команде | |
|
OP |
d16h |
d16l |
Со старшего байта |
один или два байта в зависимости от разрядности регистра, участвующего в команде
ADD #d8; A)<-(A)+ d8
LDHX #d16; (H:X) <- d16
Прямая (DIR)
OP ad8
|
OP |
ad8 |
Старший байт 00 |
область RAM - наиболее часто используемые данные
сокращение на 1 цикл времени
ADD ad8; (A) <- (A)+(ad8)
JMP ad8; (PC) <- ad8
(ad8):(ad8+1) - 16-разряядная адресация:
LDHX ad8; (H:X) <- (ad8):(ad8+1)
STHX ad8; (ad8):(ad8+1) <- (H:X)
Расширенная (EXT)
OP ad16
|
OP |
ad16h |
ad16l |
|
Ассемблер сам определяет ad8 либо ad16
ADD ad16; (A)<-(A)+(ad16)
JMP ad16; (PC) <- ad16
Индексная без смещения (IX) (нет в НС11)
OP ,X
|
OP |
|
(H:X) - исполнительный адрес
(H)<-$00 - совместимость с HC05
перемещение указателя по таблице
ADD ,X; (A)<-(A)+((H:X))
JMP ,X; (PC) <- (H:X)
Индексная с 8-битным смещением (IX8)
OP of8,X
|
OP |
of8 |
Без знака |
- of8+(H:X) - исполнительный адрес
выделение к-ого элемента в таблице; к - в (H:X)
ADD of8,X; (A)<-(A)+(of8+(H:X))
JMP of8,X; (PC) <- of8+(H:X)
Индексная с 16-битным смещением (IX16) (нет в НС11)
OP of16,X
|
OP |
of16h |
of16l |
Без знака |
- of16+(H:X) - исполнительный адрес
выделение к-ого элемента в таблицеж; к - в (H:X)
ассемблер сам определяет of8 либо of16
ADD of16,X; (A)<-(A)+(of16+(H:X))
JMP of16,X; (PC) <- of16+(H:X)
8. По указателю стека с 8-битным смещением (SP8) (только в НС08)
OP of8,SP
|
9E |
OP |
of8 |
Без знака |
- of8+(SP) - исполнительный адрес
доступ к данным стека
ADD of8,SP; (A)<-(A)+(of8+(SP))
9. По указателю стека с 16-битным смещением (SP16) (только в НС08)
OP of16,SP
|
9E |
OP |
of16h |
of16l |
|
- of16+(SP) - исполнительный адрес
доступ к данным стека
ассемблер сам определяет of8 либо of16
если прерывания запрещены - SP - еще один индексный регистр
ADD of16,SP; (A)<-(A)+(of16+(SP))
Относительная - в командах условного перехода (REL)
OP cad
|
OP |
rel |
Со знаком [-128, +127] |
rel+(PC) - исполнительный адрес
ассемблер сам вычисляет rel
BCS cad; Если (C)=1, (PC)<-(PC)+rel
11. Непосредственная - прямая (только в НС08)
MOV #d8,Dad8; (Dad8) <- d8
|
OP |
d8 |
ad8 |
|
12. Прямая - прямая (DD) (только в НС08)
MOV Sad8,Dad8; (Dad8) <- (Sad8)
|
OP |
Sad8 |
Dad8 |
|
Индексная постинкрементная - прямая (IX+D) (только в НС08)
MOV X+, Dad8; (Dad8)<-((H:X)); (H:X)<-(H:X)+1
|
OP |
Dad8 |
|
пересылка таблицы через последовательный канал
14. Прямая - индексная постинкрементная (DIX+) (только в НС08)
MOV Sad8, X+; ((H:X))<-(Sad8); (H:X)<-(H:X)+1
|
OP |
Sad8 |
|
прием таблицы через последовательный канал
Индексная постинкрементная - относительная (IX+REL) (только в НС08)
CBEQ X+,cad; Если (A)=((H:X)), (PC)<-(PC)+rel; (H:X)<-(H:X)+1
|
OP |
rel |
|
16. Индексная постинкрементная с 8-битным смещением - относительная (IX8+REL) (только в НС08)
CBEQ of8,X+,cad; Если (A)=(of8+(H:X)), (PC)<-(PC)+rel; (H:X)<-(H:X)+1
|
OP |
of8 |
rel |
|
Система команд
– 90 инструкций
В таблицах описания команд принята групповая форма записи, в которой операнды aop могут иметь все основные (со 2 по 9) типы адресации. Например,
запись команды
ADD aop
должна раскрываться соответственно множеством следующих команд:
Мнемоника |
Спос адр. |
Содержание |
Флаги VHINZC |
Цк |
Бт |
Примечание |
ADD #d8 |
IMM |
(A)<-(A)+ d8 |
++-+++ |
2 |
2 |
ADD |
ADD ad8 |
DIR |
(A)<-(A)+(ad8) |
++-+++ |
3 |
2 |
without |
ADD ad16 |
EXT |
(A)<-(A)+(ad16) |
++-+++ |
4 |
3 |
carry |
ADD ,X |
IX |
|
++-+++ |
2 |
3 |
|
ADD of8,X |
IX8 |
(A)<-(A)+(of8+(H:X)) |
++-+++ |
3 |
2 |
|
ADD of16,X |
IX16 |
(A)<-(A)+(of16+(H:X)) |
++-+++ |
4 |
3 |
|
ADD of8,SP |
SP8 |
(A)<-(A)+(of8+(SP)) |
++-+++ |
4 |
3 |
Два байта в |
ADD of16,SP |
SP16 |
(A)<-(A)+(of16+(SP)) |
++-+++ |
5 |
4 |
коде опер. |
Для команд сохранения (STA, STX), естественно отсутствует непосредственная адресация.
Следует отметить, что значение числа циклов цк, за которое команда должна выполняться и числа байт в команде бт, естественно, определяются конкретным способом адресации операндов. При групповой форме записи в таблицах команд в этих столбцах стоит звездочка. В выше приведенной таблице для каждого конкретного способа адресации операндов указано числа циклов цк и числа байт бт, которые должны использоваться во всех групповых командах, а не только в команде ADD.