- •М.Л.Кулиш
- •Содержание разделов
- •Некоторые советы по созданию больших программ
- •Приложение 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) |
Описание |
|
|
|
|
||
|
|
обозначение |
|
|
С |
|
OV |
AC |
Кол. |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
Команды арифметических операций (продолжение) |
|
|
|
|
|
|||
Инкрементирование А |
|
INC A |
04 |
(A)←(A)+1 |
|
|
|
|
1 |
|
|
INC R0 |
08 |
(R0)←(R0)+1 |
|
|
|
|
1 |
|
|
INC R1 |
09 |
(R1)←(R1)+1 |
|
|
|
|
1 |
|
|
INC R2 |
0A |
(R2)←(R2)+1 |
|
|
|
|
1 |
Инкрементирование РОН |
|
INC R3 |
0B |
(R3)←(R3)+1 |
|
|
|
|
1 |
|
INC R4 |
0C |
(R4)←(R4)+1 |
|
|
|
|
1 |
|
|
|
|
|
|
|
||||
|
|
INC R5 |
0D |
(R5)←(R5)+1 |
|
|
|
|
1 |
|
|
INC R6 |
0E |
(R6)←(R6)+1 |
|
|
|
|
1 |
|
|
INC R7 |
0F |
(R7)←(R7)+1 |
|
|
|
|
1 |
Инкрементирование прямо |
|
INC direct |
55,da |
(direct)←(direct)+1 |
|
|
|
|
1 |
адресуемого регистра |
|
|
|
|
|
||||
|
|
06 |
|
|
|
|
|
|
|
Инкрементирование косвенно |
|
INC @R0 |
((R0))←((R0))+1 |
|
|
|
|
1 |
|
адресуемого регистра |
|
INC @R1 |
07 |
((R1))←((R1))+1 |
|
|
|
|
1 |
Инкрементирование DPTR |
|
INC DPTR |
A3 |
(DPTR)←(DPTR)+1 |
|
|
|
|
2 |
Декрементирование А |
|
DEC A |
14 |
(A)←(A)-1 |
|
|
|
|
1 |
|
|
DEC R0 |
18 |
(R0)←(R0)-1 |
|
|
|
|
1 |
|
|
DEC R1 |
19 |
(R1)←(R1)-1 |
|
|
|
|
1 |
|
|
DEC R2 |
1A |
(R2)←(R2)-1 |
|
|
|
|
1 |
Декрементирование РОН |
|
DEC R3 |
1B |
(R3)←(R3)-1 |
|
|
|
|
1 |
|
DEC R4 |
1C |
(R4)←(R4)-1 |
|
|
|
|
1 |
|
|
|
|
|
|
|
||||
|
|
DEC R5 |
1D |
(R5)←(R5)-1 |
|
|
|
|
1 |
|
|
DEC R6 |
1E |
(R6)←(R6)-1 |
|
|
|
|
1 |
|
|
DEC R7 |
1F |
(R7)←(R7)-1 |
|
|
|
|
1 |
Декрементирование прямо |
|
DEC direct |
15,da |
(direct)←(direct)-1 |
|
|
|
|
1 |
адресуемого регистра |
|
|
|
|
|
||||
|
|
16 |
|
|
|
|
|
|
|
Декрементирование косвенно |
|
DEC @R0 |
((R0))←((R0))-1 |
|
|
|
|
1 |
|
адресуемого регистра |
|
DEC @R1 |
17 |
((R1))←((R1))-1 |
|
|
|
|
1 |
|
|
|
|
(B)←15-8{(A)×(B)} |
|
|
|
|
|
Умножение |
|
MUL AB |
A4 |
(A)←7-0{(A)×(B)} |
0 |
|
+ |
|
4 |
|
Если в результате: |
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
B≠0 OV←1 |
|
|
|
|
|
Деление |
|
DIV AB |
84 |
(A)←{(A)/(B)} |
0 |
|
+ |
|
4 |
|
(B)← остаток |
|
|
||||||
|
|
|
|
Если делитель B=0 OV←1 |
|
|
|
|
|
|
|
|
|
Если (А3..0)>9 или (АС)=1 |
|
|
|
|
|
Десятичная коррекция |
|
DA A |
D4 |
то (А3..0)←(А3..0)+6; |
+ |
|
|
|
1 |
|
и если (А7..4)>9 или С=1, то |
|
|
|
|||||
|
|
|
|
(А7..4)←(А7..4)+6 |
|
|
|
|
|
Условные обозначения.
adr8 – восьмиразрядный адрес
adr16 – шестнадцатиразрядный адрес. Младший байт записывается в ячейке с меньшим адресом. bit – адрес (номер) бита от 0 до FF
da (direct) – прямоадресуемый регистр (его адрес) от 0 до FF dt (data) – непосредственные данные от 0 до FF
rel – относительное смещение адреса от 80 (-128) до 7F (+127)
daприdaист. – адреса регистров приемника и источника данных от 0 до FF
============================================================================= B-8
=========================================================================== Справочник по программированию «Bascom-8051» ==
Приложение C
Коды команд MCS-51
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
|
|
0 |
NOP |
AJMP |
LJMP |
RR A |
INC A |
INC |
INC |
INC |
INC R0 |
INC R1 |
INC R2 |
INC R3 |
INC R4 |
INC R5 |
INC R6 |
INC R7 |
0 |
|
adr11 |
||||||||||||||||||
addr16 |
direct |
@R0 |
@R1 |
|||||||||||||||
|
|
(p000) |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
1 |
JBC |
ACALL |
LCALL |
RRC A |
DEC A |
DEC |
DEC |
DEC |
DEC R0 |
DEC R1 |
DEC R2 |
DEC R3 |
DEC R4 |
DEC R5 |
DEC R6 |
DEC R7 |
1 |
|
adr11 |
||||||||||||||||||
bit,rel |
addr16 |
direct |
@R0 |
@R1 |
||||||||||||||
|
(p000) |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
2 |
JB bit,rel |
AJMP |
RET |
RL A |
ADD A, |
ADD A, |
ADD |
ADD |
ADD |
ADD |
ADD |
ADD |
ADD |
ADD |
ADD |
ADD |
2 |
|
adr11 |
||||||||||||||||||
#data |
direct |
A,@R0 |
A,@R1 |
A,R0 |
A,R1 |
A,R2 |
A,R3 |
A,R4 |
A,R5 |
A,R6 |
A,R7 |
|||||||
|
|
(p001) |
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
JNB |
ACALL |
|
|
ADDC |
ADDC |
ADDC |
ADDC |
ADDC |
ADDC |
ADDC |
ADDC |
ADDC |
ADDC |
ADDC |
ADDC |
3 |
|
3 |
adr11 |
RETI |
RLC A |
|||||||||||||||
bit,rel |
A,#data |
A,direct |
A,@R0 |
A,@R1 |
A,R0 |
A,R1 |
A,R2 |
A,R3 |
A,R4 |
A,R5 |
A,R6 |
A,R7 |
||||||
|
(p001) |
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
AJMP |
ORL |
ORL |
ORL A, |
ORL A, |
ORL |
ORL |
ORL |
ORL |
ORL |
ORL |
ORL |
ORL |
ORL |
ORL |
4 |
|
4 |
JC rel |
direct, |
||||||||||||||||
adr11 |
direct,A |
#data |
direct |
A,@R0 |
A,@R1 |
A,R0 |
A,R1 |
A,R2 |
A,R3 |
A,R4 |
A,R5 |
A,R6 |
A,R7 |
|||||
|
|
#data |
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
ACALL |
ANL |
ANL |
ANL A, |
ANL A, |
ANL |
ANL |
ANL |
ANL |
ANL |
ANL |
ANL |
ANL |
ANL |
ANL |
|
|
5 |
JNC rel |
adr11 |
direct, |
5 |
||||||||||||||
direct,A |
#data |
direct |
A,@R0 |
A,@R1 |
A,R0 |
A,R1 |
A,R2 |
A,R3 |
A,R4 |
A,R5 |
A,R6 |
A,R7 |
||||||
|
|
(p010) |
#data |
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
AJMP |
XRL |
XRL |
XRL A, |
XRL A, |
XRL |
XRL |
XRL |
XRL |
XRL |
XRL |
XRL |
XRL |
XRL |
XRL |
|
|
6 |
JZ rel |
adr11 |
direct, |
6 |
||||||||||||||
direct,A |
#data |
direct |
A,@R0 |
A,@R1 |
A,R0 |
A,R1 |
A,R2 |
A,R3 |
A,R4 |
A,R5 |
A,R6 |
A,R7 |
||||||
|
|
(p011) |
#data |
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
ACALL |
ORL C, |
JMP |
MOV A, |
MOV |
MOV |
MOV |
MOV R0, |
MOV R1, |
MOV R2, |
MOV R3, |
MOV R4, |
MOV R5, |
MOV R6, |
MOV R7, |
7 |
|
7 |
JNZ rel |
adr11 |
@A+ |
direct, |
@R0, |
@R1, |
||||||||||||
bit |
#data |
#data |
#data |
#data |
#data |
#data |
#data |
#data |
#data |
|||||||||
|
|
(p011) |
DPTR |
#data |
#data |
#data |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
|
=========================================================================================================================== C-1
=========================================================================== Справочник по программированию «Bascom-8051» ==
Коды команд MCS-51 (продолжение)
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
|
|
|
|
AJMP |
ANL C, |
MOVC |
|
MOV |
MOV |
MOV |
MOV |
MOV |
MOV |
MOV |
MOV |
MOV |
MOV |
MOV |
|
|
8 |
SJMP rel |
adr11 |
A,@A+P |
DIV AB |
direct, |
direct, |
direct, |
direct, |
direct, |
direct, |
direct, |
direct, |
direct, |
direct, |
direct, |
8 |
||
bit |
||||||||||||||||||
|
|
(p100) |
C |
|
direct |
@R0 |
@R1 |
R0 |
R1 |
R2 |
R3 |
R4 |
R5 |
R6 |
R7 |
|
||
|
|
|
|
|
||||||||||||||
|
MOV |
ACALL |
MOV bit, |
MOVC |
SUBB A, |
SUBB A, |
SUBB A, |
SUBB A, |
SUBB A, |
SUBB A, |
SUBB A, |
SUBB A, |
SUBB A, |
SUBB A, |
SUBB A, |
SUBB A, |
|
|
9 |
OPTR, |
adr11 |
A,@A+D |
9 |
||||||||||||||
C |
#data |
direct |
@R0 |
@R1 |
R0 |
R1 |
R2 |
R3 |
R4 |
R5 |
R6 |
R7 |
||||||
|
#data16 |
(p100) |
PTR |
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
A |
ORL |
AJMP |
MOV C, |
INC |
MUL AB |
|
MOV |
MOV |
MOV R0, |
MOV R1, |
MOV R2, |
MOV R3, |
MOV R4, |
MOV R5, |
MOV R6, |
MOV R7, |
A |
|
adr11 |
|
@R0, |
@R1, |
|||||||||||||||
C,/bit |
bit |
DPTR |
|
direct |
direct |
direct |
direct |
direct |
direct |
direct |
direct |
|||||||
|
(p101) |
|
|
direct |
direct |
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
ACALL |
|
|
CJNE A, |
|
CJNE |
CJNE |
CJNE |
CJNE |
CJNE |
CJNE |
CJNE |
CJNE |
CJNE |
CJNE |
|
|
|
ANL |
|
|
CJNE A, |
@R0, |
|
||||||||||||
B |
adr11 |
CPL bit |
CPL C |
#data, |
@R0, |
R0, |
R1, |
R2, |
R3, |
R4, |
R5, |
R6, |
R7, |
B |
||||
C,/bit |
direct, rel |
#data, |
||||||||||||||||
|
(p101) |
|
|
rel |
#data,rel |
#data,rel |
#data,rel |
#data,rel |
#data,rel |
#data,rel |
#data,rel |
#data,rel |
#data,rel |
|
||||
|
|
|
|
|
rel |
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
C |
PUSH |
AJMP |
CLR bit |
CLR C |
SWAP A |
XCH A, |
XCH A, |
XCH A, |
XCH A, |
XCH A, |
XCH A, |
XCH A, |
XCH A, |
XCH A, |
XCH A, |
XCH A, |
C |
|
adr11 |
||||||||||||||||||
direct |
direct |
@R0 |
@R1 |
R0 |
R1 |
R2 |
R3 |
R4 |
R5 |
R6 |
R7 |
|||||||
|
(p110) |
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
POP |
ACALL |
|
|
|
DJNZ |
XCHD A, |
XCHD A, |
DJNZ |
DJNZ |
DJNZ |
DJNZ |
DJNZ |
DJNZ |
DJNZ |
DJNZ |
|
|
D |
adr11 |
SETB bit |
SETB C |
PA A |
D |
|||||||||||||
direct |
direct, rel |
@R0 |
@R1 |
R0,rel |
R1,rel |
R2,rel |
R3,rel |
R4,rel |
R5,rel |
R6,rel |
R7,rel |
|||||||
|
(p110) |
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
E |
MOVX |
AJMP |
MOVX |
MOVX |
CLR A |
MOV A, |
MOV A, |
MOV A, |
MOV A, |
MOV A, |
MOV A, |
MOV A, |
MOV A, |
MOV A, |
MOV A, |
MOV A, |
E |
|
A, |
adr11 |
|||||||||||||||||
A,@R0 |
A,@R1 |
direct |
@R0 |
@R1 |
R0 |
R1 |
R2 |
R3 |
R4 |
R5 |
R6 |
R7 |
||||||
|
@DPTR |
(p111) |
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
MOVX |
ACALL |
MOVX |
MOVX |
|
MOV |
MOV |
MOV |
MOV R0, |
MOV R1, |
MOV R2, |
MOV R3, |
MOV R4, |
MOV R5, |
MOV R6, |
MOV R7, |
|
|
F |
@DPTR, |
adr11 |
CPL A |
F |
||||||||||||||
@R0,A |
@R1,A |
direct,A |
@R0, A |
@R1, A |
A |
A |
A |
A |
A |
A |
A |
A |
||||||
|
A |
(p111) |
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
|
Код команды определяется первой цифры по вертикали (старший полубайт) и второй по горизонтали (младший полубайт). Например, команда INC DPTR имеет код A3.
=========================================================================================================================== C-2
