литература / Пухальский Проектирование микропроцессорных систем 2001
.pdf1.8. Директивы ассемблера |
91 |
Из этого примера видно, насколько директива %FOR облегчает ввод данных и увеличива ет наглядность программы.
Директива управления файлами % INCLUDE. Эта директива используется для включе ния в исходный модуль файла другой программы. Директива %INCLUDE имеет форматы:
%INCLUDE патеДИе или %INCLUDE <пате_Jile>.
При указании имени включаемого файла в виде name_Jile его |
поиск производится только |
в текущем каталоге, а при указании в виде <пате_Jile> — только в |
каталоге, указанном в пере |
менной окружения INCLUDE. Для этого в файл autoexec.bat следует включить строку
set INCLUDE=c:\LABORAT\AVSIM85\INCLUDE,
если включаемые файлы находятся в каталоге c:\LABORAT\AVSIM85\INCLUDE.
По умолчанию текст подключенного файла в листинг не выводится. Для вывода в листинг пате.рт текста подключенного файла транслятор из командной строки компьютера следует запускать командой
|
|
|
|
avmac85[.ехе] пате[.asm] [xr\ SI |
|
|
|
|
|
|
|||||||||
(,SI — Snowlncs). Если, |
например, 25 команд, отмеченных в задаче 11 вертикальной линией, |
||||||||||||||||||
выделить в файл 1#08_1 l/.inc, то их можно будет заменить одной директивой |
|
|
|
|
|||||||||||||||
|
|
|
|
|
%include <l#08_lli'.inc>. |
|
|
|
|
|
|
|
|||||||
LABEL |
OPERATION |
8085 |
|
|
|
AVSIM 8085 Simulator/Debugger |
|
|
|
V1.31 |
|
||||||||
0126Н MOV |
A, M |
CPU REGISTERS |
|
FLAGS |
SCL |
SPD |
DSP |
SKP CURSOR |
|||||||||||
0127Н OUT |
ЗОН |
С Accumulator |
1= |
|
Z |
F SAC |
OFF |
HI |
ON |
OFF |
MENU |
||||||||
0129Н LXI |
H, 0740H |
0 11010100 :D4 |
|
0 |
1 1 |
0 |
|
|
|
Cycles: |
|
|
|||||||
012СН MOV |
A, В |
addr |
|
|
|
|
|
data |
|
|
|
|
|
|
PINS |
|
|||
012DH ADD |
L |
PC: 013F |
п |
E5 |
21 |
00 |
01 2B 7D B4 C2 |
|
Intr Bus : 00 |
Intr : |
0 |
||||||||
012ЕН MOV |
L, A |
SP:0FFC |
n |
00 |
00 |
00 |
40 |
07 |
35 |
01 FF |
Rim |
0000111 Trap: |
0 |
||||||
012FH |
MOV |
A, M |
|
|
|
FF FF FF FF FF FF FF FF |
|
|
|
|
R7.5 : |
1 |
|||||||
01ЗОН |
OUT |
31H |
BC: 0000 |
n |
FF |
FF |
FF |
FF FF FF FF FF |
|
|
|
|
R6.5 : |
0 |
|||||
0132Н CALL 0138H |
DE: 0000 |
n |
FF |
FF |
FF |
FF FF FF FF FF |
|
|
|
|
R5.5: |
0 |
|||||||
0135Н JMP |
0108H |
HL: 00D4 |
n |
FF |
FF |
FF |
FF |
FF |
FF |
FF FF |
|
|
|
|
Sid: |
0 |
|||
0138Н PUSH |
H |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sod: |
0 |
|
0139Н LXI |
H, 01ООН |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
013СН DCX |
H |
Memory Space |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
013DH MOV |
A, L |
0800 |
01 |
10 |
02 |
11 |
03 |
00 |
FF |
FF |
|
|
|
I/O Address |
|
||||
013ЕН |
ORA |
H |
0808 |
FF |
FF |
FF |
FF |
FF |
FF |
FF |
FF |
|
|
|
1 :0 |
|
|
||
013FH |
JNZ |
013CH |
0810 |
FF |
FF |
FF |
FF |
FF |
FF |
FF |
FF |
|
|
|
00 |
: |
:00000000 |
||
0142Н POP |
H |
0818 |
FF |
FF |
FF |
FF |
FF |
FF |
FF |
FF |
|
Ш Mifa |
I : 1 |
|
|
||||
0143Н RET |
|
I/O Space |
|
|
|
|
|
|
FF |
FF |
|
|
|
00 |
: |
:00000000 |
|||
0144Н |
no |
M em ory |
0030 |
79 |
01 |
FF FF FF |
FF |
|
У |
|
|
1 :2 |
|
|
|||||
0145Н |
no |
M em ory |
0038 |
FF FF FF FF FF |
FF |
|
FF |
FF |
|
|
|
00 |
: |
:00000000 |
|||||
0146Н |
no |
M em ory |
0040 |
FF FF FF FF FF |
FF |
|
FF |
FF |
|
|
|
1 :3 |
|
|
|||||
0147Н |
no |
M em ory |
0048 |
FF FF FF FF FF |
FF |
|
FF |
FF |
|
|
|
00 |
: |
:00000000 |
|||||
>Configure M e m o ry D u m p W in d o w s |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
Dump |
Expression |
commandFile |
Help |
IO |
|
Load |
--sp ace - - |
ESC to |
screen |
|
|||||||||
Рис. 1.27. Пример экрана отладчика
1.9. Генератор и системный контроллер
94 Глава 1. Микропроцессоры 8080 и 8085
ство памяти. Сигнал INTA предназначен для чтения данных из одного единственного внешнего устройства, поэтому эта операция не адресуется по шине адреса МП (безадресное чтение).
Если контакт INTA подключить через резистор 1 кОм к источнику питания + 12 В, то на запрос прерывания INT = 1 от внешнего устройства из системного контроллера в МП поступит команда RST 7, машинный код которой равен FF/j. Системная шина данных контроллера (Sys tem Data Bus) при этом блокируется. Этим обеспечивается одноуровневая система прерываний в простейших микроконтроллерах.
Вывод данных из МП указывается значением сигнала записи WR = 0 и выполняется одним из сигналов управления MEM W = 0 или HOW = 0. Все параметры этих сигналов одинаковы. Сигналы MEMW и I/O W , выдаваемые системным контроллером 8238, показаны на рис. 1.31 штриховой линией (упреждающая запись), а контроллером 8228 — сплошной.
Коды слова состояния SW представлены в табл. 1.15. Каждый разряд SW содержит сле дующую информацию о состоянии (в скобках указаны названия разрядов):
Д) = 1 — подтверждение прерывания (INTA)-,
Di = 0 — запись данных в память и вывод данных во внешнее устройство (WO — Write/Output);
D2= 1 — обращение к стеку (STACK — на шине адреса установлено содержимое SP)\ D3 = 1 — подтверждение останова (HLTA)\
D4 = 1 — вывод данных во внешнее устройство (OUT — на шине адреса установлено зна чение port второго байта команды OUT port);
D5 = 1 — выполнение первого машинного цикла (Ml — выборка из памяти первого байта очередной команды);
D6= 1 — ввод данных из внешнего устройства (INP — на шине адреса установлено значе ние port второго байта команды IN port)-,
Dt - 1 — чтение памяти (MEMR).
Из табл. 1.15 следует, что в качестве системных сигналов управления можно использовать сигналы:
MEMR = Dr DBIN, MEM W = D4 v WR, 1Ш= D 6 -DB1N, I/OW = DAv WR.
MEMW, I/OW
Рис. 1.31. Временные диаграммы сигналов процессора 8080А
96 |
Глава 1. Микропроцессоры 8080 и 8085 |
+ I/OW
Рис. 1.32. Принципиальная схема центрального процессорного устройства
Предполагается, что все устройства, подключенные к центральному процессорному уст ройству, имеют высокое быстродействие, поэтому положили сигнал RDYIN = 1. При использо вании этого сигнала следует знать, что МП производит анализ его значения во втором такте каждого машинного цикла. При обнаружении значения RDYIN = 0 устанавливается значение сигнала WAIT = 1, и в машинный цикл вводятся холостые такты (такты ожидания) до тех пор, пока не будет обнаружено значение RDYIN = 1.
Сигналы HOLD, HLDA и AEN предназначены для подключения контроллера прямого дос тупа к памяти 8257 или 8237А фирмы Intel (отечественные БИС 580ВТ57 или 1810ВТ37А). Сигнал HOLD анализируется во втором такте каждого машинного цикла и при обнаружении значения HOLD = 1 при RDYIN = 1 после окончания выполнения текущего машинного цикла
1.9. Генератор и системный контроллер |
97 |
выдается значение сигнала HLDA = 1 подтверждения DMA — МП переходит в состояние за хвата (приостановка работы) с переводом своих шин в Z-состояние. Для перевода BZ-состояние системных шин используется сигнал AEN = BUSEN = 1, поступающий от кон троллера прямого доступа к памяти.
System |
|
|
573РФ2 |
|
|
|
|
|
580BH59A |
|
|||||
Address Bus |
|
|
|
|
|
|
|
|
|||||||
|
|
А |
|
$ |
|
|
|
|
|
|
|
|
|
||
ВА 15-0" |
|
|
|
ЕР |
|
D |
|
|
|
|
|
|
|
|
|
|
|
|
ROM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
|
|
|
|
|
|
|
|
|
|
RESET- |
|
|
|
з |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
3 |
|
|
|
|
|
|
|
|
|
|
y2JCLK--- |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
5 |
|
4 |
|
|
|
|
|
|
|
|
|
||
(3080/8085) |
|
|
|
6 |
|
5 |
|
|
|
|
|
|
|
|
|
M EMW - |
|
|
|
Я |
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
|
|
|
|
|
|
|
|
|
|
MEMR- |
|
|
|
10 |
|
|
|
|
|
|
|
|
|
|
|
J7ow- |
|
|
|
ЮЕ |
|
|
|
|
|
|
|
|
|
|
|
WOR- |
|
|
|
ЪСЕ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
V? 2716 |
|
|
|
|
|
|
|
|
|
|
|
|
INTA- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
537РУ10 |
|
|
|
|
|
|
|
|
|
|||
INT * |
|
|
|
|
|
|
|
|
580ВИ53 |
|
|||||
|
|
|
А |
++ |
|
|
|
2 3 |
|
0 |
|||||
IRq ' |
|
|
|
|
|
|
I / O W |
|
|
|
|
||||
|
|
|
0 RAM DB |
|
|
|
|
|
|
||||||
I R 1 |
ВА1 |
7 |
9 |
DQ |
I / O R |
2 2 |
WR |
|
|
PT |
<—> |
||||
ж, |
I R 2 |
В А 2 |
6 |
|
|
|
1 0 |
D1 |
|
|
RD |
|
|
D |
|
Щ |
2 |
|
|
|
|
|
|
|
|
0 |
|||||
I R 3 |
В А З |
5 |
|
|
1 |
|
|
1 3 |
|
|
|
|
|||
IR , ■ |
3 |
|
|
D2 |
ВАО |
A0 |
|
|
|
1 |
|||||
ml - |
I R 4 В А 4 |
4 |
|
|
3 |
1 3 |
D 3 ВА1 |
2 0 |
A1 |
|
|
|
2 |
||
|
I R 5 B A S |
3 |
|
|
1 4 |
D 4 C S 2 0 21 |
|
|
|
|
|
||||
ffis - |
5 |
|
|
CS |
|
|
|
3 |
|||||||
I R 6 В А 6 |
2 |
|
|
1 5 |
D 5 |
|
|
|
|
|
|||||
JRc |
6 |
|
|
|
|
|
|
|
|
4 |
|||||
|
В А 7 |
1 |
|
|
1 6 |
D 6 C LK |
9 |
|
|
|
|
||||
|
|
7. |
|
|
CLK0 |
|
|
|
5 |
||||||
|
|
В А З |
2 3 |
|
|
1 7 |
D 7 |
|
1 1 |
|
|
|
|||
|
|
8 |
|
7 |
1 |
GATEQ |
|
|
|
6 |
|||||
|
|
В А З |
2 2 |
9 |
|
|
|
|
|
|
|
|
|
|
7 |
|
|
В А 1 О |
1 9 |
|
|
|
|
|
1 5 |
CLK 1| |
|
|
|
||
|
|
10 |
|
|
|
|
|
|
|
|
OUT |
||||
|
|
|
21 |
|
|
|
|
|
|
1 4 |
GATE1 |
|
|
||
|
|
MEMW |
я т |
|
|
|
|
|
|
|
|
0 |
|||
|
|
|
|
|
|
CLK |
1 8 |
|
|
|
|
||||
|
|
|
|
ЮЕ |
|
|
|
|
CLK2 1 |
|
|
1 |
|||
|
|
|
|
|
|
|
|
|
|
1 6 |
GATE2 |
|
8253 |
2 |
|
|
|
|
|
'СЕ |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
_____ l_ |
|
|
|
||
|
|
|
|
1533ИД7 |
|
|
|
|
|
|
|
|
|
||
C S 10*- |
|
|
|
DMT |
|
|
|
|
|
|
Local |
|
1533АП6 |
||
|
|
|
|
|
|
|
|
|
|
|
|
* |
|
4 |
|
|
|
|
|
|
|
|
|
|
|
Data Bus |
ч-И |
DA |
|||
|
|
|
|
|
|
|
|
|
|
|
|
D B1 |
|||
|
|
|
|
|
|
|
|
|
|
DO |
1 8 |
|
|
TR/RC |
n |
|
|
|
|
|
|
|
|
|
|
D l |
1 7 |
|
|
|
|
|
|
ВД15 |
|
|
|
|
|
|
|
D2 |
1 6 |
|
|
|
'i |
CS22< |
|
|
|
|
|
|
|
|
D 3 |
1 5 |
|
|
|
||
|
A E N - |
|
|
|
|
|
|
|
|
3 |
|
3 |
|||
|
|
|
|
|
|
|
|
|
D 4 |
1 4 |
|
|
|
|
|
|
|
от DMAC |
|
|
|
&TT1 |
D 5 |
1 3 |
|
5 |
|
5 |
|||
|
|
|
|
|
D 6 |
1 2 |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
I / O R |
|
|
|
|
|
|
|
D 7 |
11 |
|
6 |
|
6 |
|
|
|
|
|
|
|
|
|
|
7 |
|
7 |
|||
|
|
|
|
|
|
|
|
I I |
|
|
|
|
|||
|
|
|
|
|
|
|
Г |
|
|
-- |
T : 0 |
|
|||
|
|
I N T A (для МП 8085) |
|
|
|
|
|
|
|
|
T |
-- *■ |
|
||
|
|
|
|
|
|
|
|
|
ЮЕ |
|
|||||
1 1 |
DO |
1 0 |
D l |
9 |
D2 |
8 |
D 3 |
7 |
D 4 |
6 |
D 5 |
5 |
D 6 |
4 |
D 7 |
1 2 |
|
1 3 |
|
1 5 |
|
1 7 |
I N T |
8 |
DO |
7 |
D l |
6 |
D2 |
5 |
D 3 |
4 |
D 4 |
3 |
D 5 |
2 |
D 6 |
1 |
D 7 |
System
Data Bus
->BD 0
-+воЛ
BD2
BD3 -*-BD4 -+ b d 5
^BDq
BDj
Рис. 1.33. Память, таймер и контроллер прерываний
7 Г. И. Пухальский
98 Глава 1. Микропроцессоры 8080 и 8085
Сигнал INT анализируется в последнем такте последнего машинного цикла и при обнару жении значения INT = 1 переходит к обслуживанию прерывания, если ранее флаг INTE был установлен в 1. Для этого МП выдает слово состояния 6W8 или SW10, по которому системный контроллер вырабатывает активный уровень сигнала INTA = 0.
Структурная схема микроконтроллера, построенного на основе МП 8080А, была приведе на на рис. 1.5. Аналогичную структурную схему можно составить и для микроконтроллера, построенного на основе МП 8085А. Принципиальные схемы микроконтроллеров проектируют ся на базе таких структурных схем, предварительно определив требуемый объем памяти ОЗУ и ПЗУ и перечень необходимых интерфейсных БИС. Структурные схемы позволяют легче изу чить принцип работы МП-системы и назначение всех сигналов управления.
П ринципиальная схема микроконтроллера. На рис. 1.33 и 1.34 изображены принципи альные схемы памяти и интерфейсных устройств, которые могут быть подключены к систем ным шинам центральных процессорных устройств, изображенных на рис. 1.10 и 1.32. Все эти устройства расположены на одной печатной плате и обслуживаются одним приемопередатчи ком 1533АП6. Селекция всех БИС производится адресным дешифратором, выполненным на ИС 1533ИД7 (рис. 1.33). На один из его входов управления подан сигнал AEN от контроллера прямого доступа к памяти 580ВТ57 (см. рис. 2.23), переводящий выходы дешифратора в неак тивное состояние (1), запрещающее обращение к адресуемым БИС. Этот же дешифратор управляет селекцией контроллера клавиатуры и 7-сегментного дисплея (см. рис. 1.37 и 1.38).
Рис. 1.34. Контроллер последовательного канала передачи данных
1.9. Генератор и системный контроллер |
99 |
Селекция внешних устройств, не участвующих в операциях прямого доступа к памяти, всегда должна запрещаться, чтобы не было к ним ложного обращения при генерации адресных сигналов контроллером прямого доступа к памяти. БИС на рис. 1.33 и 1.34 имеют назначение:
573РФ2 (2716 фирмы Intel) — репрограммируемое ПЗУ 2К х 8 бит со стиранием ультра фиолетовыми лучами (EPROM — Erasable Programmable ROM', см. § 3.3);
537РУ10(#М6516-9 фирмы Harris Semiconductor) — ОЗУ 2К X 8 бит (RAM — Random Асcess Memory, см. § 1.10);
580ВН59 (8259 фирмы Intel) — программируемый контроллер прерываний (см. § 3.5); 580ВИ53 (8253 фирмы Intel) — программируемый интервальный таймер (см. § 3.4); 580ВВ51А (8251А фирмы Intel) — программируемый контроллер последовательного ка
нала данных (см. § 3.7).
Адресация памяти и внеш них устройств. В МП-системах применяется двухуровневая адресация ячеек памяти в ПЗУ и ОЗУ и регистров памяти в интерфейсных БИС: часть разрядов шины адреса подается на их внутренний дешифратор, а остальные разряды — на внешний (на пример, на ИС 1533ИД7). Этот внешний дешифратор обеспечивает выбор (включение) только одной БИС. Поскольку в рассматриваемом микроконтроллере используются БИС ПЗУ и ОЗУ по 2К х 8 бит (см. рис 1.33), то на их внутренние дешифраторы поступают 11 разрядов адреса Лю-о (2 К = 2 й ). Эти дешифраторы DC 11 х 2048 в соответствии с кодом сигналов Аю_о выби рают только одну ячейку памяти. Если бы по каким-либо адресам ячейки памяти отсутствовали бы, то к ним нельзя было бы обращаться — некоторые адреса были бы потеряны. Точно так же адресуются и регистры памяти в интерфейсных БИС. Если некоторая интерфейсная БИС имеет по четыре 8-разрядных регистра ввода (для чтения данных) и вывода (для записи данных), то на ее внутренний дешифратор DC 2 x 4 должны быть поданы два разряда адреса A i и А0 для обеспечения выбора только одной пары регистров ввода и вывода, имеющих один и тот же адрес порта. К какому из этих двух регистров производится обращение, распознается сигнала ми управления I/OR и HOW. Например, в схеме, изображенной на рис. 1.37, один и тот же ад ресный сигнал CS00 с выхода внешнего дешифратора используется как для селекции порта ввода, так и порта вывода. Однако чтение данных из порта ввода и запись данных в порт выво да выполняются активными уровнями разных сигналов:
ОЕ = I/OR v CS00 = I/OR ■CS00 и SR = I / OW v CS00 = I/OW ■CSQO.
Пока значение сигнала ОЕ = 1, выходы буфера данных 561JTH3 находятся в Z-состоянии. Функционально точно так же выполнено чтение и запись данных внутри интерфейсных БИС. Некоторые интерфейсные БИС имеют неполный набор регистров памяти, например, три реги стра ввода и четыре регистра вывода.
Дешифратор адреса 1533ИД7 на рис. 1.33 используется для селекции, как памяти, так и устройств ввода-вывода. В табл. 1.16, составленной на основании схемы его включения, пред ставлены диапазоны адресов памяти и портов устройств ввода-вывода, селектируемых каждым выходом дешифратора (символ х = 0 и 1). Адресное пространство памяти, селектируемое каж дым сигналом CSm (т = 00, 08, 10, 18, 20, 28, 30 и 38), составляет 2 К адресов, а селектируемое адресное пространство ввода-вывода — 8 портов.
Полное адресное пространство памяти, селектируемое дешифратором, составляет 16 К 8-разрядных ячеек памяти по адресам 0000/г 3FFF/;, и полное адресное пространство вводавывода — 64 порта по адресам 00Л + 3Fh (четверть всего адресного пространства вводавывода). Селекция одним адресным дешифратором памяти и устройств ввода-вывода возмож на потому, что адрес порта ввода-вывода содержится как в младшем, так и в старшем байте шины адреса: при выполнении команд IN port и OUT port на шине адреса МП устанавливает значения А,5_8 = Ау^.
7*
