Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник по программировани BASCOM-8051 (М.Л. Кулиш, 2001).pdf
Скачиваний:
450
Добавлен:
12.08.2013
Размер:
6.93 Mб
Скачать

=========================================================================== Справочник по программированию «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

 

PCaddr16

2

 

SPSP+2

 

 

 

 

 

 

ACALL 0XX

11,adr8

 

 

2

 

ACALL 1XX

31,adr8

 

 

2

 

ACALL 2XX

51,adr8

 

PCaddr11

2

Вызов подпрограмы в пределах текущих 2-

ACALL 3XX

71,adr8

 

2

(0..10)

х килобайт

ACALL 4XX

91,adr8

2

 

SPSP+2

 

ACALL 5XX

B1,adr8

 

2

 

 

 

 

ACALL 6XX

D1,adr8

 

 

2

 

ACALL 7XX

F1,adr8

 

 

2

Возврат из подпрограммы обработки

RET

22

 

PC(SP)

2

прерываний

 

SPSP-2

 

 

 

 

Возврат из подпрограммы с разрешением

RETI

32

 

PC(SP)

2

прерываний

 

 

 

SPSP-2 бит EA 1

 

Переход с полным адресом

LJMP addr16

02,adr16

 

PCaddr16

2

 

AJMP 0XX

01,adr8

 

 

2

 

AJMP 1XX

21,adr8

 

 

2

 

AJMP 2XX

41,adr8

 

 

2

Переход в пределах текущих 2-х килобайт

AJMP 3XX

61,adr8

 

PC0..10addr11

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

 

PCPC+2+rel

2

Косвенный относительный переход

JMP @A+DPTR

73

 

PC(A+DPTR)

2

Тестирование аккумулятора на ноль (на

JZ rel

60,rel

 

Если А=0

2

 

 

 

PCPC+2+rel

 

самом деле бита Z)

JNZ rel

70,rel

 

Если А ≠0

2

 

 

 

 

PCPC+2+rel

 

Сравнение аккумулятора с прямо

 

 

 

Если А≠direct

 

адресуемым регистром и переход ±127

CJNZ A,#direct, rel

B5,dt,rel

 

PCPC+3+rel

2

байт

 

 

 

Если A > direct C1

 

Сравнение аккумулятора с константой и

CJNZ A, #data, rel

B4,dt,rel

 

Если А≠data

2

 

PCPC+3+rel

переход ±127 байт

 

 

 

 

Если A > data C1

 

 

 

 

 

 

 

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

 

 

PCPC+3+rel

Сравнение РОН с константой и переход в

CJNZ R3,#data,rel

BB,dt,rel

 

2

 

Если Ri > data C1

диапазоне ±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

 

PCPC+3+rel

2

 

Если @Ri > data C1

============================================================================= B-3