
- •Микропроцессоры и мп системы
- •Диаграмма использования микропроцессоров
- •История развития микропроцессоров Поколения микропроцессоров:
- •Молекулярные микропроцессоры
- •Классификация микропроцессоров
- •Архитектура микроконтроллера i8051 (кр1816ве51)
- •Базовая архитектура
- •Структурная схема мк51
- •Организация памяти
- •Организация внутреннего озу (Карта распределения резидентной памяти данных)
- •Система команд
- •Способы адресации
- •Сложение
- •Сложение с переносом
- •Команды безусловного перехода
- •Команда проверки условия
- •Параллельные порты ввода-вывода
- •Логические команды
- •Система прерываний
Сложение
Команда складывает первый операнд со вторым и результат помещает в первый операнд. В качестве первого операнда всегда аккумулятор.
ADD A
R0-R7
Ad
@R0-R1
#d
В результате выполнения могут выставляться флаги C AC, OV
Пример:
Сложить 2 числа, одно из которых находится по адресу 30, а другое по адресу 40
MOV A,30
ADD A,40
Сложение с переносом
Команда складывает аккумулятор со вторым операндом и с флагом С. Флаг С находится в PSW и отвечает за перенос битов из байта
ADDC A
R0-R7
#d
Ad
@R0-R1
В результате выполнения выставляются флаги C AC, OV
Пример:
Сложить 2 числа, находящиеся в регистрах R2 и R3, результат разместить в ячейках 30 и 31.
F5+32=127
MOV A,R2
ADD A,R3
MOV 30,A
MOV A,#0
ADDC A,#0
MOV 31,A
Вычитание
Команда вычитает из аккумулятора второй операнд и всегда флаг С
SUBB A,
R0-R7
#d
Ad
@R0-R1
В результате выполнения выставляются флаги C AC, OV
Если флаг С не требуется учитывать (он мешает) использовать команду CLR C
Умножение
Команда умножает аккумулятор A на вспомогательный аккумулятор B, Результат распределяется следующим образом: Младший байт в А, старший байт в В
MUL AB
OV=1 когда младший байт результата больше FF
C=0 всегда
Деление
Команда делит А на В и результат размещает следующим образом: Частное в А, остаток в В
DIV AB
OV=1, если деление на 0
С=0
Команда увеличения на единицу
INC
R0-R7
Ad
A
@R0-R1
DPTR
Флаги не работают
Команда уменьшения на единицу
DEC
R0-R7
Ad
A
@R0-R1
DPTR
Флаги не работают
Команды работы с битами
Установить в 1
SetB
Bit
C
Setb 01
Setb 20.1
Установление в 0
CLR
Bit
C
A
Команда инвертирования
CPL
Bit
C
A
Команды условного перехода
JB bit,rel где rel – адрес перехода в программе
Команда осуществляет переход по адресу rel, если бит равен единице, иначе переход на следующую команду
JNB bit,rel
Команда осуществляет переход по адресу rel, если бит равен нулю, иначе переход на следующую команду
JC rel
JNC rel
JZ rel – переход по адресу если аккумулятор равен 0
JNZ – переход по адресу если аккумулятор не равен нулю
Команды безусловного перехода
LJMP rel
Команда проверки условия
CJNE сравнение и переход если не равно
A,Ad,rel
R0-R7,#d,rel
@R0-R1,#d,rel
А,#d,rel
Команда сравнивает первый операнд со вторым и переходит по адресу rel, если они не равны, иначе переход на следующую команду
Флаг C равен нулю если первый операнд больше второго, и единице если первый операнд меньше второго
Пример:
Разделить число в ячейке 30 на 10 и результат округлить. Результат поместить в ячейку 31
MOV A, 30
MOV B,#0A
DIV AB
MOV R2,B
CJNE R2,5,ADR1
LJMP ADR2
ADR1: JC ADR3
ADR2: INC A
ADR3: MOV 31,A
Команда организации цикла
DJNZ - уменьшение и переход, если не 0
R0-R7,rel
Ad,rel
Уменьшает на 1 первый операнд и переходит по адресу rel, если не равен нулю, иначе переходит на следующую команду
Пример: почистить 10 ячеек внутреннего ОЗУ, начиная с адреса 30
0000 MOV R5,#0A
0002 MOV R0,#30
0004 MOV @R0,#00
INC R0
DJNZ R5,0004
Команды обмена
SWAP A – обмен полубайтами внутри аккумулятора
XCH A, - обмен аккумулятора со вторым байтом
R0-R7
Ad
@R0-R1
XCHD A,@R0-R1 - обмен младшими полубайтами между аккумулятором и вторым операндом
Команды сдвига
RL A – циклический сдвиг влево, при этом 7 бит встает на место 0
RR A – циклический сдвиг вправо, при этом 0 бит встанет на место 7
RLC A – циклический сдвиг влево через перенос 7 бит в С, С в 0 бит
RRC A – циклический сдвиг вправо через С
Стеки
Стек – область памяти, работающая по принципу «первым пришел – последним ушел»
В МК51 стек находится во внутреннем ОЗУ, начиная с адреса 08
SP – регистр специальных функций в котором содержится адрес начала стека
Существует 2 команды работы со стеком, эти команды имеют одинаковые аббревиатуры во всех Ассемблерах.
PUSH ad – запись в стек
POP ad – чтение из стека
Запись происходит в любом порядке, однако извлечение происходит исключительно в обратном порядке