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

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информатика, ВТ, телекоммуникации
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    27,19 kb
  • Опубликовано:
    2011-08-22
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Проектирование цифровых устройств на микроконтроллерах семейства 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).

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

-ми битовый внутренний регистр команд (РК) принимает код выполняемой команды; этот код дешифрируется схемой управления, которая генерирует управляющие сигналы (см. рис. 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[8_15] в режиме работы с внешней памятью (ВПП или ВПД);

29

PME

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

30

ALE

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

31

ЕА

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

39..32

Р0[0..7]

8-ми битовый двунаправленный порт ввода/ вывода; при обращении к Внешней Памяти выдает адреса A[0_7] (которые записываются во внешний регистр по сигналу 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

 

.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К;

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

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

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

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

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

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

Допускается адресация отдельных бит PSW : bit - 0D0H_0D7H.- флаг переноса, выполняет также функции «булевого Аккумулято-ра» в командах, оперирующих с битами;- флаг вспомогательного (дополнительного) переноса;- флаг пользователя - устанавливается, сбрасывается и проверяется программно;- Флаг арифметического переполнения; его значение определяется операцией "Исключающее ИЛИ" сигналов входного и выходного переносов старшего разряда АЛУ; единичное значение этого флага указывает на то, что результат арифметической операции в дополнительном коде занял знаковый разряд; при выполнении операции деления флаг 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

, 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

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

1110011i

1

1

1

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

MOV A,dir

11100101

3

2

1

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

MOV A,#DAT

01110100

2

2

1

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

MOV Rn,A

11111rrr

1

1

1

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

MOV @Ri,A

1111011i

1

1

1

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

MOV dir,A

11110101

3

2

1

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

MOV dir,#DAT

01110101

7

3

2

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

MOV Rn,#DAT

01111rrr

2

2

1

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

MOV @Ri,#DAT

0111011i

2

2

1

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

MOV dir,dir

9

3

2

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

MOV Rn, dir

10101rrr

3

2

2

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

MOV @RI,dir

1010011i

3

2

2

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

MOV dir, Rn

10001rrr

3

2

2

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

MOV dir,@Ri

1000011i

3

2

2

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

MOV DPTR,#D16

10010000

13

3

2

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

XCH A, Rn

11001rrr

1

1

1

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

XCH A, @Ri

1100011i

1

1

1

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

XCH A, dir

11000101

3

2

1

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

XCHD A, @Ri

1101011i

1

1

1

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

SWAP A

11000100

1

1

1

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

PUSH dir

11000000

3

2

2

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

POP dir

11010000

3

2

2

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

MOVX A,@DPTR

11100000

1

1

2

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

MOVX @DPTR,A

11110000

1

1

2

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

MOVX A,@Ri

1110001i

1

1

2

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

MOVX @Ri,A

1111001i

1

1

2

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

MOVC A,@A+DPTR

10010011

1

1

2

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

MOVC A,@A+PC

10000011

1

1

2


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

Комментарии

Мнемокод

К О П

ТК

Б

МЦ

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

ADD A,Rn

00101rrr

1

1

1

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

ADD A, @Ri

0010011i

1

1

1

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

ADD A, dir

00100101

3

2

1

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

ADD A,#DAT

00100100

2

2

1

A ← A + Rn + C;

ADDC A, Rn

00111rrr

1

1

1

A ← A + (Ri) + C;

ADDC A, @Ri

0011011i

1

1

1

A ← A + (dir) + C;

ADDC A, dir

00110101

3

2

1

A ← A + #DAT + C;

ADDC A,#DAT

00110100

2

2

1

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

DA A

11010100

1

1

1

A ← A - Rn - C;

SUBB A,Rn

10011rrr

1

1

1

A ← A - (Ri) - C;

SUBB A, @Ri

1001011i

1

1

1

A ← A - (dir) - C;

SUBB A,dir

10010101

3

2

1

A ← A - #DAT - C;

SUBB A,#DAT

10010100

2

2

1

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

INC A

00000100

1

1

1

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

INC Rn

00001rrr

1

1

1

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

INC @Ri

0000011i

1

1

1

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

INC dir

00000101

3

2

1

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

INC DPTR

10100011

1

1

2

A ← A - 1; Декремент Аккумул.

DEC A

00010100

1

1

1

Rn ← Rn - 1; Декремент РОНа

DEC Rn

00011rrr

1

1

1

(Ri) ← (Ri) - 1; Декремент РПД

DEC @Ri

0001011i

1

1

1

(dir) ← (dir) - 1; Декремент РПД

DEC dir

00010101

3

2

1

BA ← A * B; Умножение A на B, B ← старш. байт, A ← младш. байт

MUL AB

10100100

1

1

4

A.B ← A / B; Деление A на B, A ← байт частного, B ← остаток

DIV AB

10000100

1

1

4

A ← A & Rn; Лог. "И" Акк. и РОНа

ANL A,Rn

01011rrr

1

1

1

A ← A & (Ri); Лог."И" Акк. и РПД

ANL A,@Ri

0101011i

1

1

1

A ← A & (dir); Лог."И" Акк. и РПД

ANL A,dir

01010101

3

2

1

A←A & #DAT; Лог."И" Акк. и #DAT

ANL A,#DAT

01010100

2

2

1

(dir) ← (dir) & A; Лог."И" РПД и Акк

ANL dir, A

01010010

3

2

1

(dir) ← (dir) & #DAT ;

ANL dir,#DAT

01010011

7

3

2

A ← A \/ Rn; Лог."ИЛИ" Акк. и РОНа

ORL A,Rn

01001rrr

1

1

1

A ← A \/ (Ri); Лог."ИЛИ" Акк. и РПД

ORL A,@Ri

0100011i

1

1

1

A ← A \/ (dir);Лог."ИЛИ" Акк. и РПД

ORL A, dir

01000101

3

2

1

A ← A \/ #DAT;

ORL A,#DAT

01000100

2

2

1

(dir) ← (dir) \/ A;

ORL dir, A

01000010

3

2

1

(dir) ← (dir) \/ #DAT;

ORL dir,#DAT

01000011

7

3

2

A←A (+) Rn;"Искл.ИЛИ" Акк. и РОН

XRL A, Rn

01101rrr

1

1

1

A ← A (+) (Ri);

XRL A, @Ri

0110011i

1

1

1

A ← A (+) (dir);

XRL A, dir

01100101

3

1

A ← A (+) #DAT;

XRL A,#DAT

01100100

2

2

1

(dir) ← (dir) (+) A;

XRL dir,A

01100010

3

2

1

(dir) ← (dir) (+) #DAT;

XRL dir,#DAT

01100011

7

3

2

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

CLR A

11100100

1

1

1

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

CPL A

11110100

1

1

1

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

RL A

00100011

1

1

1

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

RLC A

00110011

1

1

1

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

RR A

00000011

1

1

1

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

RRC A

00010011

1

1

1


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

Комментарии

Мнемокод

К О П

ТК

Б

МЦ

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

CLR C

11000011

1

1

1

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

SETB C

11010011

1

1

1

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

CPL C

10110011

1

1

1

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

CLR bit

11000010

4

2

1

(bit) ← 1; Установка "бита"

SETB bit

11010010

4

2

1

(bit) ← ~(bit); Инверсия "бита"

CPL bit

10110010

4

2

1

C ← C & (bit); Лог."И" С и "бита"

ANL C,bit

10000010

4

2

2

C ← C & ~(bit); "И" С и инверс.бита

ANL C,/bit

10110000

4

2

2

C ← C \/ (bit); Лог."ИЛИ" С и бита

ORL C,bit

01110010

4

2

2

C ← C \/ ~(bit); Лог."ИЛИ" С и инверсии прямоадресуемого бита

ORL C,/bit

10100000

4

2

2

C ← (bit); Пересылка из прямоад-  ресуемого бита во флаг С

MOV C,bit

10100010

4

2

1

(bit) ← C; Пересылка из С в "бит"

MOV bit,C

10010010

4

2

2


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

КомментарииМнемокодК О ПТКБМЦ






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

JZ rel

01100000

5

2

2

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

JNZ rel

01110000

5

2

2

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

JC rel

01000000

5

2

2

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

JNC rel

01010000

5

2

2

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

JB bit,rel

00100000

11

3

2

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

JNB bit,rel

00110000

11

3

2

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

JBC bit,rel

00010000

11

3

2

PC ← PC + 3 + rel, если A<>#DAT, C ← 1, если A < #DAT, С ← 0, если A > #DAT

CJNE  A, #DAT, rel

10110100

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

1011011i

10

3

2

PC ← PC + 3 + rel, если A<>(dir), C ← 1, если A < (dir), С ← 0, если A > (dir)

CJNE  A, dir, rel

10110101

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

11010101

8

3

2

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

Комментарии

Мнемокод

К О П

ТК

Б

МЦ

PC[0_15]←16ADR; Длинный переход

LJMP 16ADR

00000010

12

3

2

PC[0_11] ← 11ADR; Переход  внутри страницы в 2 Кбайта

AJMP 11ADR

sss00001

6

2

2

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

SJMP rel

10000000

5

2

2

PC ← A + DPTR; Косвенный  относительный переход

JMP @A+DPTR

01110011

1

1

2

(SP) ← PC + 3; PC[0_15] ← 16ADR; Длинный вызов подпрограммы

LCALL 16ADR

00010010

12

3

2

(SP) ← PC + 2; PC[0_10] ← 11ADR; Вызов подпр. внутри страницы в 2Кб

ACALL 11ADR

sss10001

6

2

2

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

RET

00100010

1

1

2

PC ← (SP); Возврат из подпро- граммы обработки прерываний

RETI

00110010

1

1

2

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

NOP

00000000

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


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 - разрешение приема,= 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 должно быть запрещено).- старший бит регистра управления мощностью 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 - бит включения режима холостого хода.


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!