Бродин В.Б., Калинин А.Б. Схемы на микроконтроллерах и БИС программируемой логики, 2002
.pdfГЛАВА 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 |
7Е |
7D |
7C |
7В |
7А |
79 |
78 |
47 |
2Е: |
77 |
76 |
75 |
74 |
73 |
72 |
71 |
70 |
46 |
2D: |
6F |
6Е |
6D |
6C |
6В |
6А |
69 |
68 |
45 |
2C: |
67 |
66 |
65 |
64 |
63 |
62 |
61 |
60 |
44 |
2В: |
5F |
5Е |
5D |
5C |
5В |
5А |
59 |
58 |
43 |
2А: |
57 |
56 |
55 |
54 |
53 |
52 |
51 |
50 |
42 |
29: |
4F |
4Е |
4D |
4С |
4В |
4А |
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 |
2Е |
2D |
2C |
2В |
2А |
29 |
28 |
37 |
24: |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
36 |
23: |
1F |
1Е |
1D |
1C |
1В |
1А |
19 |
18 |
35 |
22: |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
34 |
21: |
0F |
0Е |
0D |
ос |
ОВ |
0А |
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 |
9Е |
9D |
9С |
9В |
9А |
99 |
98 |
152 |
SCON |
ООН |
90 |
97 |
96 |
95 |
94 |
93 |
92 |
91 |
90 |
144 |
Р1 |
FFH |
8D |
|
|
|
|
|
|
|
|
141 |
ТН1 |
ООН |
8С |
|
|
|
|
|
|
|
|
140 |
ТН0 |
ООН |
8В |
|
|
|
|
|
|
|
|
139 |
TL1 |
ООН |
8А |
|
|
|
|
|
|
|
|
138 |
TLO |
ООН |
89 |
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
ITO |
137 |
TMOD |
ООН |
|
|
|
ООН |
||||||||
88 |
8F |
8Е |
8D |
8С |
8В |
8А |
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. Номер регистра определяется тремя младшими битами байта кода операции (КОП - первый байт команды). Регистровая адресация позволяет в одном байте указать код операции и адрес операн да. Поскольку операнд находится во внутренней ячейке, не требуется цик