- •Содержание
- •Введение
- •1 Разработка функциональной схемы системы
- •Описание принципа работы объекта
- •1.2 Функциональная схема микропроцессорной системы
- •2 Разработка аппаратной части системы
- •2.1 Краткое описание микропроцессорного комплекта
- •2.2 Организация памяти микропроцессорной системы Распределение памяти контроллера приведено на рисунке 4.
- •2.3 Расчет и выбор элементов сопряжения
- •2.3.1 Выбор терморезистора и элементов схемы сопряжения его с ацп.
- •2.3.2 Выбор ацп
- •2.3.3 Выбор индикатора и элементов сопряжения с ним
- •2.3.4 Расчет и выбор кнопок
- •2.3.5 Выбор конденсаторов
- •2.4 Описание схемы электрической принципиальной
- •3 Разработка программного обеспечения системы
- •3.1 Краткое описание системы команд микроконтроллера
- •Группа команд арифметических операций:
- •3.2 Описание общего алгоритма работы системы
- •3.3 Описание алгоритма решения задачи
- •Заключение
- •Список использованной литературы
2.2 Организация памяти микропроцессорной системы Распределение памяти контроллера приведено на рисунке 4.
МК семейства MCS51 имеют внешний выводEA#, с помощью которого можно запретить работу внутренней памяти программ, для чего необходимо подать на выводEA# “0”. При этом внутренняя память программ отключается и, начиная снулевого адреса, все обращения происходят к внешней памяти программ с формированием сигнала PSEN#. В случае, если EA#=1, работают и внутренняя и внешняя память программ. Для МК, не имеющих внутренней памяти программ, для нормальной работы всегда необходимо задаватьEA#=0.
Таким образом, доступ к внешней памяти программ осуществляется в двух случаях:
при действии сигнала EA#=0 независимо от адреса обращения,
в любом случае, если программный счетчик (PC) содержит число, большее, чем 0FFFh.
Если центральный процессор осуществляет доступ к внешней памяти программ, сигнал PSEN# вырабатывается дважды во время каждого машинного цикла, (исключение составляет команда MOVC), независимо от того, необходим или нет выбираемый байт для текущей команды. При выборке из внешней памяти программ всегда используется 16-разрядный адрес, младший байт которого выдается через порт Р0, а старший байт - через порт Р2 МК. Байт из внешней памяти программ вводится в МК через порт Р0, который в этом случае используется как шина адреса/данных в режиме мультиплексирования.
Память данных состоит из внешней памяти данных и внутренней памяти данных. Каждая из них имеет свое пространство адресов, так как доступ к ним осуществляется с помощью разных команд.
Внешняя память данных: для работы с внешней памятью данных существуют специальные команды MOVX, которые не влияют на внутреннюю память данных МК. Таким образом, в системе могут одновременно присутствовать внутренняя память данных с адресами 00h-0FFh и внешняя память данных с адресами 0000h-0FFFFh. Обращение к ячейкам внешней памяти данных осуществляется только с использованием косвенной адресации по регистрам R0 и R1 активного банка регистров внутреннего ОЗУ (команды типа MOVX @Ri) или по регистру специальных функций DPTR (команды типа MOVX @DPTR). Соответственно в первом случае будет формироваться 8-разрядный, а во втором случае 16-разрядный адреса внешней памяти данных.
При обращениях к внешней памяти данных адрес выводится через порт Р0 (младший байт) и порт Р2 (старший байт) МК. Обмен байтом данных (запись и чтение) производится через порт Р0 МК, т. е. порт Р0 используется как шина адреса/данных в режиме мультиплексирования.
Считывание данных из внешней памяти данных в МК производится с помощью выходного сигнала МК RD#, а запись данных из МК во внешнюю память данных с помощью выходного сигнала МК WR#.
Внутренняя память данных: в архитектуре MCS-51 пространство адресов внутренней памяти данных объединяет все внутренние программно доступные ресурсы. Это пространство размером 256 байт в свою очередь делится на:
пространство адресов внутреннего ОЗУ с адресами 00h-7Fh (размером 128 байт);
пространство адресов регистров специальных функций, занимающее адреса 80h-0FFh.
Физически внутреннее ОЗУ данных и область регистров специальных функций являются отдельными устройствами.
Все ячейки внутреннего ОЗУ данных могут адресоваться с использованием прямой и косвенной адресации.
Область внутреннего ОЗУ. В этой области памяти выделяются два особых фрагмента:
младшие 32 адреса занимают четыре регистровых банка (Банк0-БанкЗ на рис.5), каждый из которых содержит по восемь регистров общего назначения R0-R7. Текущий банк определяется значением разрядовRS0,RS1 регистраPSW. Команды программы могут обращаться к регистрам, используя их имена R0-R7. Таким образом, младшие 32 ячейки этой части ОЗУ, кроме адресов, имеют имена. Наличие такого механизма работы с ячейками ОЗУ позволяет экономить память программ, т. к. команды, работающие с регистрами R0-R7, короче команд, использующих прямую адресацию;
следующие после банков регистров внутреннего ОЗУ данных 16 ячеек (адреса 20h-2Fh) образуют область ячеек, к которым возможна поразрядная адресация. Набор команд МК семейства MCS-51 содержит значительное количество инструкций (команд), позволяющих работать с отдельными разрядами (битами), используя при этом прямую адресацию. 128 разрядов (бит), составляющих рассматриваемую область внутреннего ОЗУ данных, имеют адреса 00h-7Fh и предназначены для работы с такими инструкциями. Разрядная (битовая) адресация ОЗУ показана на рис. 5, где в квадратах, символизирующих разряды (биты), указаны их адреса.
-
Адрес, h
D7
D6
D5
D4
D3
D2
D1
D0
Адрес, d
7Fh:
127
:
:
:
:
:
:
:
:
:
:
2Fh:
7F
7E
7D
7C
7B
7A
79
78
47
2E:
77
76
75
74
73
72
71
70
46
2D:
6F
6E
6D
6C
6B
6A
69
68
45
2C:
67
66
65
64
63
62
61
60
44
2B:
5F
5E
5D
5C
5B
5A
59
58
43
2A:
57
56
55
54
53
52
51
50
42
29:
4F
4E
4D
4C
4B
4A
49
48
41
28:
47
46
45
44
43
42
41
40
40
27:
3F
3E
3D
3C
3B
3A
39
38
39
26:
37
36
35
34
33
32
31
30
38
25:
2F
2E
2D
2C
2B
2A
29
28
37
24:
27
26
25
24
232
22
21
20
36
23:
1F
1E
1D
1C
1B
1A
19
18
35
22
17
16
15
14
13
12
11
10
34
21:
0F
0E
0D
0C
0B
0A
09
08
33
20:
07
06
05
04
03
02
01
00
32
1F:
:
18:
R7
БАНК 3
R0
31
:
24
17:
:
10:
R7
БАНК 2
R0
23
:
16
0F:
:
08:
R7
БАНК 1
R0
15
:
8
07:
:
00:
R7
БАНК 0
R0
7
:
0
Рис. 5. Разрядная (битовая) адресация ОЗУ
Обращение к внутреннему ОЗУ данных всегда осуществляется с использованием 8-разядного адреса.
На рис. 6 изображена область регистров специальных функций. В нее включены все программно доступные регистры (управления и данных):регистры-фиксаторы портов, регистры таймеров/счетчиков, регистры управления и т.п.Эти регистры допускают только прямую адресацию.
Адрес ячейки |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Имя регистра |
Исходное значение |
0F0 |
F7 |
F6 |
F5 |
F4 |
F3 |
F2 |
F1 |
F0 |
B |
00h |
0E0 |
E7 |
E6 |
E5 |
E4 |
E3 |
E2 |
E1 |
E0 |
ACC |
00h |
0D0 |
CY D7 |
AC D6 |
F0 D5 |
RS1 D4 |
RS0 D3 |
OV D2 |
- |
P D0 |
PSW |
00h |
0B8 |
- |
- |
PT2 BD |
PS BC |
PT1 BB |
PX1 BA |
PT0 B9 |
PX0 B8 |
IP |
xx000000b |
0B0 |
B7 |
B6 |
B5 |
B4 |
B3 |
B2 |
B1 |
B0 |
P3 |
0FFh |
0A8 |
EA AF |
- |
ET2 AD |
ES AC |
ET1 AB |
EX1 AA |
ET0 A9 |
EX0 A8 |
IE |
0x000000b |
0A0 |
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
P2 |
0FFh |
99 |
|
|
|
|
|
|
|
|
SBUF |
xxxxxxxxb |
98 |
SM0 9F |
SM1 9E |
SM2 9D |
REN 9C |
TB8 9B |
RB8 9A |
T1 99 |
R1 99 |
SCON |
00h |
90 |
97 |
96 |
95 |
94 |
93 |
92 |
91 |
90 |
P1 |
0FFh |
8D |
|
|
|
|
|
|
|
|
TH1 |
00h |
8C |
|
|
|
|
|
|
|
|
TH0 |
00h |
8B |
|
|
|
|
|
|
|
|
TL1 |
00h |
8A |
|
|
|
|
|
|
|
|
TL0 |
00h |
89 |
|
|
|
|
|
|
|
|
TMOD |
00h |
88 |
TF1 8F |
TR1 8E |
TF0 8D |
TR0 8C |
IE1 8B |
IT1 8A |
IE0 89 |
IT0 88 |
TCON |
00h |
87 |
|
|
|
|
|
|
|
|
PCON |
00xx0000b |
83 |
|
|
|
|
|
|
|
|
DPH |
00h |
82 |
|
|
|
|
|
|
|
|
DPL |
00h |
81 |
|
|
|
|
|
|
|
|
SP |
07h |
80 |
87 |
86 |
85 |
84 |
83 |
82 |
81 |
80 |
P0 |
0FFh |
Рис. 6. Регистры специальных функций
Эта область формально занимает старшие 128 байт внутренней памяти данных, но обращение должно осуществляться по определенным адресам ячеек или отдельных разрядов. Обращение по промежуточным адресам приведет к ошибочному результату.
Видно, что все регистры имеют как символические имена, так и адреса в качестве ячеек внутренней памяти. Часть регистров содержит прямо адресуемые разряды. Адреса разрядов находятся в диапазоне 80Н - 0F7H. Назначение регистров специальных функций следующее:
Имя регистра |
Назначение |
АСС |
Аккумулятор, основной операционный регистр |
В |
Дополнительный регистр для операций умножения и деления; в других командах может рассматриваться как обычный РОН |
PSW |
Регистр, хранящий слово состояния программы |
IP |
Регистр приоритетов прерываний |
РЗ |
Регистр порта РЗ |
IE |
Регистр разрешения прерываний |
Р2 |
Регистр порта Р2 |
SBUF |
Регистр данных последовательного порта |
SCON |
Регистр управления последовательного порта |
Р1 |
Регистр порта Р1 |
ТН1 |
Старший регистр таймера/счетчика 1 |
ТН0 |
Старший регистр таймера/счетчика 0 |
TL1 |
Младший регистр таймера/счетчика 1 |
TL0 |
Младший регистр таймера/счетчика 0 |
TMOD |
Регистр режима таймеров/счетчиков |
TCON |
Регистр управления таймеров/счетчиков |
PCON |
Регистр управления энергопотреблением |
SP |
Регистр указателя стека |
DPH, DPL |
Указатель данных DPTR состоит из регистра старшего байта DPH и регистра младшего байта DPL, содержит 16-разрядный адрес для обращения к внешней памяти данных |
Р0 |
Регистр порта Р0 |