
- •М.Л.Кулиш
- •Содержание разделов
- •Некоторые советы по созданию больших программ
- •Приложение A. Переменные Бейсика
- •Приложение B. Система команд микроконтроллера 8051
- •Приложение C. Коды команд MCS-51
- •Типы данных и переменных
- •DEBOUNCE
- •LCD, LCDBUS, LCDPIN
- •Операторы Bascom-8051
- •Функции Bascom-8051
- •Элементы
- •Назначение и применение элементов языка Bascom
- •14. Программирование прерываний
- •Числовые переменные
- •Строковые переменные
- •Система команд микроконтроллера 8051
- •Команды передачи данных
- •Команды перехода
- •Команды перехода (продолжение)
- •Логические операции
- •Логические операции (продолжение)
- •Очистка А
- •Инвертирование А
- •Сдвиг А влево
- •Сдвиг А влево через перенос
- •Сдвиг А вправо
- •Сдвиг А вправо через перенос
- •Перестановка полубайтов А
- •SWAP A
- •Установка переноса
- •SETB C
- •Установка бита
- •SETB bit
- •Сброс переноса
- •Сброс бита
- •Загрузка переноса битом
- •Загрузка бита переносом
- •Тестирование бита Z
- •Тестирование переноса
- •Тестирование битов
- •Если bit=C
- •Инверсия бита
- •Инверсия переноса
- •Команды арифметических операций
- •Сложение аккумулятора с РОН
- •ADD A, direct
- •ADD A, #data
- •ADDC A, R0
- •ADDC A, R1
- •ADDC A, R2
- •ADDC A, R3
- •ADDC A, R4
- •ADDC A, R5
- •ADDC A, R6
- •ADDC A, R7
- •ADDC A, direct
- •ADDC A, @R0
- •ADDC A, @R1
- •ADDC A, #data
- •SUBB A, R0
- •SUBB A, R1
- •SUBB A, R2
- •SUBB A, R3
- •SUBB A, R4
- •SUBB A, R5
- •SUBB A, R6
- •SUBB A, R7
- •SUBB A, direct
- •SUBB A, @R0
- •SUBB A, @R1
- •SUBB A, #data
- •Команды арифметических операций (продолжение)
- •Инкрементирование А
- •Инкрементирование РОН
- •INC direct
- •Инкрементирование DPTR
- •INC DPTR
- •Декрементирование А
- •Декрементирование РОН
- •DEC direct
- •Умножение
- •Деление
- •Десятичная коррекция
=========================================================================== Справочник по программированию «Bascom-8051» ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Переменные Бейсика |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Приложение A |
|
|||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Числовые переменные |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
Старший байт (Adessr + 3) |
|
|
|
|
|
|
(Adress = 2) |
|
|
|
|
|
|
|
|
(Adress = 2) |
|
|
|
|
Младший байт (Adress) |
|
|||||||||||||||||||||||||||||||||||||||||
Тип переменной |
|
Число |
|
Диапазон |
|
Пример |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Его адрес - имя |
|
|
|
|||||||||
|
|
байт |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
переменной |
|
|
|
|||||||
|
|
|
|
|
|
|
|
7 |
|
|
6 |
|
5 |
4 |
3 |
|
2 |
|
1 |
|
|
0 |
|
7 |
|
6 |
5 |
|
4 |
|
3 |
2 |
1 |
|
0 |
|
7 |
6 |
|
5 |
4 |
3 |
2 |
|
1 |
0 |
|
7 |
|
6 |
|
5 |
|
4 |
|
3 |
2 |
|
1 |
|
0 |
|||||||||||
Bit – |
|
1 или |
|
От 0 до 1 |
|
«1» |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
битовая |
|
1/8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Byte – |
|
1 |
От 0 до 255 |
|
«100» |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
1 |
|
0 |
|
0 |
|
0 |
1 |
|
0 |
|
0 |
|||
байтовая |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Word - |
|
2 |
|
От 0 до |
|
«1000» |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
|
0 |
0 |
0 |
1 |
|
1 |
1 |
|
1 |
|
1 |
|
0 |
|
1 |
|
0 |
0 |
|
0 |
|
0 |
||||
двухбайтовая |
|
|
655535 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Integer – |
|
2 |
|
От минус |
|
«-1000» |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
|
1 |
1 |
1 |
0 |
|
0 |
0 |
|
0 |
|
0 |
|
1 |
|
1 |
|
0 |
0 |
|
0 |
|
0 |
||||
двухбайтовая со |
|
|
|
32768 до |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
знаком |
|
|
32767 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Long – |
|
4 |
|
От минус- |
|
«20000» |
0 |
|
|
0 |
|
0 |
0 |
0 |
|
0 |
|
0 |
|
|
0 |
|
0 |
|
0 |
0 |
|
0 |
|
0 |
0 |
0 |
|
0 |
|
0 |
1 |
|
0 |
0 |
1 |
1 |
|
1 |
0 |
|
0 |
|
0 |
|
1 |
|
0 |
|
0 |
0 |
|
0 |
|
0 |
||||||||||||
четырехбайтовая |
|
|
2147483648 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
со знаком |
|
|
|
до |
|
«-20000» |
1 |
|
|
1 |
|
1 |
1 |
1 |
|
1 |
|
1 |
|
|
1 |
|
1 |
|
1 |
1 |
|
1 |
|
1 |
1 |
1 |
|
1 |
|
1 |
0 |
|
1 |
1 |
0 |
0 |
|
0 |
1 |
|
1 |
|
1 |
|
1 |
|
0 |
|
0 |
0 |
|
0 |
|
0 |
||||||||||||
|
|
|
2147483647 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Single – |
|
4 |
|
От |
|
|
|
Знак |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
в формате с |
|
|
±5,8E-39 до |
|
|
|
|
|
|
Порядок (двоичный от |
|
|
|
24-битная мантисса – значение от 1 до 2 . Старший бит мантиссы не записывается |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
плавающей |
|
|
|
±1,7E+38 |
|
|
|
|
|
|
|
|
|
|
минус 127 до +127 |
|
|
|
|
|
|
|
|
|
|
– всегда подразумевается, что там записана единица |
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||
точкой |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
«1» |
0 |
|
|
0 |
|
1 |
1 |
1 |
|
1 |
|
1 |
|
|
1 |
|
1 |
|
0 |
0 |
|
0 |
|
0 |
0 |
0 |
|
0 |
|
0 |
0 |
|
0 |
0 |
0 |
0 |
|
0 |
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0 |
0 |
|
0 |
|
0 |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
«128» |
0 |
|
|
1 |
|
0 |
0 |
0 |
|
0 |
|
1 |
|
|
1 |
|
0 |
|
0 |
0 |
|
0 |
|
0 |
0 |
0 |
|
0 |
|
0 |
0 |
|
0 |
0 |
0 |
0 |
|
0 |
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0 |
0 |
|
0 |
|
0 |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
«-2.5» |
1 |
|
|
1 |
|
0 |
0 |
0 |
|
0 |
|
0 |
|
|
0 |
|
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
|
0 |
0 |
0 |
0 |
|
0 |
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0 |
0 |
|
0 |
|
0 |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Строковые переменные |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
Назначение |
|
Длина |
|
|
Содержание |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Содержимое ячеек в Hex-коде, начиная с нулевой (Adress) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
1 |
|
|
2 |
|
3 |
|
|
4 |
|
5 |
6 |
|
|
|
7 |
8 |
|
|
9 |
|
10 |
11 |
|
|
12 |
13 |
|
|
14 |
15 |
|
16 |
|
17 |
|
18 |
|
|
19 |
|
20 |
|
|
|||||||||||||
Dim S1 As String * 20 |
|
21 байт |
|
«123 S5.5+12» |
|
|
31 |
32 |
|
|
33 |
|
20 |
|
|
53 |
|
35 |
2E |
|
|
35 |
2B |
|
|
31 |
|
32 |
00 |
|
|
xx |
xx |
|
|
xx |
xx |
xx |
|
|
xx |
xx |
|
|
xx |
|
xx |
|
||||||||||||||||||||||||
Dim S1 As String * 16 |
|
17 байт |
|
«1S.5» |
|
|
|
|
|
|
31 |
53 |
|
|
2E |
|
35 |
|
|
00 |
|
xx |
xx |
|
|
xx |
xx |
|
|
xx |
|
xx |
xx |
|
|
xx |
xx |
|
|
xx |
xx |
xx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
Dim S1 As String * 8 |
|
9 байт |
|
«ST2» |
|
|
|
|
|
|
53 |
54 |
|
|
32 |
|
00 |
|
|
xx |
|
xx |
xx |
|
|
xx |
xx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
xx – произвольный код. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=========================================================================================================================== A-1

===================================== Справочник по программированию «Bascom-8051» ==
|
|
|
|
Приложение B |
|
Система команд микроконтроллера 8051 |
|
||||
|
|
|
|
|
|
Действие команды |
|
Мнемоническое |
КОП(16) |
Описание |
Кол. |
|
обозначение |
циклов |
|||
|
|
|
|
||
|
|
Команды передачи данных |
|
|
|
|
|
MOV A,R0 |
E8 |
(A)←(R0) |
1 |
|
|
MOV A,R1 |
E9 |
(A)←(R1) |
1 |
|
|
MOV A,R2 |
EA |
(A)←(R2) |
1 |
Загрузка А из РОН |
|
MOV A,R3 |
EB |
(A)←(R3) |
1 |
|
MOV A,R4 |
EC |
(A)←(R4) |
1 |
|
|
|
||||
|
|
MOV A,R5 |
ED |
(A)←(R5) |
1 |
|
|
MOV A,R6 |
EE |
(A)←(R6) |
1 |
|
|
MOV A,R7 |
EF |
(A)←(R7) |
1 |
Загрузка А из прямо адресуемого регистра |
|
MOV A, direct |
E5,da |
(A)←(direct) |
1 |
Загрузка А из косвенно адресуемого |
|
MOV A,@R0 |
E6 |
(A)←((R0)) |
1 |
регистра |
|
MOV A,@R1 |
E7 |
(A)←((R1)) |
1 |
Загрузка А константой |
|
MOV A, #data |
74,dt |
(A)←#data |
1 |
|
|
MOV R0,A |
F8 |
(R0)←(A) |
1 |
|
|
MOV R1,A |
F9 |
(R1)←(A) |
1 |
|
|
MOV R2,A |
FA |
(R2)←(A) |
1 |
Загрузка РОН из А |
|
MOV R3,A |
FB |
(R3)←(A) |
1 |
|
MOV R4,A |
FC |
(R4)←(A) |
1 |
|
|
|
||||
|
|
MOV R5,A |
FD |
(R5)←(A) |
1 |
|
|
MOV R6,A |
FE |
(R6)←(A) |
1 |
|
|
MOV R7,A |
FF |
(R7)←(A) |
1 |
|
|
MOV R0,direct |
A8,da |
(R0)←(direct) |
2 |
|
|
MOV R1,direct |
A9,da |
(R1)←(direct) |
2 |
|
|
MOV R2,direct |
AA,da |
(R2)←(direct) |
2 |
Загрузка РОН из адресуемого регистра |
|
MOV R3,direct |
AB,da |
(R3)←(direct) |
2 |
|
MOV R4,direct |
AC,da |
(R4)←(direct) |
2 |
|
|
|
||||
|
|
MOV R5,direct |
AD,da |
(R5)←(direct) |
2 |
|
|
MOV R6,direct |
AE,da |
(R6)←(direct) |
2 |
|
|
MOV R7,direct |
AF,da |
(R7)←(direct) |
2 |
|
|
MOV R0,#data |
78,dt |
(R0)←(#data) |
1 |
|
|
MOV R1,#data |
79,dt |
(R1)←(#data) |
1 |
|
|
MOV R2,#data |
7A,dt |
(R2)←(#data) |
1 |
Загрузка РОН константой |
|
MOV R3,#data |
7B,dt |
(R3)←(#data) |
1 |
|
MOV R4,#data |
7C,dt |
(R4)←(#data) |
1 |
|
|
|
||||
|
|
MOV R5,#data |
7D,dt |
(R5)←(#data) |
1 |
|
|
MOV R6,#data |
7E,dt |
(R6)←(#data) |
1 |
|
|
MOV R7,#data |
7F,dt |
(R7)←(#data) |
1 |
Загрузка прямо адресуемого регистра из А |
|
MOV direct, A |
F5,da |
(direct)←(A) |
1 |
Загрузка прямо адресуемого регистра из |
|
MOV direct,@R0 |
86,da |
(direct)←((R0)) |
2 |
косвенно адресуемого регистра |
|
MOV direct,@R1 |
87,da |
(direct)←((R1)) |
2 |
Загрузка прямо адресуемого регистра |
|
MOV direct, #data |
75,da,dt |
(direct)← #data |
2 |
константой |
|
||||
|
|
|
|
|
|
Загрузка прямо адресуемого регистра из |
|
MOV direct, direct |
85,daпр,daист. |
(direct)←(direct) |
2 |
прямо адресуемого регистра |
|
||||
|
|
|
|
|
============================================================================= B-1

===================================== Справочник по программированию «Bascom-8051» ==
Действие команды |
Мнемоническое |
КОП(16) |
Описание |
Кол. |
|
обозначение |
циклов |
||||
|
|
|
|||
Команды |
передачи данных ( |
продолжение) |
|
|
|
|
MOV direct,R0 |
88,da |
(direct)←(R0) |
2 |
|
|
MOV direct,R1 |
89,da |
(direct)←(R1) |
2 |
|
Загрузка прямо адресуемого регистра из |
MOV direct,R2 |
8A,da |
(direct)←(R2) |
2 |
|
MOV direct,R3 |
8B,da |
(direct)←(R3) |
2 |
||
РОН |
MOV direct,R4 |
8C,da |
(direct)←(R4) |
2 |
|
|
MOV direct,R5 |
8D,da |
(direct)←(R5) |
2 |
|
|
MOV direct,R6 |
8E,da |
(direct)←(R6) |
2 |
|
|
MOV direct,R7 |
8F,da |
(direct)←(R7) |
2 |
|
Загрузка косвенно адресуемого регистра из |
MOV @R0, A |
F6 |
((R0))←(A) |
1 |
|
A |
MOV @R1, A |
F7 |
((R1))←(A) |
1 |
|
Загрузка косвенно адресуемого регистра из |
MOV @R0, direct |
A6,da |
((R0))←(direct) |
2 |
|
прямо адресуемого регистра |
MOV @R1, direct |
A7,da |
((R1))←(direct) |
2 |
|
Загрузка косвенно адресуемого регистра |
MOV @R0, #data |
76,dt |
((R0))←#data |
1 |
|
константой |
MOV @R1, #data |
77,dt |
((R1))←#data |
1 |
|
Загрузка индексного регистра 16 битной |
MOV DPTR #data16 |
90,dt |
(DPTR)←#data15..0 |
2 |
|
константой |
|||||
|
|
|
|
||
Загрузка A из памяти команд регистров |
MOVC A, @A+DPTR |
93 |
(A)←((A)+(DPTR)) |
2 |
|
MOVC A, @A+PC |
83 |
(PC)←(PC)+1 |
2 |
||
|
(A)←((A)+(PC)) |
||||
|
|
|
|
||
Загрузка A из памяти данных |
MOVX A,@R0 |
E2 |
(A)←((R0)) |
2 |
|
MOVX A,@R1 |
E3 |
(A)←((R1)) |
2 |
||
|
MOVX A,@DPTR |
E0 |
(A)←((DPTR)) |
2 |
|
Загрузка в память данных из A |
MOVX @R0,A |
F2 |
((R0))←(A) |
2 |
|
MOVX @R1,A |
F3 |
((R1))←(A) |
2 |
||
|
MOVX @DPTR,A |
F0 |
((DPTR))←(A) |
2 |
|
Загрузка в стек указанного регистра |
PUSH direct |
C0,da |
(SP)←(SP)+1 |
2 |
|
((SP))←(direct) |
|||||
|
|
|
|
||
Загрузка в указанный регистр из стека |
POP direct |
D0,da |
(direct)←((SP)) |
2 |
|
(SP)←(SP)-1 |
|||||
|
|
|
|
||
|
XCH A,R0 |
C8 |
(A)↔(R0) |
1 |
|
|
XCH A,R1 |
C9 |
(A)↔(R1) |
1 |
|
|
XCH A,R2 |
CA |
(A)↔(R2) |
1 |
|
Обмен А байтовый с РОН |
XCH A,R3 |
CB |
(A)↔(R3) |
1 |
|
XCH A,R4 |
CC |
(A)↔(R4) |
1 |
||
|
|||||
|
XCH A,R5 |
CD |
(A)↔(R5) |
1 |
|
|
XCH A,R6 |
CE |
(A)↔(R6) |
1 |
|
|
XCH A,R7 |
CF |
(A)↔(R7) |
1 |
|
Обмен А с прямо адресуемым регистром |
XCH A, direct |
CA,da |
(A)↔(direct) |
1 |
|
Обмен А с косвенно адресуемых регистров |
XCH A,@R0 |
C6 |
(A)↔((R0)) |
1 |
|
XCH A,@R1 |
C7 |
(A)↔((R1)) |
1 |
||
|
|||||
Обмен полубайтов косвенно адресуемых |
XCHD A,@R0 |
D6 |
(A3..0)↔((R0)3..0) |
1 |
|
регистров с А |
XCHD A,@R1 |
D7 |
(A3..0)↔((R1)3..0) |
1 |
============================================================================= B-2

===================================== Справочник по программированию «Bascom-8051» ==
Действие команды |
Мнемоническое |
КОП(16) |
|
Описание |
Кол. |
|
обозначение |
|
циклов |
||||
|
|
|
|
|||
|
Команды перехода |
|
|
|
|
|
Вызов подпрограмы с полным адресом |
LCALL addr16 |
12,adr16 |
|
PC←addr16 |
2 |
|
|
SP←SP+2 |
|||||
|
|
|
|
|
||
|
ACALL 0XX |
11,adr8 |
|
|
2 |
|
|
ACALL 1XX |
31,adr8 |
|
|
2 |
|
|
ACALL 2XX |
51,adr8 |
|
PC←addr11 |
2 |
|
Вызов подпрограмы в пределах текущих 2- |
ACALL 3XX |
71,adr8 |
|
2 |
||
(0..10) |
||||||
х килобайт |
ACALL 4XX |
91,adr8 |
2 |
|||
|
SP←SP+2 |
|||||
|
ACALL 5XX |
B1,adr8 |
|
2 |
||
|
|
|
||||
|
ACALL 6XX |
D1,adr8 |
|
|
2 |
|
|
ACALL 7XX |
F1,adr8 |
|
|
2 |
|
Возврат из подпрограммы обработки |
RET |
22 |
|
PC←(SP) |
2 |
|
прерываний |
|
SP←SP-2 |
||||
|
|
|
|
|||
Возврат из подпрограммы с разрешением |
RETI |
32 |
|
PC←(SP) |
2 |
|
прерываний |
|
|
|
SP←SP-2 бит EA ←1 |
|
|
Переход с полным адресом |
LJMP addr16 |
02,adr16 |
|
PC←addr16 |
2 |
|
|
AJMP 0XX |
01,adr8 |
|
|
2 |
|
|
AJMP 1XX |
21,adr8 |
|
|
2 |
|
|
AJMP 2XX |
41,adr8 |
|
|
2 |
|
Переход в пределах текущих 2-х килобайт |
AJMP 3XX |
61,adr8 |
|
PC0..10←addr11 |
2 |
|
AJMP 4XX |
81,adr8 |
|
2 |
|||
|
|
|
||||
|
AJMP 5XX |
A1,adr8 |
|
|
2 |
|
|
AJMP 6XX |
C1,adr8 |
|
|
2 |
|
|
AJMP 7XX |
E1,adr8 |
|
|
2 |
|
Переход на смещение ±127 байт |
SJMP rel |
80,rel |
|
PC←PC+2+rel |
2 |
|
Косвенный относительный переход |
JMP @A+DPTR |
73 |
|
PC←(A+DPTR) |
2 |
|
Тестирование аккумулятора на ноль (на |
JZ rel |
60,rel |
|
Если А=0 |
2 |
|
|
|
|
PC←PC+2+rel |
|
||
самом деле бита Z) |
JNZ rel |
70,rel |
|
Если А ≠0 |
2 |
|
|
|
|
|
PC←PC+2+rel |
|
|
Сравнение аккумулятора с прямо |
|
|
|
Если А≠direct |
|
|
адресуемым регистром и переход ±127 |
CJNZ A,#direct, rel |
B5,dt,rel |
|
PC←PC+3+rel |
2 |
|
байт |
|
|
|
Если A > direct C←1 |
|
|
Сравнение аккумулятора с константой и |
CJNZ A, #data, rel |
B4,dt,rel |
|
Если А≠data |
2 |
|
|
PC←PC+3+rel |
|||||
переход ±127 байт |
|
|||||
|
|
|
Если A > data C←1 |
|
||
|
|
|
|
|
||
|
CJNZ R0,#data,rel |
B8,dt,rel |
|
|
2 |
|
|
CJNZ R1,#data,rel |
B9,dt,rel |
|
Если Ri≠data |
2 |
|
|
CJNZ R2,#data,rel |
BA,dt,rel |
|
2 |
||
|
|
PC←PC+3+rel |
||||
Сравнение РОН с константой и переход в |
CJNZ R3,#data,rel |
BB,dt,rel |
|
2 |
||
|
Если Ri > data C←1 |
|||||
диапазоне ±127 байт |
CJNZ R4,#data,rel |
BC,dt,rel |
|
2 |
||
|
|
|
|
иначе С←0 |
|
|
|
CJNZ R5,#data,rel |
BD,dt,rel |
|
2 |
||
|
CJNZ R6,#data,rel |
BE,dt,rel |
|
|
2 |
|
|
CJNZ R7,#data,rel |
BF,dt,rel |
|
|
2 |
|
Сравнение косвенно адресуемого регистра |
CJNZ@R0,#data,rel |
B6,dt,rel |
|
Если @Ri≠data |
2 |
|
|
|
|
|
|||
с константой и переход ±127 байт |
CJNZ@R1,#data,rel |
B7,dt,rel |
|
PC←PC+3+rel |
2 |
|
|
Если @Ri > data C←1 |
============================================================================= B-3