Проектирование цифровых устройств на микроконтроллерах семейства MCS-51

Тип работы:
Курсовая
Предмет:
Коммуникации, связь, цифровые приборы и радиоэлектроника


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Проектирование цифровых устройств на микроконтроллерах семейства MCS-51

1. Структурная схема микроконтроллеров семейства MCS-51

Принятые сокращения:

8ADR

-

младшие 8 бит адреса Программной Памяти (ПП);

11ADR

-

11-ти битовый адрес в текущей странице Программной Памяти (ПП) по 2 Кбайта;

16ADR

-

16-ти битовый адрес Программной Памяти;

bit

-

8-ми битовый адрес прямоадресуемого бита в Резидентной Памяти Данных (РПД) или в блоке Регистров Специальных функций (РСФ);

#DAT

-

8-ми битовый непосредственный операнд;

#D16

-

16-ти битовый непосредственный операнд;

dir

-

8-ми битовый адрес прямоадресуемого байта в РПД или РСФ;

DPTR

-

Регистр указатель данных

Ft

-

Частота кварцевого генератора;

PC

-

Программный счетчик;

Р0, Р1, Р2, Р3 — 8- ми битовые двунаправленные Порты ввода/вывода;

PSW

-

Слово состояния процессора;

rel

-

8-ми битовое смещение адреса Программной Памяти (со знаком в дополнительном коде);

Ri

-

Регистры косвенной адресации (R0, R1);

i

-

Двоичный код регистра косвенной адресации;

Rn

-

Регистры Общего Назначения (РОНы) — (R0_R7);

r r r

-

Двоичный код РОНа;

SFR

-

Блок Регистров Специальных Функций (РСФ);

S0_S7

-

Страницы Программной Памяти (ПП) по 256 байт;

sss

-

(A10,A9,A8 — три бита адреса) — двоичный код номера страницы ПП по 256 байт;

SP

-

Указатель стека;

&

-

Логическая команда «И»

/

-

Логическая команда «ИЛИ»

(+)

-

Логическая команда «ИСКЛЮЧАЮЩЕЕ ИЛИ»

~

-

Логическая команда «ИНВЕРСИЯ»

< >

-

Неравенство

[ ]

-

В скобках указаны номера битов;

()

-

В скобках указан адрес операнда в Резидентной Памяти Данных (РПД) или Внешней Памяти Данных (ВПД);

(())

-

В скобках указан адрес операнда в Памяти Программ (ПП) (Резидентной или Внешней);

Таблица 1 — Отличительные особенности микроконтроллеров семейства MCS-51

Контроллер

ROM/

EPROM

(кбайт)

RAM

(байт)

Т/С

Макс.

Ft

(МГц)

Особенности группы

8031AH

-

128

2

12

n-MOS технология,

Базовая конфигурация,

4 порта

8051AH

4K ROM

128

2

12

8751H

4K EPROM

128

2

12

80C31BH

-

128

2

12, 16

CMOS технология,

Режим понижен. энерго-потребл., 3 бита защиты

80C51BH

4K ROM

128

2

12, 16

87C51BH

4K EPROM

128

2

16, 20

8032AH

-

256

3

12

n-MOS технология,

4 порта,

3 бита защиты

8052AH

8K ROM

256

3

12

8752BH

8K EPROM

256

3

12

80С32

-

256

3

20, 24

CMOS технология,

Таймер/счетчик с прямым и обратным счетом,

3 бита защиты

80С52

8K ROM

256

3

20, 24

87C52

8K EPROM

256

3

20, 24

80C54

16K ROM

256

3

20, 24

87C54

16K EPROM

256

3

20, 24

80C58

32K ROM

256

3

20, 24

87C58

32KEPROM

256

3

20, 24

80L52

8K ROM

256

3

16, 20

Контроллеры с пониженным напряжением питания 2,7…3,6 Вольт

87L52

8K EPROM

256

3

16, 20

80L54

16K ROM

256

3

16, 20

87L54

16K EPROM

256

3

16, 20

80L58

32K ROM

256

3

16, 20

87L58

32KEPROM

256

3

16, 20

80C31FA

-

256

3

20, 24

Модуль РСА,

Т/С с прямым и обратным счетом

80C51FA

8K ROM

256

3

20,24

87C51FA

8K EPROM

256

3

20,24

83C51FB

16K ROM

256

3

20, 24

Сторожевой таймер,

3 бита защиты

87C51FB

16K EPROM

256

3

20, 24

83C51FC

32K ROM

256

3

20, 24

87C51FC

32KEPROM

256

3

20, 24

80С51GB

-

256

3

20, 24

АЦП (8 кан/8 разрядов),

2 РСА, 6 портов I/O,

Сторожевой таймер

83C51GB

8K ROM

256

3

20, 24

87C51GB

8K EPROM

256

3

20, 24

Новое семейство микроконтроллеров 8xC151Sx (MCS-151) по системе команд, набору программно доступных ресурсов, системе прерываний, набору блоков ввода-вывода и функциям выводов корпуса совместимы с микроконтроллерами 8xC51Fx. Усовершенствования коснулись, в основном, операционного ядра. Введены: конвейер команд, режим страничной адресации памяти и др.

В результате при конвейерной выборке в пределах одной страницы время выполнения команды составляет два периода частоты задающего кварцевого генератора (вместо 12 периодов у предыдущего семейства MCS-51).

Микроконтроллеры семейства MCS-251 являются развитием архитектуры семейств MCS-51 и MCS-151. В основу положена «старая» система команд и устоявшийся набор блоков ввода/вывода: три таймера-счетчика, последовательный порт, блок РСА и сторожевой таймер.

Центральный процессор микроконтроллеров MCS-251 построен с использованием конвейера команд (время выполнения команд — 2 периода частоты кварцевого генератора) и регистрового файла. Система команд дополнена инструкциями, оперирующими 16-ти и 32-х разрядными операндами.

Основой микроконтроллера (см. рис. 1) является 8-ми битовое Арифметическое-Логическое устройство (АЛУ). Память М К логически разделена: на память программ — ПП (внутреннюю или внешнюю), адресуемую 16-ти битовым счетчиком команд (СК) и память данных — внутреннюю (Резидентная память данных — РПД) 128 (или 256) байт, а также внешнюю (Внешняя память данных — ВПД) до 64 Кбайт. Физически память программ реализована на ПЗУ (доступна только по чтению), а память данных — на ОЗУ (возможна запись и чтение данных).

Прием и выдача внешних сигналов осуществляется через 4 восьмибитовых порта Р0. Р3. При обращении к внешней памяти программ (ВПП) или памяти данных (ВПД) порты Р0 и Р2 используются как мультиплексированная внешняя шина Адрес/Данные. Линии порта Р3 могут выполнять также альтернативные функции (см. табл. 2).

16-ти битовый регистр DPTR формирует адрес ВПД или базовый адрес Памяти программ в команде преобразования Аккумулятора. Регистр DPTR может также использоваться как два независимых 8-ми битовых регистра (DPL и DPH) для хранения операндов.

8-ми битовый внутренний регистр команд (РК) принимает код выполняемой команды; этот код дешифрируется схемой управления, которая генерирует управляющие сигналы (см. рис. 1).

Обращение к регистрам специальных функций — РСФ (SFR — на рис. 1 они обведены пунктирной линией) возможно только с использованием прямой байтовой адресации в диапазоне адресов от 128 (80h) и более.

/

Резидентная память данных (РПД) в первых моделях микроконтроллеров семейства MCS-51 имела объем 128 байт. Младшие 32 байта являются одновременно и регистрами общего назначения — РОН (4 банка по 8 РОНов). Программа может обратиться к одному из 8-ми РОНов активного банка. Выбор активного банка РОНов осуществляется программированием двух бит в регистре состояния процессора — PSW (см. табл. 5). Переключение банков РОНов упрощает выполнение подпрограмм и обработку прерываний, т.к. не нужно пересылать в стек содержимое РОНов основной программы при вызове подпрограммы.

Таблица 2 — Назначение выводов MCS-51

№ выв.

Обозначение

Назначение

1. 8

Р1[0. 7]

8-ми битовый квазидвунаправленный порт ввода/вывода

9

RST

Сигнал сброса (активный уровень — высокий);

Сигнал RST обнуляет: PC и большинство Регистров Специальных Функций (SFR), запрещая все прерывания и работу таймеров; выбирает Банк РОНов 0; записывает в порты Р0_Р3 «все единицы», подготавливая их на ввод; записывает код 07H в указатель стека (SP);

10. 17

P3[0. 7]

P3[0]

P3[1]

P3[2]

P3[3]

P3[4]

P3[5]

P3[6]

P3[7]

8-ми битовый квазидвунаправленный порт ввода/вывода; после записи в соответствующий разряд «1» — выполняет дополнительные (альтернативные) функции:

Вход последовательного порта — RxD;

Выход последовательного порта — TxD;

Вход внешнего прерывания 0 — ~INT0;

Вход внешнего прерывания 1 — ~INT1;

Вход таймера/счетчика 0 — Т0;

Вход таймера/счетчика 1 — Т1;

Выход строб. сигнала при записи в ВПД — ~WR;

Выход строб. сигнала при чтении из ВПД — ~RD;

18, 19

X1, X2

Выводы для подключения кварцевого резонатора или LC-контура;

20

GND

Общий вывод;

21. 28

P2[0. 7]

8-ми битовый квазидвунаправленный порт ввода /вывода; или выход адреса A[815] в режиме работы с внешней памятью (ВПП или ВПД);

29

PME

Строб чтения Внешней Памяти Программ, выда-ется только при обращении к внешнему ПЗУ;

30

ALE

Строб адреса Внешней памяти (ВПП или ВПД);

31

ЕА

Отключение РПП, уровень «0» на этом входе пе-реводит МК на выборку команд только из ВПП;

39. 32

Р0[0. 7]

8-ми битовый двунаправленный порт ввода/ вывода; при обращении к Внешней Памяти выдает адреса A[07] (которые записываются во внешний регистр по сигналу ALE), а затем обменивается байтом синхронно с сигналом ~PME (для команд) или ~WR,~RD (для данных в ВПД), при обращении к Внешней Памяти в регистр порта Р0 записываются все единицы, разрушая хранимую там информацию;

40

Ucc

Вывод напряжения питания

Обращение к РПД возможно с использованием косвенной или прямой байтовой адресации.

Расширенная область РПД (у микроконтроллеров семейства MCS-52 и последующих семейств) с адреса 128 (80h) до 255 (FFh) может адресоваться только с использованием косвенного метода адресации.

Таблица 3 — Блок Регистров Специальных Функций (s f r)

Адрес

Dir

Мнемо-код

Наименование

0E0h

* ACC

Аккумулятор

0F0h

* B

Регистр расширитель аккумулятора

0D0h

* PSW

Слово состояния процессора

0B0h

* P3

Порт 3

0A0h

* P2

Порт 2

90h

* P1

Порт 1

80h

* P0

Порт 0

0B8h

* IP

Регистр приоритетов прерываний

0A8h

* IE

Регистр маски прерываний

99h

SBUF

Буфер последовательного приемо-передатчика

98h

* SCON

Регистр управления/статуса последовательного порта

89h

TMOD

Регистр режимов таймеров/счетчиков

88h

* TCON

Регистр управления/статуса таймеров/счетчиков

8Dh

TH1

Таймер 1 (старший байт)

8Bh

TL1

Таймер 1 (младший байт)

8Ch

TH0

Таймер 0 (старший байт)

8Ah

TL0

Таймер 0 (младший байт)

83h

DPH

Регистр-указатель данных (DPTR)(старший байт)

82h

DPL

Регистр-указатель данных (DPTR)(младший байт)

81h

SP

Регистр-указатель стека

87h

PCON

Регистр управления мощностью потребления

* - Отмеченные регистры допускают адресацию отдельных бит (см. табл. 4)

2. Программная модель MCS-51

2.1 Карта прямоадресуемых бит

В Резидентной Памяти Данных В блоке Регистров Спец. Функций

7Fh

Адреса РПД

Адреса

SFR

30h

Регистр В

2Fh

7F

7E

7D

7C

7B

7A

79

78

0F0h

F7

F6

F5

F4

F3

F2

F1

F0

2Eh

77

76

75

74

73

72

71

70

2Dh

6F

6E

6D

6C

6B

6A

69

68

2Ch

67

66

65

64

63

62

61

60

Регистр АСС

2Bh

5F

5E

5D

5C

5B

5A

59

58

0E0h

E7

E6

E5

E4

E3

E2

E1

E0

2Ah

57

56

55

54

53

52

51

50

29h

4F

4E

4D

4C

4B

4A

49

48

28h

47

46

45

44

43

42

41

40

27h

3F

3E

3D

3C

3B

3A

39

38

26h

37

36

35

34

33

32

31

30

IP

25h

2F

2E

2D

2C

2B

2A

29

28

0B8h

BC

BB

BA

B9

B8

24h

27

26

25

24

23

22

21

20

23h

1F

1E

1D

1C

1B

1A

19

18

Порт Р3

22h

17

16

15

14

13

12

11

10

0B0h

B7

B6

B5

B4

B3

B2

B1

B0

21h

0F

0E

0D

0C

0B

0A

09

08

20h

07

06

05

04

03

02

01

00

IE

1Fh

R7

0A8h

AF

AC

AB

AA

A9

A8

Порт Р2

18h

R0

0A0h

A7

A6

A5

A4

A3

A2

A1

A0

17h

R7

SCON

98h

9F

9E

9D

9C

9B

9A

99

98

10h

R0

R7

Порт Р1

90h

97

96

95

94

93

92

91

90

08h

R0

TCON

07h

R7

88h

8F

8E

8D

8C

8B

8A

89

88

Порт Р0

00h

R0

80h

87

86

85

84

83

82

81

80

2. 2 Типы команд MCS-51

/

Почти половина команд выполняется за 1 машинный цикл (МЦ) (см. таблицы 8. 12). При частоте кварцевого генератора 12 МГц время выполнения такой команды — 1 мкс. Остальные команды выполняются за 2 машинных цикла, т. е. за 2мкс (см. таблицы 8. 12). Только команды умножения (MUL) и деления (DIV) выполняются за 4 машинных цикла.

За время одного машинного цикла происходит два обращения к Памяти Программ (внутренней или внешней) для считывания двух байтов команды или одно обращение к Внешней Памяти Данных (ВПД).

3. Методы (способы) адресации MCS-51

1. РЕГИСТРОВАЯ АДРЕСАЦИЯ — 8-ми битовый операнд находится в РОНе выбранного банка регистров;

2 НЕПОСРЕДСТВЕННАЯ АДРЕСАЦИЯ — операнд находится во втором (а для 16-ти битового операнда и в третьем) байте команды;

3 КОСВЕННАЯ АДРЕСАЦИЯ — операнд находится в Памяти Данных (РПД или ВПД), а адрес ячейки памяти содержится в одном из РОНов косвенной адресации (R0 или R1); в командах PUSH и POP адрес содержится в указателе стека SP; регистр DPTR может содержать адрес ВПД объемом до 64К;

4 ПРЯМАЯ БАЙТОВАЯ АДРЕСАЦИЯ — (dir) — используется для обращения к ячейкам РПД (адреса 00h…7Fh) и к регистрам специальных функций SFR (адреса 80h…0FFh);

5 ПРЯМАЯ БИТОВАЯ АДРЕСАЦИЯ — (bit) — используется для обращения к отдельно адресуемым 128 битам, расположенным в ячейках РПД по адресам 20H…2FH и к отдельно адресуемым битам регистров специальных функций (см. табл. 2. 3);

6 КОСВЕННАЯ ИНДЕКСНАЯ АДРЕСАЦИЯ — упрощает просмотр таблиц в Памяти Программ, адрес ПП определяется по сумме базового регистра (PC или DPTR) и индексного регистра (Аккумулятора);

7 НЕЯВНАЯ (ВСТРОЕННАЯ) АДРЕСАЦИЯ — в коде команды содержится неявное (по умолчанию) указание на один из операндов (чаще всего на Аккумулятор).

ФОРМАТ СЛОВА СОСТОЯНИЯ ПРОЦЕССОРА (PSW)

Прямой байтовый адрес PSW: dir — 0D0H.

Допускается адресация отдельных бит PSW: bit — 0D0H_0D7H.

C — флаг переноса, выполняет также функции «булевого Аккумулято-ра» в командах, оперирующих с битами;

AC — флаг вспомогательного (дополнительного) переноса;

F0 — флаг пользователя — устанавливается, сбрасывается и проверяется программно;

OV — Флаг арифметического переполнения; его значение определяется операцией «Исключающее ИЛИ» сигналов входного и выходного переносов старшего разряда АЛУ; единичное значение этого флага указывает на то, что результат арифметической операции в дополнительном коде занял знаковый разряд; при выполнении операции деления флаг OV сбрасывается, а в случае деления на ноль — устанавливается; при умножении флаг OV устанавливается, если результат больше 255 (0FFH);

Разряд PSW[1] - Резервный, содержит триггер, доступный по записи или чтению; P — флаг паритета — является дополнением аккумулятора до четности; формируется комбинационной схемой (программно доcтупен только по чтению).

В микроконтроллерах MCS-51 отсутствует флаг «Z». Но в командах условного перехода (JZ, JNZ) проверяется комбинационной схемой текущее (нулевое) содержимое Аккумулятора

/

Таблица 5 -- Таблица ассемблера MCS-51

Rn

0

1

2

3

4

5

6

7

@Ri

R0

R1

Прямая адресация

Непосредственная

MOV A, Rn

E8

E9

EA

EB

EC

ED

EE

EF

MOV A,@Ri

E6

E7

MOV A

E5

, dir

MOV A

74

,#DAT

MOV Rn, A

F8

F9

FA

FB

FC

FD

FE

FF

MOV @Ri, A

F6

F7

MOV dir

F5

, A

MOV dir

75

,#DAT

MOV Rn

78

79

7A

7B

7C

7D

7E

7F

,#DAT

MOV @Ri

76

77

,#DAT

MOV dir

B5

, dir

MOV Rn

A8

A9

AA

AB

AC

AD

AE

AF

, dir

MOV @Ri

A6

A7

, dir

PUSH

C0

, dir

MOV DPTR

90

,#D16

MOV dir

B8

B9

BA

BB

BC

BD

BE

BF

, Rn

MOV dir

B6

B7

, @Ri

POP

D0

, dir

XCH A, Rn

C8

C9

CA

CB

CC

CD

CE

CF

XCH A,@Ri

C6

C7

XCH A

C5

, dir

SWAP A

C4

< Обмен тетрад Аккумулятора

XCHD A,@Ri

D6

D7

< Обмен младших тетрад

Пересылки

ВПД с Акк

MOVX A,@DPTR

E0

MOVX A,@Ri

E2

E3

Пересылки из

Пам. Прогр. в Акк

MOVC A,@A+DPTR

93

MOVX @DPTR, A

F0

MOVX @Ri, A

F2

F3

MOVC A,@A+PC

B3

Арифметические и логические команды

Комментарии

Rn

0

1

2

3

4

5

6

7

@Ri

R0

R1

Прям. адресация

Непосредственная

А< А+()

ADD A, Rn

28

29

2A

2B

2C

2D

2E

2F

ADD A,@Ri

26

27

ADD A

25

, dir

ADD A,

24

,#DAT

A< А+()+C

ADDC A, Rn

38

39

3A

3B

3C

3D

3E

3F

ADDC A,@Ri

36

37

ADDC A

35

, dir

ADDC A

34

,#DAT

A< А-()-C

SUBB A, Rn

98

99

9A

9B

9C

9D

9E

9F

SUBB A,@Ri

96

97

SUBB A

95

, dir

SUBB A

94

,#DAT

()< () + 1

INC Rn

08

09

0A

0B

0C

0D

0E

0F

INC @Ri

06

07

INC

05

, dir

INC A

04

()< () — 1

DEC Rn

18

19

1A

1B

1C

1D

1E

1F

DEC @Ri

16

17

DEC

15

, dir

DEC A

14

А<А & ()

ANL A, Rn

58

59

5A

5B

5C

5D

5E

5F

ANL A,@Ri

56

57

ANL A

55

, dir

ANL A

54

,#DAT

()<() & А

ANL dir

52

, A

ANL dir

53

,#DAT

А<А / ()

ORL A, Rn

48

49

4A

4B

4C

4D

4E

4F

ORL A,@Ri

46

47

ORL A

45

, dir

ORL A

44

,#DAT

()<() / А

ORL dir

42

, A

ORL dir

43

,#DAT

А<А (+) ()

XRL A, Rn

68

69

6A

6B

6C

6D

6E

6F

XRL A,@Ri

66

67

XRL A

65

, dir

XRL A

64

,#DAT

()<() (+) А

XRL dir

62

, A

XRL dir

63

,#DAT

BA < A? B

MUL AB

A4

INC DPTR

52

Сброс

CLR A

E4

Циклический сдвиг

RL A

23

RR A

03

A. B < A / B

DIV AB

B4

DA A

D4

Инверсия

CPL A

F4

Сдвиг через перенос

RLC A

33

RRC A

13

Флаг OV при выполнении операции деления — сбрасывается, а в случае деления на ноль — устанавливается; при умножении флаг OV устанавливается, если результат больше 255 (0FFH)

Флаги: Р (четности Аккумулятора) и Z (нулевого содержимого Аккумулятора) формируются комбинационными схемами. Эти флаги модифицируются любыми командами, изменяющими содержимое Аккумулятора

Таблица 7 — Таблица дизассемблера MCS-51

0

1

2

3

4

5

6

7

0

NOP

AJMP

S0+8ADR

LJMP 16ADR

RR A

INC A

INC dir

INC @R0

INC @R1

1

JBC

bit, rel

ACALL

S0+8ADR

LCALL 16ADR

RRC A

DEC A

DEC dir

DEC @R0

DEC @R1

2

JB

bit, rel

AJMP

S1+8ADR

RET

RL A

ADD A,#DAT

ADD A, dir

ADD A,@R0

ADD A,@R1

3

JNB

bit, rel

ACALL

S1+8ADR

RETI

RLC A

ADDC A,#DAT

ADDC A, dir

ADDC A,@R0

ADDC A,@R1

4

JC rel

AJMP

S2+8ADR

ORL dir, A

ORL dir, #DAT

ORL A,#DAT

ORL A, dir

ORL A,@R0

ORL A,@R1

5

JNC rel

ACALL

S2+8ADR

ANL dir, A

ANL dir, #DAT

ANL A,#DAT

ANL A, dir

ANL A,@R0

ANL A,@R1

6

JZ rel

AJMP

S3+8ADR

XRL dir, A

XRL dir, #DAT

XRL A,#DAT

XRL A, dir

XRL A,@R0

XRL A,@R1

7

JNZ

rel

ACALL

S3+8ADR

ORL C, bit

JMP @A +DPTR

MOV A,#DAT

MOV dir, #DAT

MOV @R0, #DAT

MOV @R1, #DAT

8

SJMP

rel

AJMP

S4+8ADR

ANL C, bit

MOVC A,@A+PC

DIV AB

MOV dir, dir

MOV dir,@R0

MOV dir,@R1

9

MOV DPTR, #D16

ACALL

S4+8ADR

MOV bit, C

MOVC A,@A+

DPTR

SUBB A,#DAT

SUBB A, dir

SUBB A,@R0

SUBB A,@R1

A

ORL C,/bit

AJMP

S5+8ADR

MOV C, bit

INC DPTR

MUL AB

MOV @R0,dir

MOV @R1,dir

B

ANL C,/bit

ACALL

S5+8ADR

CPL

bit

CPL C

CJNE A,#DAT, rel

CJNE A, dir, rel

CJNE @R0,#D, rel

CJNE @R1,#D. rel

C

PUSH

Dir

AJMP

S6+8ADR

CLR bit

CLR C

SWAP A

XCH A, dir

XCH A,@R0

XCH A,@R1

D

POP dir

ACALL

S6+8ADR

SETB bit

SETB C

DA A

DJNZ dir, rel

XCHD A,@R0

XCHD A,@R1

E

MOVX A, @DPTR

AJMP

S7+8ADR

MOVX A,@R0

MOVX A,@R1

CLR A

MOV A, dir

MOV A,@R0

MOV A,@R1

F

MOVX @DPTR, A

ACALL

S7+8ADR

MOVX @R0,A

MOVX @R1,A

CPL A

MOV dir, A

MOV @R0,A

MOV @R1,A

0

1

2

3

4

5

6

7

Таблица дизассемблера MCS-51

0

1

2

3

4

5

6

7

INC R0

INC R1

INC R2

INC R3

INC R4

INC R5

INC R6

INC R7

0

DEC R0

DEC R1

DEC R2

DEC R3

DEC R4

DEC R5

DEC R6

DEC R7

1

ADD A, R0

ADD A, R1

ADD A, R2

ADD A, R3

ADD A, R4

ADD A, R5

ADD A, R6

ADD A, R7

2

ADDC A, R0

ADDC A, R1

ADDC A, R2

ADDC A, R3

ADDC A, R4

ADDC A, R5

ADDC A, R6

ADDC A, R7

3

ORL A, R0

ORL A, R1

ORL A, R2

ORL A, R3

ORL A, R4

ORL A, R5

ORL A, R6

ORL A, R7

4

ANL A, R0

ANL A, R1

ANL A, R2

ANL A, R3

ANL A, R4

ANL A, R5

ANL A, R6

ANL A, R7

5

XRL A, R0

XRL A, R1

XRL A, R2

XRL A, R3

XRL A, R4

XRL A, R5

XRL A, R6

XRL A, R7

6

MOV R0, #DAT

MOV R1, #DAT

MOV R2, #DAT

MOV R3, #DAT

MOV R4, #DAT

MOV R5, #DAT

MOV R6, #DAT

MOV R7, #DAT

7

MOV dir, R0

MOV dir, R1

MOV dir, R2

MOV dir, R3

MOV dir, R4

MOV dir, R5

MOV dir, R6

MOV dir, R7

8

SUBB A, R0

SUBB A, R1

SUBB A, R2

SUBB A, R3

SUBB A, R4

SUBB A, R5

SUBB A, R6

SUBB A, R7

9

MOV R0, dir

MOV R1, dir

MOV R2, dir

MOV R3, dir

MOV R4, dir

MOV R5, dir

MOV R6, dir

MOV R7, dir

A

CJNE R0,#D,

rel

CJNE R1,#D,

rel

CJNE R2,#D,

rel

CJNE R3,#D,

rel

CJNE R4,#D,

rel

CJNE R5,#D,

rel

CJNE R6,#D,

rel

CJNE R7,#D,

rel

B

XCH A, R0

XCH A, R1

XCH A, R2

XCH A, R3

XCH A, R4

XCH A, R5

XCH A, R6

XCH A, R7

C

DJNZ R0, rel

DJNZ R1, rel

DJNZ R2, rel

DJNZ R3, rel

DJNZ R4, rel

DJNZ R5, rel

DJNZ R6, rel

DJNZ R7, rel

D

MOV A, R0

MOV A, R1

MOV A, R2

MOV A, R3

MOV A, R4

MOV A, R5

MOV A, R6

MOV A, R7

E

MOV R0, A

MOV R1, A

MOV R2, A

MOV R3, A

MOV R4, A

MOV R5, A

MOV R6, A

MOV R7, A

F

0

1

2

3

4

5

6

7

Таблица 8 — Команды пересылки, обмена и загрузки

Комментарии

Мнемокод

К О П

ТК

Б

МЦ

A < Rn; Пересылка из РОНа в Акк

MOV A, Rn

11101rrr

1

1

1

A < (Ri); Пересыдка из РПД в Акк

MOV A,@Ri

111 0011i

1

1

1

A < (dir); Пересылка из РПД в Акк

MOV A, dir

11 100 101

3

2

1

A < #DAT; Загрузка байта в Акк

MOV A,#DAT

1 110 100

2

2

1

Rn < A; Пересылка из Акк. в РОН

MOV Rn, A

11111rrr

1

1

1

(Ri) < A; Пересылка из Акк. в РПД

MOV @Ri, A

111 1011i

1

1

1

(dir) < A; Пересылка из Акк. в РПД

MOV dir, A

11 110 101

3

2

1

(dir) < #DAT; Загрузка байта в РПД

MOV dir,#DAT

1 110 101

7

3

2

Rn < #DAT; Загрузка байта в РОН

MOV Rn,#DAT

01111rrr

2

2

1

(Ri) < #DAT; Загрузка байта в РПД

MOV @Ri,#DAT

11 1011i

2

2

1

(dir)< (dir); Пересыл. из РПД в РПД

MOV dir, dir

10 000 101

9

3

2

Rn < (dir); Пересылка из РПД в РОН

MOV Rn, dir

10101rrr

3

2

2

(Ri)< (dir); Пересылка из РПД в РПД

MOV @RI, dir

101 0011i

3

2

2

(dir)< Rn; Пересылка из РОНа в РПД

MOV dir, Rn

10001rrr

3

2

2

(dir)< (Ri); Пересылка из РПД в РПД

MOV dir,@Ri

100 0011i

3

2

2

DPTR< #D16; Загрузка слова в DPTR

MOV DPTR,#D16

10 010 000

13

3

2

A — Rn; Обмен Акк. с РОНом

XCH A, Rn

11001rrr

1

1

1

A — (Ri); Обмен Акк. с РПД

XCH A, @Ri

110 0011i

1

1

1

A -(dir); Обмен Акк. с РПД

XCH A, dir

11 000 101

3

2

1

Обмен младших тетрад Акк. с РПД

XCHD A, @Ri

110 1011i

1

1

1

Обмен тетрад Аккумулятора (Циклический сдвиг Акк. на 4 бита)

SWAP A

11 000 100

1

1

1

SP< SP+1;(SP)<(dir); Запись в стек

PUSH dir

11 000 000

3

2

2

(dir)< (SP);SP<SP-1; Чтение из стека

POP dir

11 010 000

3

2

2

A< (DPTR);Пересылка из ВПД в Акк.

MOVX A,@DPTR

11 100 000

1

1

2

(DPTR)< A;Пересылка из Акк. в ВПД

MOVX @DPTR, A

11 110 000

1

1

2

A< (Ri); Пересылка из ВПД в Акк.

MOVX A,@Ri

111 0001i

1

1

2

(Ri)< A; Пересылка из Акк. в ВПД

MOVX @Ri, A

111 1001i

1

1

2

A < ((A+DPTR)); Пересылка байта из ПП в Акк.

MOVC A,@A+DPTR

10 010 011

1

1

2

A< ((A+PC));Пересылка из ПП в Акк.

MOVC A,@A+PC

10 000 011

1

1

2

Таблица 9 — Арифметические и логические команды

Комментарии

Мнемокод

К О П

ТК

Б

МЦ

A< A+Rn; Сложение Акк. с РОНом

ADD A, Rn

00101rrr

1

1

1

A< A+(Ri); Сложение Акк. с РПД

ADD A, @Ri

1 0011i

1

1

1

A< A+(dir); Сложение Акк. с РПД

ADD A, dir

100 101

3

2

1

A< A+#DAT; Сложение Акк. с #DAT

ADD A,#DAT

100 100

2

2

1

A < A + Rn + C;

ADDC A, Rn

00111rrr

1

1

1

A < A + (Ri) + C;

ADDC A, @Ri

1 1011i

1

1

1

A < A + (dir) + C;

ADDC A, dir

110 101

3

2

1

A < A + #DAT + C;

ADDC A,#DAT

110 100

2

2

1

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

DA A

11 010 100

1

1

1

A < A — Rn — C;

SUBB A, Rn

10011rrr

1

1

1

A < A — (Ri) — C;

SUBB A, @Ri

100 1011i

1

1

1

A < A — (dir) — C;

SUBB A, dir

10 010 101

3

2

1

A < A — #DAT — C;

SUBB A,#DAT

10 010 100

2

2

1

A < = A + 1; Инкремент Аккумул.

INC A

100

1

1

1

Rn < Rn + 1; Инкремент РОНа

INC Rn

00001rrr

1

1

1

(Ri) < (Ri) + 1; Инкремент РПД

INC @Ri

11i

1

1

1

(dir) < (dir) + 1; Инкремент РПД

INC dir

101

3

2

1

DPTR< DPTR+1; Инкремент DPTR

INC DPTR

10 100 011

1

1

2

A < A — 1; Декремент Аккумул.

DEC A

10 100

1

1

1

Rn < Rn — 1; Декремент РОНа

DEC Rn

00011rrr

1

1

1

(Ri) < (Ri) — 1; Декремент РПД

DEC @Ri

1011i

1

1

1

(dir) < (dir) — 1; Декремент РПД

DEC dir

10 101

3

2

1

BA < A * B; Умножение A на B,

B < старш. байт, A < младш. байт

MUL AB

10 100 100

1

1

4

A.B < A / B; Деление A на B,

A < байт частного, B < остаток

DIV AB

10 000 100

1

1

4

A < A & Rn; Лог. «И» Акк. и РОНа

ANL A, Rn

01011rrr

1

1

1

A < A & (Ri); Лог. «И» Акк. и РПД

ANL A,@Ri

10 1011i

1

1

1

A < A & (dir); Лог. «И» Акк. и РПД

ANL A, dir

1 010 101

3

2

1

A<A & #DAT; Лог. «И» Акк. и #DAT

ANL A,#DAT

1 010 100

2

2

1

(dir) < (dir) & A; Лог. «И» РПД и Акк

ANL dir, A

1 010 010

3

2

1

(dir) < (dir) & #DAT;

ANL dir,#DAT

1 010 011

7

3

2

A < A / Rn; Лог. «ИЛИ» Акк. и РОНа

ORL A, Rn

01001rrr

1

1

1

A < A / (Ri); Лог. «ИЛИ» Акк. и РПД

ORL A,@Ri

10 0011i

1

1

1

A < A / (dir); Лог. «ИЛИ» Акк. и РПД

ORL A, dir

1 000 101

3

2

1

A < A / #DAT;

ORL A,#DAT

1 000 100

2

2

1

(dir) < (dir) / A;

ORL dir, A

1 000 010

3

2

1

(dir) < (dir) / #DAT;

ORL dir,#DAT

1 000 011

7

3

2

A<A (+) Rn; «Искл. ИЛИ» Акк. и РОН

XRL A, Rn

01101rrr

1

1

1

A < A (+) (Ri);

XRL A, @Ri

11 0011i

1

1

1

A < A (+) (dir);

XRL A, dir

1 100 101

3

2

1

A < A (+) #DAT;

XRL A,#DAT

1 100 100

2

2

1

(dir) < (dir) (+) A;

XRL dir, A

1 100 010

3

2

1

(dir) < (dir) (+) #DAT;

XRL dir,#DAT

1 100 011

7

3

2

A < 0; Сброс Аккумулятора

CLR A

11 100 100

1

1

1

A < ~A; Инверсия Аккумулятора

CPL A

11 110 100

1

1

1

Циклический сдвиг влево Акк.

RL A

100 011

1

1

1

Цикл. сдвиг влево Акк. через перенос

RLC A

110 011

1

1

1

Циклический сдвиг вправо Акк.

RR A

11

1

1

1

Цикл. сдвиг вправо Акк. через перенос

RRC A

10 011

1

1

1

Таблица 10 — Операции с битами

Комментарии

Мнемокод

К О П

ТК

Б

МЦ

С < 0; Сброс флага С

CLR C

11 000 011

1

1

1

C < 1; Установка флага С

SETB C

11 010 011

1

1

1

С < ~C; Инверсия флага С

CPL C

10 110 011

1

1

1

(bit) < 0; Сброс прямоадресуем. бита

CLR bit

11 000 010

4

2

1

(bit) < 1; Установка «бита»

SETB bit

11 010 010

4

2

1

(bit) < ~(bit); Инверсия «бита»

CPL bit

10 110 010

4

2

1

C < C & (bit); Лог. «И» С и «бита»

ANL C, bit

10 000 010

4

2

2

C < C & ~(bit); «И» С и инверс. бита

ANL C,/bit

10 110 000

4

2

2

C < C / (bit); Лог. «ИЛИ» С и бита

ORL C, bit

1 110 010

4

2

2

C < C / ~(bit); Лог. «ИЛИ» С и

инверсии прямоадресуемого бита

ORL C,/bit

10 100 000

4

2

2

C < (bit); Пересылка из прямоад-

ресуемого бита во флаг С

MOV C, bit

10 100 010

4

2

1

(bit) < C; Пересылка из С в «бит»

MOV bit, C

10 010 010

4

2

2

Таблица 11 — Команды условных переходов

Комментарии

Мнемокод

К О П

ТК

Б

МЦ

PC < PC + 2 + rel, если, А = 0

JZ rel

1 100 000

5

2

2

PC < PC + 2 + rel, если, А < > 0

JNZ rel

1 110 000

5

2

2

PC < PC + 2 + rel, если флаг С = 1

JC rel

1 000 000

5

2

2

PC < PC + 2 + rel, если флаг С = 0

JNC rel

1 010 000

5

2

2

PC < PC + 3 + rel, если (bit) = 1

JB bit, rel

100 000

11

3

2

PC < PC + 3 + rel, если (bit) = 0

JNB bit, rel

110 000

11

3

2

PC < PC + 3 + rel, если (bit) = 1,

(bit) < 0

JBC bit, rel

10 000

11

3

2

PC < PC + 3 + rel, если A< >#DAT,

C < 1, если A < #DAT,

С < 0, если A > #DAT

CJNE

A, #DAT, rel

10 110 100

10

3

2

PC < PC + 3 + rel, если Rn< >#DAT,

C < 1, если Rn < #DAT,

С < 0, если Rn > #DAT

CJNE

Rn, #DAT, rel

10111rrr

10

3

2

PC< PC + 3 + rel, если (@Ri)< >#DAT,

C < 1, если (@Ri) < #DAT,

С < 0, если (@Ri) > #DAT

CJNE

@Ri, #DAT, rel

101 1011i

10

3

2

PC < PC + 3 + rel, если A< >(dir),

C < 1, если A < (dir),

С < 0, если A > (dir)

CJNE

A, dir, rel

10 110 101

8

3

2

PC < PC + 2 + rel, если Rn — 1 < > 0

DJNZ Rn, rel

11011rrr

5

2

2

PC < Pc + 3 + rel, если (dir) — 1 < > 0

DJNZ dir, rel

11 010 101

8

3

2

Таблица 12 — Команды безусловных переходов

Комментарии

Мнемокод

К О П

ТК

Б

МЦ

PC[015]< 16ADR; Длинный переход

LJMP 16ADR

10

12

3

2

PC[011] < 11ADR; Переход

внутри страницы в 2 Кбайта

AJMP 11ADR

sss00001

6

2

2

PC < PC + 2 + rel; Относит. переход

SJMP rel

10 000 000

5

2

2

PC < A + DPTR; Косвенный

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

JMP @A+DPTR

1 110 011

1

1

2

(SP) < PC + 3; PC[015] < 16ADR;

Длинный вызов подпрограммы

LCALL 16ADR

10 010

12

3

2

(SP) < PC + 2; PC[010] < 11ADR;

Вызов подпр. внутри страницы в 2Кб

ACALL 11ADR

sss10001

6

2

2

PC < (SP); Возврат из подпрограммы

RET

100 010

1

1

2

PC < (SP); Возврат из подпро-

граммы обработки прерываний

RETI

110 010

1

1

2

PC < PC + 1; Холостая команда

NOP

0

1

1

1

микроконтроллер схема адресация функция

/

/

Сложные микроконтроллерные системы могут состоять только из одного микроконтроллера (см. рис. 4). Дополнительные элементы выполняют функции усилителей мощности (для управления светодиодными семисегментными индикаторами) или преобразователей уровней сигналов.

На выходе порта Р2 формируются сигналы типа «бегущий нуль» для динамического управления индикаторами и сканирования столбцов матрицы клавиатуры.

При расширении памяти программ или памяти данных, кроме собственно чипов памяти, необходим дополнительный параллельный регистр (см. рис. 5) для запоминания младшего байта адреса с выходов порта Р0. После этого микроконтроллер обменивается с внешней памятью одним байтом данных по линиям порта Р0. Запоминать старший байт адреса с выходов порта Р2 не нужно, потому что адресная информация на этих выводах не изменяется во время всего цикла обмена

4. Таймеры / счетчики внешних событий

Два программируемых 16-ти битовых таймера/счетчика (Т/С 0 и Т/С 1) могут быть использованы в качестве таймеров или счетчиков внешних событий. При работе в качестве таймера содержимое Т/С инкрементируется в каждом машинном цикле, т. е. через каждые 12 периодов резонатора. При работе в качестве счетчика содержимое Т/С инкрементируется под воздействием перехода «1−0» внешнего входного сигнала, подаваемого на соответствующий вывод (Т0 или Т1). Максимальная входная частота счетчиков: Ft / 24.

Таблица 13 — Выбор режимов таймеров / счетчиков (TMOD)

Биты

TMOD

Обозна-чение

Выбор режима

0, 1

4, 5

М0, М1

Определяют один из 4-х режимов работы, отдельно для Т/С 1 и Т/С 0:

2

6

C/~T 0

C/~T 1

Определяет работу отдельно для каждого счетчика в режиме:

C/~T = 0 — таймера;

C/~T = 1 — счетчика внешних событий.

3

7

GATE 0

GATE 1

Разрешает управлять счетчиком от внешнего вывода (~INT0 — для Т/С 0, ~INT1 — для Т/С 1):

GATE = 0 — управление запрещено,

GATE = 1 — управление разрешено.

Таблица 14 — Назначение битов TCON

Биты

TMOD

Обозна-чение

Назначение разрядов TCON

5

7

TF 0

TF 1

Флаги переполнения Т/С, устанавливаются аппаратно при переполнении соответствующего Т/С (переходе из состояния «все единицы» в состояние «все нули»).

Если прерывание от соответствующего Т/С разрешено, то установка флага TF вызовет прерывание. Флаги TF 0 или TF 1 сбрасываются аппаратно при передаче управления подпрограмме обработки соответствую-щего прерывания

4

6

TR 0

TR 1

Разрешение счета отдельно для каждого Т/С:

TR = 0 — счет остановлен,

TR = 0 — разрешение счета.

1

3

IE 0

IE 1

Флаги запроса внешних прерываний по входам ~INT0 и ~INT1 соответственно; устанавливаются аппаратно (от внешних устройств) или программно и вызывают подпрограмму обработки прерываний. Если прерыва-ние вызвано по фронту сигнала, эти флаги сбрасыва-ются аппаратно при переходе к подпрограмме. Если прерывание было вызвано низким уровнем на входе ~INT0 (~INT1), то сброс флага должна выполнять подпрограмма обслуживания прерывания, воздействуя на источник прерывания для снятия запроса.

0

2

IT 0

IT 1

Управление видом прерывания отдельно по входам ~INT 0 или ~INT 1:

IT = 0 — прерывание по уровню (низкому),

IT = 0 — прерывание по фронту «1−0»

РЕЖИМ РАБОТЫ «0» (М0=0, М1=0) функционально совместим с таймером/счетчиком микроконтроллера MCS-48. Деление импульсов Машинных Циклов (МЦ) на 32 выполняют 5 младших разрядов регистров TL 0, TL 1.

Логика работы в РЕЖИМЕ 0 на примере Т/C 0 показана на рис. 6 Для Т/C 1 логика работы аналогична.

Счет начинается при установке бита TR 0 регистра TCON в состояние «1». (Если бит TR = 0, то регистры соответствующих таймеров/ счетчиков TH и TL могут использоваться как дополнительные РОНы).

Установка бита GATE в единичное состояние позволяет в режиме внутреннего таймера измерять длительность импульсного сигнала, подаваемого на вход внешнего прерывания ~INT.

РЕЖИМ РАБОТЫ «1» (М0=1, М1=0) аналогичен РЕЖИМУ «0». Отличие состоит в том, что таймерные регистры TL, TH — 16-ти разрядные.

/

/

РЕЖИМ РАБОТЫ «2» (М0=0, М1=1) представляет собой 8-ми разрядный делитель TL 0 (или TL 1) с переменным (программируемым) коэффициентом деления. При каждом переполнении 8-ми разрядного счетчика TL 0 устанавливается флаг TF 0 и происходит перезагрузка счетчика TL 0 из регистра TH 0 (рис. 7). Для Т/C 1 логика работы аналогична.

РЕЖИМ РАБОТЫ «3» различный для T/C 0 и T/C 1. Счетчик T/C 1 в режиме «3» заблокирован (сохраняет свое текущее значение). T/C 0 в РЕЖИМЕ «3» представляет собой два независимых 8-ми разрядных счетчика TL 0 и TH 0.

/

TL 0 может работать в режиме таймера и в режиме счетчика. За ним сохраняются все биты управления T/C 0 и входные сигналы T0, ~INT0 (см. рис. 8). TH 0 может работать только в режиме таймера, использует бит включения TR 1 и выставляет флаг переполнения TF 1 (рис. 8).

5. Режимы прерывания микроконтроллеров MCS-51

Запросы от внешних прерываний ~INT0, ~INT1 фиксируются в триггерах IE0, IE1 Регистра Управления T/C и внешними прерываиями (TCON). Установка этих триггеров осуществляется низким уровнем на входах ~INT0, ~INT1 (если сброшены биты IT0 = 0, IT1 = 0 регистра TCON), или по фронту «1−0» (если биты установлены: IT 0 = 1, IT 1 = 1).

Запросы прерываний от Таймеров/Счетчиков фиксируются в триггерах TF0, TF1 регистра управления TCON.

Запрос прерывания последовательного порта вызывается установкой флага прерывания приемника RI или флага прерывания передатчика TI в регистре SCON. В отличие от всех остальных флагов, RI и TI сбрасываются только программным путем (обычно в пределах подпрограммы обработки прерывания, где определяется: какому из флагов RI или TI соответствует прерывание).

Все перечисленные флаги прерываний: IE0, IE1, TF0, TF1, RI, TI — могут быть установлены (или сброшены) программно и вызвать соответствующие прерывания.

Прерывание по каждому из перечисленных источников может быть разрешено или запрещено установкой или сбросом соответствующего бита в РЕГИСТРЕ МАСКИ (Разрешения) ПРЕРЫВАНИЙ — (IE):

· EA — управление всеми источниками прерываний; если EA = 0 — все прерывания запрещены; если EA = 1 — прерывания могут быть разрешены индивидуально;

· ES = 1 — разрешение прерывания от последовательного порта, при ES = 0 — запрещение прерывания;

· ET 1 = 1 — разрешение прерывания от T/C 1; ET 1 = 0 — запрет;

· EX 1 = 1 — разрешение прерывания от внешнего источника ~INT1, при EX1 = 0 — запрет;

· ET 0 = 1 — разрешение прерывания от T/C 0; ET 0 = 0 — запрет;

· EX 0 = 1 — разрешение прерывания от внешнего источника ~INT0, при EX 0 = 0 — запрет.

РЕГИСТР ПРИОРИТЕТОВ ПРЕРЫВАНИЙ — IP предназначен для установки уровня приоритета прерывания для каждого из пяти источников прерываний:

· PS — установка уровня приоритета прерывания от последовательного порта;

· PT1 — установка уровня приоритета прерывания от T/C 1;

· PX1 — установка уровня приоритета прерывания от внешнего источника ~INT1;

· PT0 — установка уровня приоритета прерывания от T/C 0;

· PX0 — установка уровня приоритета прерывания от внешнего источника ~INT0.

Наличие в разряде регистра IP «1» устанавливает для соответст-вующего источника высокий уровень приоритета, а наличие «0» — низкий уровень приоритета.

Программа обработки прерывания с низким уровнем приоритета может быть прервана запросом прерывания с высоким уровнем приоритета, но не может быть прервана другим запросом прерывания с низким уровнем приоритета. Программа обработки прерывания с высоким уровнем приоритета не может быть прервана никаким другим запросом прерывания.

Если два запроса с разными уровнями приоритета приняты одновременно, сначала будет обслужен запрос с высоким уровнем приоритета.

Если одновременно приняты запросы с одинаковым уровнем приоритета, обработка их будет производиться в порядке, задаваемом последовательностью внутреннего опроса флагов прерываний. Таким образом, в пределах одного приоритетного уровня существует еще одна структура приоритетов (табл. 15):

Таблица 15 — Приоритеты внутри одного уровня и векторы прерываний

Источник прерывания

Приоритет внутри уровня

Векторы прерываний в адресном пространстве Прогр. Памяти

Внешнее прерывание ~INT 0

высший

0003h

Таймер/Счетчик Т/С 0

000Bh

Внешнее прерывание ~INT 1

0013h

Таймер/Счетчик Т/С 1

001Bh

Последовательный порт

низший

0023h

При переходе по вектору на подпрограмму обработки прерывания аппаратно запрещаются все прерывания с уровнем приоритета, равным (или меньшим) уровню приоритета обслуживаемого прерывания.

Подпрограмма обслуживания прерывания должна заканчиваться выполнением команды RETI, которая восстанавливает состояние логики прерывания и загружает из стека в счетчик команд (РС) адрес возврата в исходную программу. При использовании команды RET восстанавливается только счетчик команд (РС) из стека. Состояние логики прерывания команда RET не меняет, т. е. сохраняется запрет на прерывания с равным (или меньшим) приоритетом.

6. Последовательный интерфейс микроконтроллеров MCS-51

Через Универсальный Асинхронный Приемо-Передатчик (УАПП) осуществляется прием и передача информации, представленной последовательным кодом (младшими битами вперед), в полном дуплексном режиме обмена (как у СОМ-порта компьютера). В состав УАПП (или Последовательного Порта) входят:

· принимающий и

· передающий сдвигающие регистры, а также

· специальный буферный регистр (SBUF) приемопередатчика.

Запись байта в буфер SBUF приводит к автоматической перезаписи байта в сдвигающий регистр передатчика и инициирует начало последовательной передачи байта. Наличие буферного регистра приемника SBUF позволяет совмещать операцию чтения ранее принятого байта с последовательным приемом очередного байта. Если к моменту окончания приема байта предыдущий байт не был считан из SBUF, то он будет потерян.

Управление режимами работы УАПП определяется кодом, записанным в РЕГИСТР УПРАВЛЕНИЯ/СТАТУСА ПОСЛЕДОВА-ТЕЛЬНОГО ПОРТА (SCON):

· SM0, SM1 — определяют режимы работы УАПП (см. табл. 22);

· SM2 — разрешение многопроцессорной работы; (в режимах 2 и 3

при SM2 = 1 бит прерывания R1 не устанавливается, если принятый девятый бит данных RB8 = 0);

· REN — разрешение ПРИЕМА последовательных данных:

REN = 1 — разрешение приема,

REN = 0 — запрет приема;

· TB8 — девятый бит передаваемых данных в режимах 2 и 3; устана-вливается и сбрасывается программно;

· RB8 — девятый бит принятых данных в режимах 2 и 3;

· TI — флаг прерывания передатчика; устанавливается аппаратно в конце выдачи 8-го бита в режиме 0 или в начале стоп-бита — в других режимах; сбрасывается программой;

· RI — флаг прерывания приемника; устанавливается аппаратно в конце приема 8-го бита в режиме 0 или в середине стоп-бита — в других режимах; сбрасывается программой.

Таблица 16 — Режимы работы последовательного порта УАПП

SM0,SM1

Режим

Наименование

Скорость обмена

0 0

0

Передача и прием 8-ми битовых данных через двунаправленный вывод RxD; через вывод TxD выдаются синхроим-пульсы сдвига

Ft / 12

0 1

1

Передача (через вывод TxD) и прием (через вывод RxD): старт-бита (0), 8-ми битовых данных и стоп-бита (1)

Fov / 16,

при SMOD=1

Fov / 32

при SMOD=0

1 0

2

Передача (через вывод TxD) и прием (через вывод RxD): старт-бита (0), 9-ти битовых данных и стоп-бита (1)

Ft / 32,

при SMOD=1

Ft / 64

при SMOD=0

1 1

3

Передача (через вывод TxD) и прием (через вывод RxD): старт-бита (0), 9-ти битовых данных и стоп-бита (1)

Fov / 16,

при SMOD=1

Fov / 32

при SMOD=0

Fov — частота переполнения T/C1, работающего в режиме таймера или в режиме счетчика внешних событий. (Прерывание от T/C1 должно быть запрещено).

SMOD — старший бит регистра управления мощностью PCON.

В режиме 2 и 3 в многопроцессорных системах один из контроллеров (или IBM PC) играет роль ведущего, а остальные — ведомые. Механизм такой работы аппаратно поддерживается битом SM2 регистра SCON.

Ведущий микроконтроллер посылает вначале посылки «байт адреса». Адрес отличается от данных тем, что его девятый бит установлен в «1», а у данных — девятый бит равен «0». При SM2 = 1 байт адреса вызывает прерывание, а байт данных — нет. Микроконтроллер, у которого байт адреса совпал с собственным кодом, сбрасывает бит SM2 и имеет возможность принимать следующие за ним байты данных. Остальные ведомые оставляют бит SM2 установленным и не реагируют на последующие байты данных.

Таблица 17 — Программирование УАПП для стандартных скоростей обмена

Скорость приема/

передачи,

Кбод

Ft,

МГц

Регистр

SCON

Режим УАПП

Регистр

PCON

Регистр TMOD

для Т/С 1

Таймер

Т/С 1

SM0 SM1

SMOD

C/~T

M1

M0

TH 1

TL 1

1000

12

0 0

375

12

1 0

1

62,5

12

* 1

1

0

1

0

0FFh

19,2

11,059

* 1

1

0

1

0

0FDh

9,6

11,059

* 1

0

0

1

0

0FDh

4,8

11,059

* 1

0

0

1

0

0FAh

2,4

11,059

* 1

0

0

1

0

0E4h

1,2

11,059

* 1

0

0

1

0

0E8h

0,1375

11,059

* 1

0

0

1

0

18h

0,110

6

* 1

0

0

1

0

72h0

0,110

12

* 1

0

0

0

1

0FEh

0EBh

* - бит SM0 = 0 для режима 1 УАПП (8-ми битовые данные), бит SM0 = 1 для режима 3 УАПП (9-ми битовые данные).

· SMOD — бит удвоения скорости приема/передачи УАПП (см. табл. 2. 22 и табл. 2. 23);

· GF1, GF0 — резервные биты, содержат триггеры, доступные по записи и чтению;

· PD — бит включения режима микропотребления;

· IDL — бит включения режима холостого хода.

ПоказатьСвернуть
Заполнить форму текущей работой