Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Вычислительная техника и информационные технологии. Цифровые автоматы и микроконтролеры. Руководство к лабораторным работам в системе PROTEUS 7.2 SP6

.pdf
Скачиваний:
15
Добавлен:
12.11.2023
Размер:
4.8 Mб
Скачать

Получим z1 (рис. 7.12).

Рис. 7.12. Состояние z1

Получим z2 (рис. 7.13).

Рис. 7.13. Состояние z2

Получим z3 (рис. 7.14).

91

Рис. 7.14. Состояние z3

Получим z5 (рис. 7.15).

Рис. 7.15. Состояние z5

Наконец, при х1 = х2 = 1 опять получаем петлю и z2. Таким образом, ГСА отрабатывается.

92

Приложения

ПРИЛОЖЕНИЕ 1

Система команд МКС 51 1. Общие сведения

Система команд контроллера включает 111 базовых команд:

передачи данных,

арифметических операций,

логических операций,

передачи управления,

операций с битами.

Особенностями являются команды умножения и деления, операции с битами, со стеком, расширенный набор операций передачи управления.

Большинство команд (94) содержат один или два байта и выполняются за один или два машинных цикла. При тактовой частоте 12 МГц длительность машинного цикла составляет 1 мкс.

По составу имеется 13 типов команд. Первый байт всегда содержит код операции. Второй и третий байты содержат либо адреса операндов, либо непосредственный операнд.

1. Однобайтные команды (КОП – код операции):

КОП

Пример: DEC A – Декремент аккумулятора (00.010. 100). 2. Двухбайтные команды:

2.1. #d – непосредственный операнд: КОП #d

Пример: Загрузка в аккумулятор константы:

MOV A, #d

(01.110.100 xx.xxx.xxx).

2.2. ad – прямой адрес байта РПД(0…127), порта или РСФ:

КОП ad

Пример: Пересылка в аккумуляторпрямоадресуемого байта:

MOV A, ad (11.100.101 xx.xxx.xxx). 2.3. bit – двоичный номер бита:

КОП bit

94

Пример: Сброс бита СLR bit (11.000.010 xx.xxx.xxx).

2.4. rel – относительный адрес (смещение) передачи команды управления (–127….128):

КОП rel

Пример: SJMP rel.

Короткий относительный переход внутри страницы в 256 байт: (10.000.000 xx.xxx.xxx).

2.5. 11-битный адрес:

a10 a9 a8

КОП

 

 

a7...a0

Пример: АJMP ad11

Абсолютный переход внутри страницы в 2 кбайта: (а10а9.а800.001 а7а6.а5а4а3.а2а1а0).

3. Трехбайтные команды 3.1. 8-битный адрес, 8-битный операнд:

КОП

ad

#d

Пересылка по прямому адресу константы: MOV ad, #d (01.110.101 xx.xxx.xxx xx.xxx.xxx).

3.2. 8-битный адрес, 8-битное смещение:

КОП

ad

rel

Пример: Сравнение аккумулятора с прямоадресуемым байтом и переход, если не равно:

СJNЕ А, ad, rel

10.110.101 xx.xxx.xxx xx.xxx.xxx

3.3. ads – прямой адрес источника; add – прямой адрес назначения:

КОП

ads

add

95

Пример: Пересылка прямоадресуемого байта по прямому адресу:

MOV add, ads

10.000.101 xx.xxx.xxx xx.xxx.xxx.

3.4. #d – непосредственный операнд (константа); rel

относительный адрес (смещение):

 

КОП

#d

rel

Пример: Сравнение аккумулятора с константой и переход, если не равно:

СJNЕ А, #d, rel

10.110.100 xx.xxx.xxx xx.xxx.xxx.

3.5. bit –двоичный номер бита; rel – относительный адрес (смещение):

КОП

bit

rel

Пример: Переход, если бит равен нулю: JNВ bit, rel

00.110.000 xx.xxx.xxx xx.xxx.xxx.

3.6. ad16h – старший байт прямого 16-битного адреса; ad16l – младший байт прямого 16-битного адреса:

 

 

ad16h

 

 

КОП

 

 

ad16l

 

 

 

 

 

Пример: Загрузка указателя данных DPTR: MOV DPTR, #d16

10.010. 000 xx.xxx.xxx xx.xxx.xxx.

Пример: Длинный вызов подпрограммы: LCALL ad16

00.010.010 xx.xxx.xxx xx.xxx.xxx.

96

2. Группы команд

Таблица П1.1

Группа команд передачи данных

 

Название

Мнемокод

КОП

Байт

Циклов

Операция

 

п/п

 

 

 

 

 

 

 

 

1

Пересылка в аккумулятор из регистра n = 0…7

MOV A, Rn

11.101.rrr

1

1

(A)←(Rn)

 

 

 

 

2

Пересылка в аккумулятор прямоадресуемого байта

MOV A, ad

11.100.101

2

1

(A)←(ad)

 

 

 

xx.xxx.xxx

 

 

 

 

 

 

 

 

3

Пересылка в аккумулятор байта из РПД i = 0,1

MOV A, @Ri

11.100.11i

1

1

(A)←((Ri))

 

 

 

 

 

 

 

 

 

 

 

 

4

Загрузка в аккумулятор константы

MOV A, #d

01.110.100

2

1

(A)←#d

97

 

 

xx.xxx.xxx

 

 

 

 

 

 

5

Пересылка в регистр из аккумулятора n = 0…7

MOV Rn, A

11.111.rrr

1

1

(Rn)←(A)

 

 

 

 

 

 

 

 

 

 

 

 

 

6

Пересылка в регистр прямоадресуемого байта

MOV Rn, ad

10.101.rrr

2

2

(Rn)←(ad)

 

 

 

xx.xxx.xxx

 

 

 

 

 

 

 

 

7

Загрузка в регистр константы

MOV Rn, #d

01.111.rrr

2

1

(Rn)← #d

 

 

 

xx.xxx.xxx

 

 

 

 

 

 

 

 

8

Пересылка по прямому адресу содержимого акку-

MOV ad, А

11.110.101

2

1

(ad)←(А)

 

 

мулятора

 

xx.xxx.xxx

 

 

 

 

9

Пересылка по прямому адресу содержимого

MOV ad, Rn

10.001.rrr

2

2

(ad)←(Rn)

 

 

регистра

xx.xxx.xxx

 

 

 

 

 

 

 

10

Пересылка прямоадресуемого байта по прямому

 

10.000.101

 

 

 

 

 

адресу

MOV add, ads

xx.xxx.xxx

3

2

(add)←(ads)

 

 

 

 

xx.xxx.xxx

 

 

 

Продолжение табл. П1.1

 

Название

Мнемокод

КОП

Байт

Циклов

Операция

 

п/п

 

 

 

 

 

 

 

 

11

Пересылка байта из РПД по прямому адресу

MOV ad, @Ri

10.000.11i

2

2

(ad)←((Ri))

 

 

 

xx.xxx.xxx

 

 

 

 

 

 

 

 

12

Пересылка по прямому адресу константы

 

01.110.101

 

 

 

 

 

 

MOV ad, #d

xx.xxx.xxx

3

2

(ad)←#d

 

 

 

 

xx.xxx.xxx

 

 

 

 

13

Пересылка в РПД из аккумулятора i = 0,1

MOV @Ri, А

11.110.11i

1

1

((Ri))←(А)

 

 

 

 

 

 

 

 

 

 

 

98

14

Пересылка в РПД прямоадресуемого байта

MOV @Ri, ad

01.100.11i

2

2

((Ri))←(ad)

 

 

xx.xxx.xxx

 

 

 

 

 

 

 

15

15. Пересылка в РПД константы

MOV @Ri, #d

01.110.11i

2

1

((Ri))←#d

 

 

 

xx.xxx.xxx

 

 

 

 

 

 

 

 

 

16

Загрузка указателя данных DPTR

MOV DPTR,

10.010.000

 

 

 

 

 

 

xx.xxx.xxx

3

2

(DPTR)←#d16

 

 

 

#d16

 

 

 

xx.xxx.xxx

 

 

 

 

 

 

 

 

 

 

 

17

Пересылка в аккумулятор байта из ПП

MOVС @А,

10.010.011

1

2

(А)←((А)+

 

 

 

А+DPTR

 

 

 

+(DPTR))

 

18

Пересылка в аккумулятор байта из ПП

MOVС @А,

10.000.011

1

2

(РС)←(РС) +1

 

 

 

А+РС

 

 

 

(А)←((А)+(РС))

 

19

Пересылка в аккумулятор байта из ВПД

MOVХ А, @Ri

11.100.01i

1

2

(А)←((Ri))

 

 

 

 

 

 

 

 

 

 

 

Окончание табл. П1.1

 

20

Пересылка в аккумулятор байта из расширенной

MOVХ А,

11.100.000

1

2

(А)←((DPTR))

 

 

ВПД

@DPTR

 

 

 

 

 

 

 

21

Пересылка в ВПД из аккумулятора

MOVХ @ Ri,

11.110.01i

1

2

((Ri))←(А)

 

 

 

А

 

 

 

 

 

 

 

 

22

Пересылка в расширенную ВПД из аккумулятора

MOVХ @

11.110.000

1

2

((DPTR))←(А)

 

 

 

DPTR, А

 

 

 

 

 

 

 

 

23

Загрузка в стек

PUSH ad

11.000.000

2

2

(SP)←(SP)+1

 

 

 

xx.xxx.xxx

((SP))←(ad)

 

 

 

 

 

 

 

24

Извлечение из стека

PОР ad

11.010. 000

2

2

(ad) ← (SP)

 

 

 

xx.xxx.xxx

(SP) ← (SP)-1

 

 

 

 

 

 

99

25

Обмен аккумулятора с регистром

ХСН А, Rn

11.001.rrr

1

1

(А)↔(Rn)

 

 

 

 

 

 

 

 

 

 

 

 

26

Обмен аккумулятора с прямоадресуемым байтом

ХСН А, ad

11.000.101

2

1

(А)↔(ad)

 

 

 

 

xx.xxx.xxx

 

 

 

 

 

 

 

 

27

Обмен аккумулятора с байтом из РПД

ХСН А, @Ri

11.000.11i

1

1

(А) ↔((Ri))

 

 

 

 

 

 

 

 

 

 

 

 

28

Обмен младшей тетрады аккумулятора с младшей

ХСНD А, @Ri

11.010.11i

1

1

0-3)↔((Ri)0-3)

 

 

тетрадой байта РПД

 

 

 

 

 

 

 

Группа команд арифметических операций

 

Таблица П1.2

 

 

 

 

 

 

 

 

 

 

 

 

 

Название

Мнемокод

КОП

Байт

Циклов

Операция

 

п/п

 

 

 

 

 

 

 

 

1

Сложение аккумулятора с регистром n= 0…7

ADD A, Rn

00.101.rrr

1

1

(A)←(A)+(Rn)

 

2

Сложение аккумулятора с прямоадресуемым бай-

ADD A, ad

00.100.101

2

1

(A)←(A)+(ad)

 

том

xx.xxx.xxx

 

3

Сложение аккумулятора с байтом из РПД i = 0,1

ADD A, @Ri

00.100.11i

1

1

(A)←(A)+((Ri))

 

4

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

ADD A, #d

00.100.100

2

1

(A)←(A)+#d

 

xx.xxx.xxx

 

 

 

 

 

 

 

10

5

Сложение аккумулятора с регистром

ADDС A, Rn

00.111.rrr

1

1

(A)←(A)+(Rn)+(С)

и переносом n = 0…7

 

6

Сложение аккумулятора с прямоадресуемым

ADDС A, ad

00.110.rrr

2

1

(A)←(A)+(ad)+(С)

 

байтом и переносом

xx.xxx.xxx

 

7

Сложение аккумулятора с байтом из РПД

ADDСA, @Ri

00.110.11i

1

1

(A)←(A)+((Ri))+(С)

 

и переносом i = 0,1

 

8

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

ADDС A, #d

00.110.100

2

1

(A)←(A)+#d+(С)

 

и переносом.

xx.xxx.xxx

 

 

 

 

 

 

 

Если (А0-3)>9 или

 

 

 

 

 

 

 

((АС)=1), то

 

 

 

 

 

 

 

(А0-3)←(А0-3)+6,

 

9

Десятичная коррекция аккумулятора

DA A

11.010.100

1

1

затем

 

 

 

 

 

 

 

Если (А4-7)>9

 

 

 

 

 

 

 

или((С)=1),то(А4-7)

 

 

 

 

 

 

 

←(А4-7)+6

Соседние файлы в папке книги