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

Бродин В.Б., Калинин А.Б. Схемы на микроконтроллерах и БИС программируемой логики, 2002

.pdf
Скачиваний:
260
Добавлен:
11.03.2016
Размер:
9.1 Mб
Скачать

ГЛАВА 2. АРХИТЕКТУРА MCS-51

59

 

к внешней памяти программ, при ЕА = 1 обращение по одному из этих адресов приводит к чтению кода из внутренней памяти.

XTAL1. Вход инвертирующего усилителя для синхрогенератора. XTAL2. Выход инвертирующего усилителя для синхрогенератора. Vcc. Напряжение питания (+5 В).

Vss. Земля.

2 .3 . Организация памяти и программно доступные ресурсы

В архитектуре MCS-51 память программ и память данных разделены (гарвардская архитектура). Каждая из них имеет размер 64 Кбайта, выбор одной из двух матриц памяти осуществляется сигналами PSEN, RD#, WR#. Организация памяти в микроконтроллерах семейства 8051 иллюст­ рируется рис. 2.3.

Память программ может быть целиком внешней (сигнал ЕА = 0), либо при обращении по младшим 4 К адресов код извлекается из ячеек внут­ ренней памяти микроконтроллера, а содержимое старших 60 К берется из внешней памяти системы (сигнал ЕА = 1).

FFFF:

FFFF:

Внешняя

1000:

0FFF:

 

FF:

Регистры

 

Внутренняя

Внешняя

специальных

 

EA# = 1

EA# = 0

функций

 

(SFR)

 

 

80:

 

 

7F:

Младшие 128

 

 

 

 

 

 

ячеек ОЗУ

 

 

 

(прямая адре­

 

0000:

00:

сация)

0000:

 

Память программ

Внутренняя память

Внешняя память

 

 

данных________

данных_____

Рис. 2.3. Организация памяти в архитектуре MCS-51

60 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ

Микроконтроллеры 87С51 имеют 3 бита секретности, предназначен­ ных для защиты внутренней памяти программ от доступа извне. При уста­ новленных битах секретности запрещается не только чтение внутренней памяти извне, но и ее допрограммирование. Механизмы программирова­ ния и верификации внутренней памяти программ в данной книге рассмат­ риваться не будут, поскольку в продаже имеются программаторы различ­ ных типов и стоимости. Возможности универсального профессионального программатора KROM описаны в главе 6.

Память данных делится на внешнюю и внутреннюю, каждая из них имеет свое пространство адресов. В архитектуре MCS-51 пространство ад­ ресов внутренней памяти данных объединяет все внутренние программно доступные ресурсы. Это пространство размером 256 байт в свою очередь делится на пространство адресов внутреннего ОЗУ (размером 128 байт) и пространство адресов регистров специальных функций.

Область внутреннего ОЗУ изображена на рис. 2.4, ячейки области за­ нимают младшие адреса внутренней памяти данных с ООН по 7FH.

Шестнадцатеричный

 

 

 

 

 

 

Десятичный

адрес

|

 

 

 

 

 

 

 

адрес

7R

 

 

 

 

 

 

I

127

2F:

7F

7D

7C

79

78

47

2Е:

77

76

75

74

73

72

71

70

46

2D:

6F

6D

6C

69

68

45

2C:

67

66

65

64

63

62

61

60

44

2В:

5F

5D

5C

59

58

43

2А:

57

56

55

54

53

52

51

50

42

29:

4F

4D

49

48

41

28:

47

46

45

44

43

42

41

40

40

27:

3F

ЗЕ

3D

зс

ЗВ

ЗА

39

38

39

26:

37

36

35

34

33

32

31

30

38

25:

2F

2D

2C

29

28

37

24:

27

26

25

24

23

22

21

20

36

23:

1F

1D

1C

19

18

35

22:

17

16

15

14

13

12

11

10

34

21:

0F

0D

ос

ОВ

09

08

33

20:

07

06

05

04

03

02

01

00

32

1F:

R7

 

 

 

БАНКЗ

 

 

 

31

18:

R0

 

 

 

 

 

 

24

 

 

 

 

 

 

 

17:

R7

 

 

 

БАНК2

 

 

 

23

10:

R0

 

 

 

 

 

 

16

 

 

 

 

 

 

 

0F:

R7

 

 

 

 

 

 

 

15

08:

I

 

 

 

БАНК1

 

 

 

 

R0

 

 

 

 

 

 

 

8

07:

R7

 

 

 

БАНК0

 

 

 

7

0 0:

R0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.4. Структура внутреннего ОЗУ данных

ГЛАВА 2 АРХИТЕКТУРА MCS-51

61

В этой области памяти выделяются два особых фрагмента:

младшие 32 адреса занимают четыре регистровых банка, каждый из которых содержит по восемь регистров общего назначения R0 - R7. Текущий банк определяется значением битов RSO, RS1 регистра PSW. Таким образом, младшие 32 ячейки ОЗУ, кроме адресов, имеют име­ на;

ячейки с адресами в диапазоне 32 - 48 имеют прямо адресуемые биты, адреса битов этой части ОЗУ находятся в диапазоне ООН - 7FH.

На рис. 2.5 изображена область регистров специальных функций. В нее включены все программно доступные регистры (управления и данных) внутренних блоков ввода/вывода. Эта область формально занимает стар­ шие 128 байт внутренней памяти данных, но обращение должно осуществ­ ляться по определенным адресам ячеек или отдельных битов. Обращение по промежуточным адресам приведет к ошибочному результату.

Шестнадцатеричный

 

 

 

 

 

Десятичный

И м я

После

адрес

 

 

 

 

 

 

 

 

адрес реги стра

сброса

OFF

 

 

 

 

 

 

 

 

 

 

 

0F0

F7

F6

F5

F4

F3

F2

F1

F0

240

В

ООН

0Е0

Е7

Е6

Е5

Е4

ЕЗ

Е2

Е1

Е0

224

АСС

ООН

 

CY

АС

FO

RS1

RSO

OV

 

р

 

 

 

0D0:

D7

D6

D5

D4

D3

D2

 

D0

208

PSW

ООН

 

 

 

РТ2

PS

РТ1

РХ1

РТО

РХО

 

 

ххоооооов

0В8:

 

 

BD

ВС

вв

ВА

В9

В8

184

IP

0В0: В7

В6

В5

В4

вз

В2

В1

ВО

176

РЗ

FFH

 

ЕА

 

ЕТ2

ES

ЕТ1

ЕХ1

ЕТО

ЕХО

 

 

охоооооов

0А8:

AF

 

AD

АС

AB

АА

А9

А8

168

IE

ОАО:

А7

А6

А5

А4

АЗ

А2

А1

АО

160

Р2

FFH

99

SMO

SM1

SM2

REN

TB8

RB8

TI

RI

153

SBUF

ххххххххв

 

 

 

 

98

9F

9D

99

98

152

SCON

ООН

90

97

96

95

94

93

92

91

90

144

Р1

FFH

8D

 

 

 

 

 

 

 

 

141

ТН1

ООН

 

 

 

 

 

 

 

 

140

ТН0

ООН

 

 

 

 

 

 

 

 

139

TL1

ООН

 

 

 

 

 

 

 

 

138

TLO

ООН

89

TF1

TR1

TF0

TR0

IE1

IT1

IE0

ITO

137

TMOD

ООН

 

 

 

ООН

88

8F

8D

89

88

136

TCON

87

 

 

 

 

 

 

 

 

135

PCON

ооххоооов

83

 

 

 

 

 

 

 

 

131

DPH

ООН

82

 

 

 

 

 

 

 

 

130

DPL

ООН

81

 

 

 

 

 

 

 

 

129

SP

07Н

80

87

86

85

84

83

82

81

80

128

Р0

FFH

Рис. 2.5. Регистры специальных функций

62

СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ

Видно, что все регистры имеют как символические имена, так и адреса в качестве ячеек внутренней памяти. Часть регистров содержит прямо адре­ суемые биты. Адреса битов находятся в диапазоне 80Н - F7H.

Назначение регистров специальных функций следующее:

Имя регистра

Назначение

АСС

Аккумулятор, основной операционный регистр

ВДополнительный регистр для операций умножения и деления; в

других командах может рассматриваться как обычный РОН

PSW

Регистр, хранящий слово состояния процессора

IP

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

РЗ

Регистр порта РЗ

IE

Регистр разрешения прерываний

Р2

Регистр порта Р2

SBUF

Регистр данных последовательного порта

SCON

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

Р1

Регистр порта Р1

ТН1

Старший регистр таймера/счетчика 1

тн о

Старший регистр таймера/счетчика 0

TL1

Младший регистр таймера/счетчика 0

TLO

Младший регистр таймера/счетчика 0

TMOD

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

TCON

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

PCON

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

SP

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

DPH, DPL

Указатель данных DPTR состоит из регистра старшего байта DPH

 

и регистра младшего байта DPL, содержит 16-разрядный адрес

 

для обращения к внешней памяти данных

РО

Регистр порта РО

Формат всех регистров специальных функций будет рассмотрен в раз­ делах, посвященных описанию функций отдельных блоков ввода/вывода и системы прерываний.

2 .4 . Синхронизация, тактовая сетка, циклы команд

Синхронизация микроконтроллеров MCS-51 осуществляется с исполь­ зованием внутреннего инвертирующего усилителя, который превращается в синхрогенератор посредством подключения к выводам XTAL1 и XTAL2 внешнего кварцевого резонатора. Вывод XTAL1 является входом, а вывод XTAL2 выходом внутреннего усилителя. Для синхронизации может быть

ГЛАВА 2. АРХИТЕКТУРА MCS-51

63

 

Микроконтроллер

семейства

MCS-51

HMOS или CHMOS

XTAL2

Кварц или керамический г-™- резонатор

а)

Микроконтроллер

 

MCS-51

 

Микроконтроллер

 

 

MCS-51

 

HMOS

 

 

 

CHMOS

 

 

 

Внешний —

XTAL2

 

XTAL2

 

 

синхросигнал

 

 

 

 

 

Внеимий —

XTAL1

 

XTAL1

синхросигнал

Vss

 

 

 

 

 

 

Vss

 

 

 

6)

 

 

Рис. 2.6. Синхронизация: использование внутреннего генератора (а); использование внешнего генератора для нМОП микросхем (6); использование внешнего генератора для кМОП микросхем (в)

Внутри микроконтроллера частота внешнего синхросигнала делится на 2. Период внутреннего синхросигнала определяет длительность интер­ вала времени, который фирма Intel называет состоянием Si («state»). Этот интервал состоит из двух фаз Р1 и Р2. Более крупной единицей времени является машинный цикл, включающий шесть состояний SI - S6. По дли­ тельности он равен 12 периодам внешнего синхросигнала. Машинный цикл служит в основном для целей внутреннего микропрограммного управле­ ния. При описании последовательности сигналов или событий фазам в машинном цикле присваивают номера с S1P1 по S6P2. Цикл выполнения

64

СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ

каждой команды состоит из одного, двух или четырех машинных циклов. Протоколы обмена микроконтроллеров семейства MCS-51 по магистрали реализованы в виде комбинаций следующих трех типов магистральных циклов (рис. 2.7):

ввод кода команды из внешней памяти программ без обращения к внешней памяти данных;

чтение из внешней памяти данных;

запись во внешнюю память данных.

Первый тип магистрального цикла (рис. 2.7а) является основным, имеет длительность 6 состояний (12 периодов XTAL). Он характеризуется выработкой двух импульсов сигнала ALE, который служит для промежу­ точной фиксации младшего байта адреса при обращении к внешней памяти (из порта РО в регистр-защелку). В этом типе магистрального цикла сиг­ нал ALE стробирует адрес памяти программ, источником которого являет­ ся счетчик команд (регистры РСН и PCL). Сигнал PSEN# является сиг­ налом чтения кода из внешней памяти программ. В этом типе магистраль­ ного цикла он также вырабатывается дважды. Оба сигнала становятся ак­ тивными первый раз на фазе S1P2, а второй раз на фазе S4P2. Во время второй выборки производится чтение следующего байта кода. Если этот байт в данной команде не нужен, он игнорируется, а счетчик команд не инкрементируется. Этот тип магистрального цикла является основным, поскольку отсутствие обращения к внешней памяти данных позволяет реа­ лизовать с его помощью самые короткие команды (рис. 2.8а,б) длительно­ стью в один машинный цикл (6 тактов, 12 периодов Fosc). Поскольку сиг­ нал ALE вырабатывается постоянно, с частотой Fosc/ б, он может быть ис­ пользован для целей внешней синхронизации.

Второй тип магистрального цикла (рис. 2.76) имеет длительность 12 состояний и характеризуется тем, что второй сигнал ALE на фазе S1P2 второго машинного цикла не вырабатывается. Сигнал PSEN# остается пас­ сивным с фазы S4P2 первого машинного цикла до фазы S6P1 следующего цикла, запрещая чтение байта кода. Второй импульс сигнала ALE строби­ рует фиксацию адреса памяти данных, источником которого в микрокон­ троллере является регистр DPTR (DPH и DPL) или регистр Ri (при кос­ венной адресации). Во втором случае содержимое регистра выдается через порт РО, а старшие восемь разрядов определяются значением в регистре порта РО. Далее, начиная с фазы S1P1 первого цикла до фазы S4P1 вто­ рого цикла, становится активным сигнал RD#. Он стробирует ввод дан­ ных через порт РО. Последующие импульсы сигналов ALE и PSEN# вво­ дят код следующего байта команды.

Третий тип магистрального цикла (рис. 2.7в) имеет длительность 12 состояний и в основном аналогичен второму типу. Отличие заключаются в том, что активным становится сигнал разрешения записи WR#.

ГЛАВА 2. АРХИТЕКТУРА MCS-51

65

 

S1

S2

S3

Р1 | Р2

Р1 | Р2

Р1 | Р2

XTAL

 

 

ALE

 

 

PSEN#

 

 

S4

OJ

S5

см

S6

см

S1

К

К

см CL

 

О.

 

о.

 

О.

 

 

S2

Р1 | Р2

Р2

Вывод

Вывод

Вывод

 

РСН

РСН

РСН

а) Выборка из внешней памяти программ

S4

см

CL

S5

а

S6

см

см

 

О.

 

о.

 

о.

XTAL

 

 

 

 

 

ALE

 

 

 

 

 

RD#

 

 

 

 

 

РО

 

 

Вывод

 

 

DPL или Ri

P2

Вывод РСН или регистра Р2

S1

К

S2

S3

К

S4

S5

Р1 | Р2

.см

.см

см

см CL

 

 

О

 

О

 

О.

 

 

 

i

Выбранныеданные

Высокий импеданс

i

Вывод

|

[Высокий импеданс

 

 

 

PCL

Вывод DPH или

 

 

ВыводРСНили

регистра Р2

 

 

регистраР2

б) Чтение из внешней памяти данных

66

СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ

S4

 

 

S5

 

S6

LC

LC

LC

см

см

см

XTAL

 

 

 

 

 

ALE

 

 

 

 

 

W D#

 

 

 

 

 

РО

 

 

Вывод

 

 

DPI-или Ri

Р2

ВыводРСН или регистра Р2

S1

 

S2

S3

S4

 

S5

Р1 | Р2

CL

см .О

Р1 | Р2

Р1 | Р2

CL

см .О

 

Если память

 

Вывод

программ внешняяВывод X' Вывод

данных

PCL

PCL

Вывод DPH или

 

ВыводРСНили

регистра Р2

 

регистра Р2

в) Запись во внешнюю память данных

Рис. 2.7. Типы магистральных циклов

Особенностью архитектуры MCS-51 является то, что циклы всех ко­ манд формируются из циклов магистрали и имеют строго определенную длительность. Примеры циклов ряда характерных команд приведены на рис. 2.8.

Самыми короткими по времени выполнения являются однобайтные и двухбайтные команды, выполняемые за один машинный цикл (рис. 2.8.а,б). Это команды с быстрыми операциями, не использующие обращений к внешней памяти данных. В однобайтных командах (рис. 2.8а) информация хранится в ячейках внутренней памяти данных или регистрах. По второму импульсу сигнала ALE читается код операции следующей команды, который игнорируется. В начале следующей коман­ ды он читается вновь. В двухбайтных командах (рис. 2.86) во втором бай­ те хранятся либо данные, либо адрес внутренней ячейки памяти. В этом случае второй импульс ALE стробирует ввод второго байта текущей ко­ манды.

Еще одну группу характерных команд составляют однобайтные ко­ манды длительностью два машинных цикла (рис. 2.8в). Это команды с медленными операциями, не использующие обращений к внешней памяти данных. Такими операциями являются, например, наращивание указателя данных DPTR, операции умножения и деления, возврат из подпрограммы. В командах такого типа после чтения кода операции по первому сигналу

ГЛАВА 2. АРХИТЕКТУРА MCS-51

67

ALE три раза подряд выбирается один и тот же следующий байт кода, ко­ торый игнорируется.

I

S1

I

S2

I

S3

I

S4

I

S5

I

S6

I

S1

I

S2

I

S3

I

S4

I S5

I

S6 I

S1

I

| Р 1 | Р 2 | Р 1 | Р 2 | Р 1 | Р 2 | Р 1 | Р 2 | Р 1 | Р 2 | Р 1 | Р 2 | Р 1 | Р 2 | Р 1 | Р 2 | Р 1 | Р 2 | Р 1 | Р 2 | Р 1 | Р 2 | Р 1 | Р 2 | Р 1 |

Р2

|

ALE

 

I----------- I----- 1

 

 

 

I

 

1

 

 

 

I----- 1

 

 

I-------

_J

 

 

 

 

 

 

 

 

 

 

Чтение КОП

 

 

 

Чтение следующего

Чтение

 

 

 

 

 

 

 

 

 

 

 

^

 

 

 

 

КОП (игнорируется)

следующего КОП

 

 

 

 

 

 

 

 

 

I

S1

j

S2

I

S3

I

S4

I

S5

I

S6

I ’

S i ' "

 

 

 

 

 

 

 

 

 

 

а)

Команды 1

байт, 1

цикл, например INC А

 

 

 

 

 

 

 

 

 

 

 

 

 

Ч т ^ и е

КОП

 

 

Чтение второго байта

Чтение следующего КОП

 

 

 

 

 

I

S1

I

S2

I

S3

I

S4

I

S5

I

S6

1 '

S i l l

 

 

 

 

 

 

 

 

 

 

б) Команды 2 байта,

1 цикл, например ADD A,#data

 

 

 

 

 

 

 

 

 

 

 

Чтение КОП

 

 

Чтение следующего

Чтение следующего

 

 

Чтение

 

 

Чтение

 

 

 

 

 

 

 

 

 

КОП (игнорируется)

КОП (игнорируется)

 

следующего КОП

следующего

 

 

1

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

(игнорируется)

 

КОП повторно

 

 

 

 

 

 

 

 

 

 

 

 

1.........................1

 

 

 

1.......

1

S1

|

S2

I

S3

I

S4

|

S5

|

S6

I

S1

I

S2

|

S3

I

S4

I S5

I

S6 I ____S1______

в)

Команды 1

байт, 2 цикла,

например INC DPTR

 

 

 

 

 

 

 

 

Чтение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Чтение КОП

 

 

Чтение следующего

Нет выборки

 

 

 

Нет выборки

следующего

 

 

 

 

 

 

 

 

КОП (игнорируется)

нет ALE

 

 

 

 

нет ALE

 

КОП повторно

 

Г

S1

|

S2

|

S3

|

S4

I

S5

|

S6

I

S1

|

S2

|

S3

I

S4

| S5

|

S6 Г "

~S~1

 

 

 

 

 

 

 

 

 

I

Адрес

|

 

 

Данные

 

 

 

I

 

 

 

 

 

 

 

 

 

 

 

 

 

|

Обращение к внешней памяти данных |

 

 

 

 

 

г) Команда MOVX (1

байт, 2 цикла)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.8. Примеры циклов команд

Короткими, но медленными являются команды типа MOVX с обраще­ нием к внешней памяти данных. Они однобайтные, но выполняются за два машинных цикла (рис. 2.8г). После выборки кода операции команды по первому импульсу ALE следующий импульс выбирает следующий байт кода, который игнорируется. Далее импульс ALE стробирует адрес внеш­ ней памяти данных, по которому производится операция чтения или запи­ си. По последнему импульсу ALE вводится следующий байт кода.

2 .5 . Методы адресации и система команд

Система команд микроконтроллеров MCS-51 ориентирована на орга­ низацию гибкого ввода/ вывода данных через параллельные и последова­ тельный порты, первичную обработку информации. Особое внимание уде­ лено операциям с битами и передаче управления по их значению. Коман­ ды, выполняющие такие операции, составляют многочисленную группу и

68 СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ

образуют вместе с соответствующими аппаратными механизмами так назы­ ваемый «булев процессор» (Boolean proceccor по терминологии фирмы Intel) в составе архитектуры MCS-51.

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

Разработчик изделия при создании рабочей программы работает с ка­ кой-либо кросс-системой, имеющей свою версию языка программирования. Подробнее о системах программирования будет сказано в главе 6. Ниже изложены основные правила, которые поддерживаются во всех системах программирования на языке ассемблер.

Каждая команда сообщает процессору выполняемую операцию и мето­ ды доступа к операндам. Командная строка языка ассемблер содержит метку (символический адрес), мнемонику (символическое имя) команды, операнды, комментарий. Имя команды однозначно связано с выполняемой ею операцией (действием). В командах микроконтроллеров MCS-51 могут обрабатываться до двух операндов. Первым при этом указывается регистрприемник, вторым регистр-источник. Многие команды по умолчанию ис­ пользуют аккумулятор как один из источников операнда и /или как при­ емник результата.

Методы адресации представляют собой набор механизмов доступа к операндам. Одни из них просты и поэтому приводят к компактному фор­ мату команды и быстрому доступу к операнду, но объем доступных с их помощью ресурсов ограничен. Другие методы адресации позволяют опери­ ровать со всеми имеющимися в системе ресурсами, но команда получается длинной, на ее ввод и выполнение тратится много времени. Набор методов адресации в каждой системе команд является компромиссным сочетанием известных механизмов адресации, выбранным проектировщиками архитек­ туры исходя из набора решаемых задач. При этом для процессоров с ар­ хитектурой CISC (complete instruction set computer), к которой принад­ лежит MCS-51, большую роль имеет удобство работы программиста.

Команды микроконтроллеров семейства MCS-51 могут быть одно-, двух- и трехбайтными. Используется четыре основных метода адресации.

• Регистровая адресация. Операнд находится в одном из регистров об­ щего назначения R0-R7 банка, номер которого определяется разрядами RSO, RS1 регистра PSW. Номер регистра определяется тремя младшими битами байта кода операции (КОП - первый байт команды). Регистровая адресация позволяет в одном байте указать код операции и адрес операн­ да. Поскольку операнд находится во внутренней ячейке, не требуется цик­

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]