- •М.Л.Кулиш
- •Содержание разделов
- •Некоторые советы по созданию больших программ
- •Приложение 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» ==
Действие команды |
Мнемоническое |
КОП(16) |
Описание |
Кол. |
|
обозначение |
циклов |
||||
|
|
|
|||
Команды перехода (продолжение) |
|
|
|||
|
DJNZ R0, rel |
D8,rel |
|
2 |
|
|
DJNZ R1, rel |
D9,rel |
|
2 |
|
|
DJNZ R2, rel |
DA,rel |
Ri←Ri-1 |
2 |
|
|
DJNZ R3, rel |
DB,rel |
2 |
||
Декремент РОН и переход, если не ноль |
если Ri≠0 |
||||
DJNZ R4, rel |
DB,rel |
2 |
|||
|
PC←PC+2+rel |
||||
|
DJNZ R5, rel |
DC,rel |
2 |
||
|
|
||||
|
DJNZ R6, rel |
DE,rel |
|
2 |
|
|
DJNZ R7, rel |
DF,rel |
|
2 |
|
Декремент прямо адресуемого байта и |
DJNZ direct, rel |
D5,da,rel |
direct←direct-1 если |
2 |
|
переход, если не ноль |
direct≠0 PC←PC+3+rel |
||||
|
|
|
|||
Нет операции |
NOP |
00 |
|
1 |
|
|
Логические операции |
|
|
|
|
|
ANL A,R0 |
58 |
(A)←(A) AND (R0) |
1 |
|
|
ANL A,R1 |
59 |
(A)←(A) AND (R1) |
1 |
|
|
ANL A,R2 |
5A |
(A)←(A) AND (R2) |
1 |
|
Логическое “И” А с РОН |
ANL A,R3 |
5B |
(A)←(A) AND (R3) |
1 |
|
ANL A,R4 |
5C |
(A)←(A) AND (R4) |
1 |
||
|
|||||
|
ANL A,R5 |
5D |
(A)←(A) AND (R5) |
1 |
|
|
ANL A,R6 |
5E |
(A)←(A) AND (R6) |
1 |
|
|
ANL A,R7 |
5F |
(A)←(A) AND (R7) |
1 |
|
Логическое “И” А с прямо адресуемым |
ANL A, direct |
55,da |
(A)←(A) AND (direct) |
1 |
|
регистром |
|||||
|
|
|
|
||
Логическое “И” А с косвенно адресуемым |
ANL A,@R0 |
56 |
(A)←(A) AND ((R0)) |
1 |
|
регистром |
ANL A,@R1 |
57 |
(A)←(A) AND ((R1)) |
1 |
|
Логическое “И” А с константой |
ANL A, #data |
54,dt |
(A)←(A) AND #data |
1 |
|
Логическое “И” прямо адресуемого |
ANL direct, A |
52,da |
(direct)←(direct) AND |
1 |
|
регистра с А |
(A) |
||||
|
|
|
|||
Логическое “И” прямо адресуемого |
ANL direct, #data |
53,da,dt |
(direct)←(direct) AND |
2 |
|
регистра с константой |
#data |
||||
|
|
|
|||
|
ORL A,R0 |
48 |
(A)←(A) OR (R0) |
1 |
|
|
ORL A,R1 |
49 |
(A)←(A) OR (R1) |
1 |
|
|
ORL A,R2 |
4A |
(A)←(A) OR (R2) |
1 |
|
Логическое “ИЛИ” А с РОН |
ORL A,R3 |
4B |
(A)←(A) OR (R3) |
1 |
|
ORL A,R4 |
4C |
(A)←(A) OR (R4) |
1 |
||
|
|||||
|
ORL A,R5 |
4D |
(A)←(A) OR (R5) |
1 |
|
|
ORL A,R6 |
4E |
(A)←(A) OR (R6) |
1 |
|
|
ORL A,R7 |
4F |
(A)←(A) OR (R7) |
1 |
|
Логическое “ИЛИ” А с прямо адресуемым |
ORL A, direct |
45,da |
(A)←(A) OR (direct) |
1 |
|
регистром |
|
|
|
|
|
Логическое “ИЛИ” А с косвенно |
ORL A,@R0 |
46 |
(A)←(A) OR ((R0)) |
1 |
|
адресуемым регистром |
ORL A,@R1 |
47 |
(A)←(A) OR ((R1)) |
1 |
|
Логич еское “ИЛИ” А с константой |
ORL A, #data |
44,dt |
(A)←(A) OR #data |
1 |
|
Логическое “ИЛИ” прямо адресуемого |
ORL direct, A |
42,da |
(direct)←(direct)OR(A) |
1 |
|
регистра с А |
|||||
|
|
|
|
||
Логическое “ИЛИ” прямо адресуемого |
ORL direct, #data |
43,da,dt |
(direct)←(direct) OR |
2 |
|
регистра с константой |
#data |
||||
|
|
|
|||
============================================================================= B-4
===================================== Справочник по программированию «Bascom-8051» ==
Действие команды |
|
|
|
Мнемоническое |
КОП(16) |
Описание |
Кол. |
||||||
|
|
|
обозначение |
циклов |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
Логические операции (продолжение) |
|
|
|||
|
|
|
|
|
|
|
|
|
XRL A,R0 |
68 |
(A)←(A) XOR (R0) |
1 |
|
|
|
|
|
|
|
|
|
|
XRL A,R1 |
69 |
(A)←(A) XOR (R1) |
1 |
|
|
|
|
|
|
|
|
|
|
XRL A,R2 |
6A |
(A)←(A) XOR (R2) |
1 |
|
Исключающее “ИЛИ” А с РОН |
XRL A,R3 |
6B |
(A)←(A) XOR (R3) |
1 |
|||||||||
XRL A,R4 |
6C |
(A)←(A) XOR (R4) |
1 |
||||||||||
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
XRL A,R5 |
6D |
(A)←(A) XOR (R5) |
1 |
|
|
|
|
|
|
|
|
|
|
XRL A,R6 |
6E |
(A)←(A) XOR (R6) |
1 |
|
|
|
|
|
|
|
|
|
|
XRL A,R7 |
6F |
(A)←(A) XOR (R7) |
1 |
|
Исключающее “ИЛИ” А с прямо |
XRL A, direct |
65,da |
(A)←(A) XOR (direct) |
1 |
|||||||||
адресуемым регистром |
|
|
|
||||||||||
|
|
|
|
|
|
|
|||||||
Исключающее “ИЛИ” А с косвенно |
XRL A,@R0 |
66 |
(A)←(A) XOR ((R0)) |
1 |
|||||||||
адресуемым регистром |
|
|
|
XRL A,@R1 |
67 |
(A)←(A) XOR ((R1)) |
1 |
||||||
Исключающее “ИЛИ” А с константой |
XRL A, #data |
64,dt |
(A)←(A) XOR #data |
1 |
|||||||||
Исключающее “ИЛИ” прямо адресуемого |
XRL direct, A |
62,da |
(drect)←(direct)XOR |
1 |
|||||||||
регистра с А |
|
|
|
|
|
(A) |
|
||||||
Исключающее “ИЛИ” прямо адресуемого |
XRL direct, #data |
63,da,dt |
(direct)←(direct) XOR |
2 |
|||||||||
регистра с константой |
|
|
|
|
|
#data |
|
||||||
Очистка А |
|
|
|
CLR A |
E4 |
(A)←0 |
1 |
||||||
Инвертирование А |
|
|
|
CPL A |
F4 |
(A)← NOT (A) |
1 |
||||||
Сдвиг А влево |
|
|
|
RL A |
23 |
(An+1)←(An) (A0)←(A7), |
1 |
||||||
|
|
|
|
|
A |
|
|
|
n=0..6 |
||||
|
|
|
|
|
|
|
|
|
|
|
|||
Сдвиг А влево через перенос |
|
|
|
RLC A |
33 |
(An+1)←(An) |
1 |
||||||
|
|
|
|
|
|
|
|
|
(A0)←(C), n=0..6 |
||||
|
C |
|
|
|
A |
|
|
|
(C)←(A7) |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|||
Сдвиг А вправо |
|
|
|
RR A |
03 |
(An)←(An+1) (A7)←(A0), |
1 |
||||||
|
|
|
|
|
A |
|
|
|
n=0..6 |
||||
|
|
|
|
|
|
|
|
|
|
|
|||
Сдвиг А вправо через перенос |
|
|
|
RRC A |
13 |
(An)←(An+1) |
1 |
||||||
|
|
|
|
|
|
|
|
|
(A7)←(C), n=0..6 |
||||
|
C |
|
|
A |
|
|
|
(C)←(A0) |
|
||||
Перестановка полубайтов А |
|
|
|
SWAP A |
C4 |
(A3..0)↔(A7..4) |
1 |
||||||
============================================================================= B-5
===================================== Справочник по программированию «Bascom-8051» ==
Действие команды |
Мнемоническое |
КОП(16) |
Описание |
Кол. циклов |
C |
|||
обозначение |
||||||||
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
||
|
Команды |
битовой обработки ( |
команды логического процессора) |
|
|
|||
Установка переноса |
|
SETB C |
D3 |
(C)←1 |
|
1 |
+ |
|
Установка бита |
|
SETB bit |
D2,bit |
(bit)←1 |
|
1 |
|
|
Сброс переноса |
|
CLR C |
C3 |
(C)←0 |
|
1 |
0 |
|
Сброс бита |
|
CLR bit |
C2,bit |
(bit)←0 |
|
1 |
|
|
Загрузка переноса битом |
|
MOV C, bit |
A2,bit |
(C)←(bit) |
|
1 |
+ |
|
Загрузка бита переносом |
|
MOV bit, C |
92,bit |
(bit)←(C) |
|
2 |
|
|
Логическое «И» с |
|
ANL C, bit |
82,bit |
(C)←(C)AND(bit) |
2 |
+ |
||
битом переносом |
|
ANL C, /bit |
B0,bit |
(C)←(C)AND NOT(bit) |
2 |
+ |
||
Логическое «ИЛИ» с |
|
ORL C, bit |
72,bit |
(C)←(C) OR (bit) |
2 |
+ |
||
битом переносом |
|
ORL C, /bit |
A0,bit |
(C)←(C)OR NOT(bit) |
2 |
+ |
||
Тестирование бита Z |
|
JZ rel |
60,rel |
Если А=0 |
|
2 |
- |
|
|
PC←PC+2+rel |
|||||||
|
|
|
|
|
||||
|
|
JNZ rel |
70,rel |
Если А ≠0 PC←PC+2+rel |
2 |
- |
||
Тестирование переноса |
|
JC rel |
40,rel |
Если C=1 |
PC←PC+2+rel |
2 |
|
|
|
JNC rel |
50,rel |
Если C=0 |
PC←PC+2+rel |
2 |
|
||
|
|
|
||||||
|
|
JB bit, rel |
20,bit,rel |
Если bit=1 |
PC←PC+3+rel |
2 |
|
|
Тестирование битов |
|
JNB bit, rel |
30,bit,rel |
Если bit=0 |
PC←PC+3+rel |
2 |
|
|
|
JBC bit, rel |
10,bit,rel |
Если bit=C |
|
2 |
|
||
|
|
|
|
|||||
|
|
|
|
PC←PC+3+rel , bit=0 |
|
|
||
Инверсия бита |
|
CPL bit |
B2,bit |
(bit)←NOT(bit) |
1 |
|
||
Инверсия переноса |
|
CPL C |
B3 |
(C)←NOT(C) |
1 |
+ |
||
============================================================================= B-6
===================================== Справочник по программированию «Bascom-8051» ==
|
Мнемоническое |
|
|
|
Флаги |
|
цикл |
||
|
|
|
|
|
|
||||
Действие команды |
КОП(16) |
Описание |
|
|
|
|
|
|
|
обозначение |
С |
|
OV |
|
AC |
|
|||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
Команды арифметических операций |
|
|
|
|
|
|
||
|
ADD A, R0 |
28 |
(A)←(A)+(R0) |
+ |
|
+ |
|
+ |
1 |
|
ADD A, R1 |
29 |
(A)←(A)+(R1) |
+ |
|
+ |
|
+ |
1 |
|
ADD A, R2 |
2A |
(A)←(A)+(R2) |
+ |
|
+ |
|
+ |
1 |
Сложение аккумулятора с РОН |
ADD A, R3 |
2B |
(A)←(A)+(R3) |
+ |
|
+ |
|
+ |
1 |
ADD A, R4 |
2C |
(A)←(A)+(R4) |
+ |
|
+ |
|
+ |
1 |
|
|
|
|
|||||||
|
ADD A, R5 |
2D |
(A)←(A)+(R5) |
+ |
|
+ |
|
+ |
1 |
|
ADD A, R6 |
2E |
(A)←(A)+(R6) |
+ |
|
+ |
|
+ |
1 |
|
ADD A, R7 |
2F |
(A)←(A)+(R7) |
+ |
|
+ |
|
+ |
1 |
Сложение аккумулятора с прямо |
ADD A, direct |
25,da |
(A)←(A)+(direct) |
+ |
|
+ |
|
+ |
1 |
адресуемым регистром |
|
|
|
|
|
|
|
|
|
Сложение аккумулятора с |
ADD A, @R0 |
26 |
(A)←(A)+((R0)) |
+ |
|
+ |
|
+ |
1 |
косвенно адресуемым регистром |
ADD A, @R1 |
27 |
(A)←(A)+((R1)) |
+ |
|
+ |
|
+ |
1 |
Сложение аккумулятора с |
ADD A, #data |
24,dt |
(A)←(A)+#data |
+ |
|
+ |
|
+ |
1 |
константой |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
ADDC A, R0 |
38 |
(A)←(A)+(C)+(R0) |
+ |
|
+ |
|
+ |
1 |
|
ADDC A, R1 |
39 |
(A)←(A)+(C)+(R1) |
+ |
|
+ |
|
+ |
1 |
Сложение аккумулятора с РОН с |
ADDC A, R2 |
3A |
(A)←(A)+(C)+(R2) |
+ |
|
+ |
|
+ |
1 |
ADDC A, R3 |
3B |
(A)←(A)+(C)+(R3) |
+ |
|
+ |
|
+ |
1 |
|
учетом переноса |
ADDC A, R4 |
3C |
(A)←(A)+(C)+(R4) |
+ |
|
+ |
|
+ |
1 |
|
ADDC A, R5 |
3D |
(A)←(A)+(C)+(R5) |
+ |
|
+ |
|
+ |
1 |
|
ADDC A, R6 |
3E |
(A)←(A)+(C)+(R6) |
+ |
|
+ |
|
+ |
1 |
|
ADDC A, R7 |
3F |
(A)←(A)+(C)+(R7) |
+ |
|
+ |
|
+ |
1 |
Сложение аккумулятора с прямо |
ADDC A, direct |
35,da |
|
+ |
|
+ |
|
+ |
1 |
адресуемым регистром с учетом |
(A)←(A)+(C)+(direct) |
|
|
||||||
переноса |
|
|
|
|
|
|
|
|
|
Сложение аккумулятора с |
ADDC A, @R0 |
36 |
(A)←(A)+(C)+((R0)) |
+ |
|
+ |
|
+ |
1 |
косвенно адресуемым регистром |
ADDC A, @R1 |
37 |
(A)←(A)+(C)+((R1)) |
+ |
|
+ |
|
+ |
1 |
с учетом переноса |
|
|
|
|
|
|
|
|
|
Сложение аккумулятора с |
ADDC A, #data |
34,dt |
(A)←(A)+(C)+#data |
+ |
|
+ |
|
+ |
1 |
константой с учетом переноса |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
SUBB A, R0 |
98 |
(A)←(A)-(C)-(R0) |
+ |
|
+ |
|
+ |
1 |
|
SUBB A, R1 |
99 |
(A)←(A)-(C)-(R1) |
+ |
|
+ |
|
+ |
1 |
Вычитание от аккумулятора C |
SUBB A, R2 |
9A |
(A)←(A)-(C)-(R2) |
+ |
|
+ |
|
+ |
1 |
SUBB A, R3 |
9B |
(A)←(A)-(C)-(R3) |
+ |
|
+ |
|
+ |
1 |
|
(заема) и РОН |
SUBB A, R4 |
9C |
(A)←(A)-(C)-(R4) |
+ |
|
+ |
|
+ |
1 |
|
SUBB A, R5 |
9D |
(A)←(A)-(C)-(R5) |
+ |
|
+ |
|
+ |
1 |
|
SUBB A, R6 |
9E |
(A)←(A)-(C)-(R6) |
+ |
|
+ |
|
+ |
1 |
|
SUBB A, R7 |
9F |
(A)←(A)-(C)-(R7) |
+ |
|
+ |
|
+ |
1 |
Вычитание от аккумулятора C |
SUBB A, direct |
95,da |
|
+ |
|
+ |
|
+ |
1 |
(заема) и прямо адресуемого |
(A)←(A)-(C)-(direct) |
|
|
||||||
регистра |
|
|
|
|
|
|
|
|
|
Вычитание от аккумулятора C |
SUBB A, @R0 |
96 |
(A)←(A)-(C)-((R0)) |
+ |
|
+ |
|
+ |
1 |
(заема) и косвенно адресуемого |
SUBB A, @R1 |
97 |
(A)←(A)-(C)-((R1)) |
+ |
|
+ |
|
+ |
1 |
регистра |
|
|
|
|
|
|
|
|
|
Вычитание от аккумулятора C |
SUBB A, #data |
94,dt |
(A)←(A)-(C)-#data |
+ |
|
+ |
|
+ |
1 |
(заема) и константы |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
============================================================================= B-7
