11
12
13
Рис. 5 - Алгоритм организации локального
цикла
На уровне команд микроконтроллера
да
1
2
3
4
5
6
7
8
9
10
11
12
нет
13
14
15
17
нет
да
16
Рис. 6 - Алгоритм преобразования параллельного
кода в последовательный
1
2
3
нет
да
4
5
нет
да
6
7
8
9
10
11
нет
да
12
13
14
15
16
17
18
да
нет
Рис. 7 - Алгоритм преобразования последовательного
кода в параллельный
Таблица 4
Система команд микроконтроллера МК48
Мнемоника команды |
Код операции |
Количество байтов в команде |
Время выполнения команды, циклы |
Выполняемые действия |
Арифметические операции |
||||
ADD A, Rn |
01101rrr |
1 |
1 |
|
ADD A, @Ri |
0110000i |
1 |
1 |
|
ADD A, #d |
00000011 |
2 |
2 |
|
INC A |
00010111 |
1 |
1 |
|
INC Rn |
00011rrr |
1 |
1 |
|
INC @Ri |
0001000i |
1 |
1 |
|
DEC A |
00000111 |
1 |
1 |
|
DEC Rn |
11001rrr |
1 |
1 |
|
Логические операции |
||||
ANL A, Rn |
01011rrr |
1 |
1 |
|
ANL A, @Ri |
0101000i |
1 |
1 |
|
ANL A, #d |
01010011 |
2 |
2 |
|
ORL A, Rn |
01001rrr |
1 |
1 |
|
ORL A, @Ri |
0100000i |
1 |
1 |
|
ORL A, #d |
01000011 |
2 |
2 |
|
XRL A, Rn |
11011rrr |
1 |
1 |
|
XLR A, @Ri |
1101100i |
1 |
1 |
|
XLR A, #d |
11010011 |
2 |
2 |
|
CLR A |
00100111 |
1 |
1 |
|
CPL A |
00110111 |
1 |
1 |
|
SWAP A |
01000111 |
1 |
1 |
|
RL A |
11100111 |
1 |
1 |
Циклический сдвиг влево (А) |
RLC A |
11110111 |
1 |
1 |
Сдвиг влево (А) через перенос |
RR A |
01110111 |
1 |
1 |
Циклический сдвиг вправо (А) |
RRC A |
01100111 |
1 |
1 |
Сдвиг вправо (А) через перенос |
ANL Pp, #d |
100110pp |
2 |
2 |
, |
ANL BUS, #d |
10011000 |
2 |
2 |
|
ORL Pp, #d |
100010pp |
2 |
2 |
, |
ORL BUS, #d |
10001000 |
2 |
2 |
|
CLR C |
10010111 |
1 |
1 |
|
CLR F0 |
10000101 |
1 |
1 |
|
CLR F1 |
10100101 |
1 |
1 |
|
CPL C |
1010111 |
1 |
1 |
|
CPL F0 |
10010101 |
1 |
1 |
|
CPL F1 |
10110101 |
1 |
1 |
|
Операции пересылки данных |
||||
MOV A, Rn |
11111rrr |
1 |
1 |
|
MOV A, @Ri |
1111000i |
1 |
1 |
|
MOV A, #d |
00100011 |
2 |
2 |
|
MOV Rn, A |
10101rrr |
1 |
1 |
|
MOV Rn, #d |
10111rrr |
2 |
2 |
|
MOV @Ri, A |
1010000i |
1 |
1 |
|
MOV @Ri, #d |
1011000i |
2 |
2 |
|
MOV A, T |
01000010 |
1 |
1 |
|
MOV T, A |
01100010 |
1 |
1 |
|
XCH A, Rn |
00101rrr |
1 |
1 |
|
XCH A, @Ri |
0010000i |
1 |
1 |
|
IN A, Pp |
000010pp |
1 |
2 |
|
INS A, BUS |
00001000 |
1 |
2 |
|
OUTL Pp, A |
001110pp |
1 |
2 |
|
OUTL BUS, A |
00000010 |
1 |
2 |
|
Операции передачи управления (условных и безусловных переходов) |
||||
JMP ad 11 |
a10a9a800100 |
2 |
2 |
Безусловный переход по 11 разрядному адресу |
JMPP @A |
10110011 |
1 |
2 |
переход в текущей странице памяти программ |
DJNZ Rn, ad |
11101rrr |
2 |
2 |
Декремент и переход по , если |
JC ad |
11110110 |
2 |
2 |
Переход по , если |
JNC ad |
11100110 |
2 |
2 |
Переход по , если |
JZ ad |
11000110 |
2 |
2 |
Переход по , если |
JNZ ad |
10010110 |
2 |
2 |
Переход по , если |
JT0 ad |
00110110 |
2 |
2 |
Переход по , если |
JNT0 ad |
00100110 |
2 |
2 |
Переход по , если |
JT1 ad |
01010110 |
2 |
2 |
Переход по , если |
JNT1 ad |
01000110 |
2 |
2 |
Переход по , если |
JF0 ad |
10110110 |
2 |
2 |
Переход по , если |
JF1 ad |
01110110 |
2 |
2 |
Переход по , если |
JTF ad |
00010110 |
2 |
2 |
Переход по , если |
CALL ad |
a10a9a810100 |
2 |
2 |
Вызов подпрограммы по |
RET |
10000011 |
1 |
2 |
Возврат из подпрограммы без восстановления ССП |
RETR |
10010011 |
1 |
2 |
Возврат из подпрограммы с восстановлением ССП |
Операции управления режимами микроконтроллера |
||||
STRT T |
01010101 |
1 |
1 |
Запуск таймера |
STRT CNT |
01000101 |
1 |
1 |
Запуск счетчика |
STOP TCNT |
01100101 |
1 |
1 |
Останов таймер/счетчика |
EN TCNT |
00100101 |
1 |
1 |
Разрешение прерывания от таймера/счетчика |
DIS TCNT1 |
00110101 |
1 |
1 |
Запрещение прерываний от таймера/счетчика |
SEL RB0 |
11000101 |
1 |
1 |
Выбор банка 0 РПД; |
SEL RB1 |
11010101 |
1 |
1 |
Выбор банка 1 РПД; |
SEL MB0 |
11100101 |
1 |
1 |
Выбор банка 0 памяти программ; |
SEL MB1 |
11110101 |
1 |
1 |
Выбор банка 1 памяти программ; |
NOP |
00000000 |
1 |
1 |
Холостая команда |