Д. В. Андреев Программирование микроконтроллеров mcs-51

Вид материалаУчебное пособие
2.1. Программная модель микроконтроллера 8051
Резидентная память данных
Указатель данных DPTR
Регистр PCON
Подобный материал:
1   2   3   4   5   6   7   8   9   10


что в качестве первого кандидата на модернизацию при прорыве на рынок микроконтроллеров, где господствовали такие мощные фирмы как Philips, Siemens, Intel, Motorola, Mitsubishi и др., фирма Atmel избрала микроконтроллер 8051, подтверждает исключительно высокую популярность этого кристалла.

Среди оригинальных разработок Atmel в рамках семейства MCS-51 отметим следующие (см. табл.1.4):

- 20-выводные микроконтроллеры AT89С2051/1051, открывшие дорогу семейству MCS-51 в сферу "1-долларовых" приложений;

- микроконтроллеры с каналом SPI, обеспечивающие возможность внутрисхемного программирования FLASH памяти. Эта функция может быть очень удобна в производстве, когда программирование микросхем осуществляется уже после их монтажа;

- микроконтроллер с резидентной памятью типа EEPROM, обеспечивающей хранение оперативных данных при отключенном питании микросхемы.

Фирма Dallas Semiconductor в первую очередь получила известность среди производителей семейства MCS-51 своей серией DS5000 (табл.1.4). Оригинальность микроконтроллеров этой серии заключается в том, что их резидентная память программ выполнена в виде NVRAM - оперативной памяти, энергонезависимость которой обеспечивается литиевой батарейкой, встроенной непосредственно в корпус микросхемы. Фирма дает 10-летнюю гарантию на сохранность информации в NVRAM. Микроконтроллеры серии DS5000 имеют архитектуру стандартного ядра MCS-51, поэтому их временные характеристики полностью идентичны характеристикам микроконтроллера 8051.

Отметим, что фирма Dallas Semiconductor первой попыталась усовершенствовать архитектуру семейства MCS-51. Как известно, базовая архитектура этого семейства обеспечивает не оптимальную процедуру выборки и выполнения команд. Например, команда MOV A,Rn выбирается и выполняется микроконтроллером 8051 за 6 тактов, а следующие 6 тактов происходит холостая выборка команды по следующему адресу. В результате затрачивается 12 тактов тактового генератора МК. Специалисты Dallas Semiconductor переработав архитектуру МК 8051 создали группу микроконтроллеров DS8xC300/500 (табл.1.4), в которых типовой цикл выборки и выполнения команд сократился до 4-х тактов, а холостые выборки были исключены. Таким образом, команда MOV A,Rn стала выполняться за 4 такта тактового генератора, т.е. в 3 раза быстрее. Команды МК 8051, которые не имели холостых выборок, в DS8xC300/500 "ускорились" в 1,5 раза.


Список литературы


1. Каталог инструментальных средств для микроконтроллеров/ Фитон. М., 1998.




Глава 2.




ОСОБЕННОСТИ ПРОГРАММИРОВАНИЯ


МИКРОКОНТРОЛЛЕРОВ MCS-51

2.1. Программная модель микроконтроллера 8051







0FFFH










23H  TI, RI










1BH  T/C1










13H  INT1










0BH  T/C0










03H  INT0










00H







15 8









PC




7 0













Рис.1. Структура резидентной памяти программ микроконтроллера 8051






В предыдущей главе было отмечено, что ядром семейства MCS-51 является микроконтроллер 8051 (отечественный аналог КР1816ВЕ51). В связи с этим представляется целесообразным рассмотрение особенностей программирования указанного семейства на примере именно этого микроконтроллера.

Программная модель МК 8051 содержит резидентную память данных, регистры специальных функций, резидентную память программ и программный счетчик PC.

Резидентная память программ (рис.1) имеет байтовую организацию и доступна только по чтению, при этом ее ячейки (4 Кбайт) адресуются с использованием двенадцати младших разрядов PC. Резидентная память программ может быть дополнена внешней памятью. В этом случае общий максимально допустимый объем памяти программ составит 64 К. Младшие адреса резидентной памяти программ отведены под обработку внешних прерываний , , прерываний от таймеров/счетчиков T/C0, T/C1 и прерывания от последовательного порта. В случае возникновения какого-либо из указанных прерываний происходит обращение к соответствующей ячейке резидентной памяти программ (например, при возникновении прерывания в PC записывается код 0003H).

Резидентная память данных (рис.2) состоит из 128-ми 8-разрядных ячеек с адресами 00H-7FH и может быть дополнена внешней памятью данных емкостью до 64 К. При этом пространства резидентной и внешней


Резидентная память данных







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







7FH




F7

F6

F5

F4

F3

F2

F1

F0

0F0H










E7

E6

E5

E4

E3

E2

E1

E0

0E0H




30H




D7

D6

D5

D4

D3

D2

D1

D0

0D0H

7F

7E

7D

7C

7B

7A

79

78

2FH




-

-

-

BC

BB

BA

B9

B8

0B8H

77

76

75

74

73

72

71

70

2EH




B7

B6

B5

B4

B3

B2

B1

B0

0B0H

6F

6E

6D

6C

6B

6A

69

68

2DH




AF

-

-

AC

AB

AA

A9

A8

0A8H

67

66

65

64

63

62

61

60

2CH




A7

A6

A5

A4

A3

A2

A1

A0

0A0H

5F

5E

5D

5C

5B

5A

59

58

2BH




SBUF

99H

57

56

55

54

53

52

51

50

2AH




9F

9E

9D

9C

9B

9A

99

98

98H

4F

4E

4D

4C

4B

4A

49

48

29H




97

96

95

94

93

92

91

90

90H

47

46

45

44

43

42

41

40

28H




TH1

8DH

3F

3E

3D

3C

3B

3A

39

38

27H




TH0

8CH

37

36

35

34

33

32

31

30

26H




TL1

8BH

2F

2E

2D

2C

2B

2A

29

28

25H




TL0

8AH

27

26

25

24

23

22

21

20

24H




TMOD

89H

1F

1E

1D

1C

1B

1A

19

18

23H




8F

8E

8D

8C

8B

8A

89

88

88H

17

16

15

14

13

12

11

10

22H




PCON

87H

0F

0E

0D

0C

0B

0A

09

08

21H




DPH

83H

07

06

05

04

03

02

01

00

20H




DPL

82H

R7

1FH




SP

81H










87

86

85

84

83

82

81

80

80H

R0

18H










R7

17H

























R0

10H










R7

0FH




























R0

08H







Рис.2. Структура резидентной памяти данных и регистров специальных функций микроконтроллера 8051




R7

07H

























R0

00H










памяти не пересекаются, так как доступ к ним осуществляется с помощью разных команд.

Младшие 32 байта РПД сгруппированы в 4 банка по 8 регистров R0-R7 в каждом. Отметим, что Банк0, Банк1, Банк2 и Банк3 занимают соответственно адреса 00H-07H, 08H-0FH, 10H-17H и 18H-1FH. Следующие после банков регистров 16 байт (адреса 20H-2FH) или 128 бит (адреса 00H-7FH) образуют область ячеек, к которым возможно побитовое обращение. Набор команд МК 8051 содержит значительное количество инструкций, позволяющих работать с указанными битами.

Область регистров специальных функций (РСФ) (рис.2) содержит 21 регистр, назначение которых приведено в табл.2.1. Как видно из рис.2 и табл.2.1, 11 РСФ допускают побитовое обращение (биты с адресами 80H-0F7H).


Таблица 2.1

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

Назначение

Адрес

P0*

Порт 0

80H

SP

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

81H

DPL

Младший байт указателя данных DPTR

82H

DPH

Старший байт указателя данных DPTR

83H

PCON

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

87H

TCON*

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

88H

TMOD

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

89H

TL0

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

8АH

TL1

Таймер/счетчик 1. Младший байт

8BH

TH0

Таймер/счетчик 0. Старший байт

8CH

TH1

Таймер/счетчик 1. Старший байт

8DH

P1*

Порт 1

90H

SCON*

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

98H

SBUF

Буфер последовательного порта

99H

P2*

Порт 2

0A0H

IE*

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

0A8H

P3*

Порт 3

0B0H

IP*

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

0B8H

PSW*

Регистр состояния программы

0D0H

A*

Аккумулятор

0E0H

B*

Регистр B

0F0H

* - регистры, допускающие побитовую адресацию.


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

Порты P0, P1, P2, P3 являются двунаправленными портами ввода/вывода и предназначены для обеспечения обмена информацией МК с внешними устройствами, образуя 32 линии ввода/вывода. Помимо обычного ввода/вывода указанные порты могут выполнять ряд дополнительных функций. В частности, при работе МК с внешней памятью данных или с внешней памятью программ через порты P0 и P2 выводятся соответственно младший и старший байты адреса, кроме того через порт P0 выдается (принимается) байт данных (байт данных или байт команды). При этом обмен байтом данных, ввод байта команды и вывод младшего байта адреса внешней памяти мультиплексированы во времени. Линии порта P3 имеют следующие альтернативные функции: P3.0 (P3.1) - вход (выход) последовательного порта; P3.2 (P3.3) - вход внешнего прерывания (); P3.4 (P3.5) - счетный вход 0 (1); P3.6 (P3.7) - выход сигнала записи (чтения) во внешнюю память данных (из внешней памяти данных).

Указатель стека SP (Stack Pointer) - регистр, содержимое которого инкрементируется (увеличивается на единицу) перед записью данных в стек при выполнении команд PUSH и CALL. Начальный сброс устанавливает указатель стека в 07H, а область стека в РПД начинается с адреса 08H. При необходимости, путем переопределения указателя стека область стека может быть расположена в любом месте РПД.

Указатель данных DPTR (Data PoinTeR) предназначен для хранения 16-разрядного адреса внешней памяти данных и состоит из двух программно доступных регистров DPH (Data Pointer High) и DPL (Data Pointer Low), которые могут использоваться в качестве независимых регистров общего назначения, если нет необходимости в хранении упомянутого адреса. Кроме того, DPTR служит базовым регистром при косвенной адресации в некоторых командах пересылки или перехода.

Регистр PCON (Power Control). Конструкция регистра PCON определяется технологией изготовления микроконтроллера. Для варианта изготовления по технологи n-МОП (8051) регистр PCON имеет всего один бит - SMOD, управляющий скоростью передачи последовательного порта. Для варианта изготовления по технологии КМОП (80С51) наименование и назначение разрядов регистра PCON приведены в табл.2.2. Для 8051 и 80С51 расположение и назначение разряда SMOD идентичны. Биты GF0 и GF1 пользователь может задействовать по своему усмотрению. Если в PD и IDL одновременно записана "1", то преимущество имеет PD.

Особенности режима холостого хода и режима микропотребления заключаются в том, что при первом блокируются только узлы, составляющие центральный процессор микроконтроллера (тактовый генератор продолжает функционировать), а при втором блокируется работа всех узлов. Токи потребления микроконтроллера 80С51 в режимах холостого хода и микропотребления составляют соответственно не более 4,2 мА и не более 50 мкА. Для окончания режима холостого хода имеются два способа. Активизация любого разрешенного прерывания автоматически приведет к сбросу бита IDL в "0", оканчивая режим холостого хода, при этом состояние резидентной памяти данных и РСФ остается таким же, каким оно было на момент перехода в указанный режим. После исполнения команды (инструкции), обеспечивающей выход из подпрограммы обслуживания прерывания, будет выполняться инструкция, которая следует за командой, переведшей микроконтроллер в режим холостого хода. Другим способом окончания режима холостого хода является инициализация (сброс) микроконтроллера. В этом случае сохраняется только содержимое РПД. Указанный способ используется и для окончания режима микропотребления.


Таблица 2.2

Биты

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

Назначение

7

SMOD

Бит удвоения скорости передачи через последовательный порт. При установке в "1" скорость передачи удваивается. Доступен по чтению.

6

-

Не используется.

5

-

Не используется.

4

-

Не используется.

3

GF1

Программно управляемый флаг пользователя.

2

GF0

Программно управляемый флаг пользователя.

1

PD

Бит включения режима микропотребления ("1" - включение, "0" - отмена). Доступен по чтению.

0

IDL

Бит включения режима холостого хода. ("1" - включение, "0" - отмена). Доступен по чтению.