Программирование микропроцессоров
Рисунок 3.15 – Схема алгоритма инвертирования содержимого ячейки памяти
Таблица 3.4 – Программа инвертирования содержимого ЯП на языке Ассемблер
При использовании прямой адресации
Адрес | Метка | Команда | Операнд | Машинный код | Комментарий |
LDA | 0B00 h | 3A 00 0B | ; чтение числа из памяти | ||
CMA | 2F | ; инвертирование числа | |||
STA | 0B01 h | 32 01 0B | ; запись числа в память | ||
HLT | ; останов |
Таблица 3.5 – Программа инвертирования содержимого ЯП на языке Ассемблер
При использовании косвенной адресации
Адрес | Метка | Команда | Операнд | Машинный код | Комментарий |
LXI | H, 0B00 h | 21 00 0B | ; запись в пару регистров ; H-L адреса числа | ||
MOV | A, M | 7E | ; чтение числа из памяти | ||
CMA | 2F | ; инвертирование числа | |||
INX | H | ; увеличение на 1 адреса ; числа | |||
MOV | M, A | ; запись числа в память | |||
HLT | ; останов |
Рисунок 3.16 – Схема алгоритма циклической программы суммирования однобайтных чисел
Таблица 3.6 – Циклическая программа суммирования однобайтных чисел
На языке Ассемблер
Адрес | Метка | Команда | Операнд | Машинный код | Комментарий |
LXI | H, 0A00 h | 21 00 0A | ; адрес первого слагаемого | ||
MVI | B, 05h | 06 05 | ; количество слагаемых | ||
ADD B: | XRA | AC | AF | ; обнуление регистра AC | |
MOV | C, AC | 4F | ; обнуление регистра C | ||
M1: | ADD | M | ; суммирование | ||
JNC | M2 | D2 0C 08 | ; условный переход на ; M2, если (TC) = 0 | ||
080B | INR | C | 0C | ; увеличение содержимого ; регистра C на единицу | |
080C | M2: | INX | H | ; увеличение содержимого ; пары регистров H-L ; на единицу | |
080D | DCR | B | ; уменьшение на единицу ; содержимого счетчика ; циклов | ||
080E | JNZ | M1 | C2 07 08 | ; условный переход на M1, если (TZ) = 0 | |
HLT | ; останов |
Таблица 3.7 – Программа суммирования массива однобайтных чисел на языке
Ассемблер, содержащая подпрограмму
Адрес | Метка | Команда | Операнд | Машинный код | Комментарий |
LXI | H, 0A00 h | 21 00 0A | ; адрес первого слагаемого | ||
MVI | B, 05h | 06 05 | ; количество слагаемых | ||
CALL | ADD B | CD 09 08 | ; вызов подпрограммы ; сложения | ||
HLT | ; останов | ||||
ADDB: | XRA | AC | AF | ; обнуление регистра AC | |
080A | MOV | C, AC | 4F | ; обнуление регистра C | |
080B | M1: | ADD | M | ; суммирование | |
080C | JNC | M2 | D2 10 08 | ; условный переход на ; M2, если (TC) = 0 | |
080F | INR | C | 0C | ; увеличение содержимого ; регистра C на единицу | |
M2: | INX | H | ; увеличение содержимого ; пары регистров H-L на ; единицу | ||
DCR | B | ; уменьшение на единицу ; содержимого счетчика ; циклов | |||
JNZ | M1 | C2 0B 08 | ; условный переход на M1, если (TZ) = 0 | ||
RET | C9 | ; возврат в основную ; программу |
ПРИНЦИПЫ ОРГАНИЗАЦИИ ОДНОКРИСТАЛЬНЫХ МИКРОКОНТРОЛЛЕРОВ
Рисунок 3.17 – Общая структурная схема ядра и периферийных модулей микроконтроллера семейства dsPIC33F
Рисунок 3.18 – Структурная схема DSP-процессора
Рисунок 3.19 – Программная модель микроконтроллера семейства dsPIC33F
Рисунок 3.20 – Карта памяти программ МК dsPIC33F
Рисунок 3.21 – Карта памяти данных МК dsPIC33
Рисунок 3.22 – Структурная схема системы тактирования МК dsPIC33F
Рисунок 3.23 – Структурная схема линии параллельного порта, объединенной с выводами периферийных функций
Рисунок 3.24 – Структурная схема модуля Timer1
Рисунок 3.25 – Структурная схема модуля захвата МК семейства dsPIC33F
Рисунок 3.26 – Структурная схема модуля сравнения выхода
Рисунок 3.27 – Структурная схема модуля аналого-цифрового преобразования МК dsPIC33fj32mc204
Таблица 3.8 – Символы используемые в системе команд микроконтроллеров dsPIC33F
Область | Описание |
#text | Означает литерал определённый как «текст» |
(text) | Означает «содержимое текста» |
[text] | Означает «позицию адресованную текстом» |
{ } | Необязательное поле или операция |
<n:m> | Битовая область регистра |
.b | Выбор байтного режима |
.d | Выбор режима двойного слова |
.S | Выбор теневого регистра |
.w | Выбор словного режима (по умолчанию) |
Acc | Один из двух аккумуляторов {A, B} |
AWB | Аккумулятор обратной записи назначения адреса регистра ∈ {W13, [W13] + = 2} |
bit4 | 4-разрядное поле выбора бита (используется в инструкциях адресации слова) ∈ {0...15} |
C, DC, N, OV, Z | Биты состояния MCU: (C) перенос, (DC) частичный перенос, (N) отрицательный результат, (OV) переполнение, (Z) нуль |
Expr | Абсолютный адрес, метка или выражение (решенный компоновщиком) |
f | Адрес файлового регистра ∈ {0x0000...0x1FFF} |
lit1 | 1-битный беззнаковый литерал ∈ {0,1} |
lit4 | 4- битный беззнаковый литерал ∈ {0...15} |
lit5 | 5- битный беззнаковый литерал ∈ {0...31} |
lit8 | 8- битный беззнаковый литерал ∈ {0...255} |
lit10 | 10- битный беззнаковый литерал ∈ {0...255} для байтного режима, ∈ {0:1023} для словного режима |
lit14 | 14- битный беззнаковый литерал ∈ {0...16384} |
lit16 | 16- битный беззнаковый литерал ∈ {0...65535} |
lit23 | 23- битный беззнаковый литерал ∈ {0...8388608}; LSB must be 0 |
None | Поле не требует ввода, может быть пустым |
OA, OB, SA, SB | Биты состояния DSP: ACCA переполнение, ACCB переполнение, ACCA насыщение, ACCB насыщение |
PC | Программный счетчик |
Slit10 | 10-битный знаковый литерал ∈ {-512…511} |
Slit16 | 16-битный знаковый литерал ∈ {-32768…32767} |
Slit6 | 6-битный знаковый литерал ∈ {-16…16} |
Wb | Основной Wрегистр ∈ {W0..W15} |
Wd | Регистр W места назначения ∈ {Wd, [Wd], [Wd++], [Wd--], [++Wd], [--Wd]} |
Окончание таблицы 3.8 | |
Wdo | Регистр W места назначения ∈{Wnd, [Wnd], [Wnd++], [Wnd--], [++Wnd], [--Wnd], [Wnd+Wb]} |
Wm,Wn | Рабочая регистровая пара делимого и делителя (прямая адресация) |
Wm*Wm | Рабочая регистровая пара множимого и множителя для квадратных инструкций ∈ {W4 * W4,W5 * W5,W6 * W6,W7 * W7} |
Wm*Wn | Рабочая регистровая пара множимого и множителя для DSP инструкций ∈ {W4 * W5,W4 * W6,W4 * W7,W5 * W6,W5 * W7,W6 * W7} |
Wn | Один из 16 рабочих регистров ∈ {W0..W15} |
Wnd | Один из 16 рабочих регистров места назначения ∈ {W0..W15} |
Wns | Один из 16 рабочих регистров источников ∈ {W0..W15} |
WREG | W0 (рабочий регистр используемый в инструкциях файловых регистров) |
Ws | Регистр источник W ∈ {Ws, [Ws], [Ws++], [Ws--], [++Ws], [--Ws]} |
Wso | Регистр источник W ∈{Wns, [Wns], [Wns++], [Wns--], [++Wns], [--Wns], [Wns+Wb]} |
Wx | Пространство данных Х инструкций упреждающей выборки адреса регистра для DSP ∈ {[W8] + = 6, [W8] + = 4, [W8] + = 2, [W8], [W8] - = 6, [W8] - = 4, [W8] - = 2, [W9] + = 6, [W9] + = 4, [W9] + = 2, [W9], [W9] - = 6, [W9] - = 4, [W9] - = 2, [W9 + W12], none} |
Wxd | Пространство данныхХинструкций упреждающей выборки назначения для DSP ∈ {W4..W7} |
Wy | Пространство данных Y инструкций упреждающей выборки адреса регистра для DSP ∈ {[W10] + = 6, [W10] + = 4, [W10] + = 2, [W10], [W10] - = 6, [W10] - = 4, [W10] - = 2, [W11] + = 6, [W11] + = 4, [W11] + = 2, [W11], [W11] - = 6, [W11] - = 4, [W11] - = 2, [W11 + W12], none} |
Wyd | Пространство данныхYинструкций упреждающей выборки назначения для DSP ∈ {W4..W7} |
Таблица 3.9 – Система команд микроконтроллеров dsPIC33F