274

Click here to load reader

Микропроцессорная техника

Embed Size (px)

Citation preview

Page 1: Микропроцессорная техника

Основные понятия и определения МПТ

Имеется 2 подхода при разработке цифровых электронных схем:1. на основе “жесткой硬的” логики逻辑性,合理性;2. на основе программируемой логики.

АЛУ − арифметико-логическое算术逻辑的 устройство;УУ − устройство управления;ПЗУ − постоянная память;ОЗУ − оперативная память内存储器;Регистры − для хранения данных;УУВВ − предназначено用途 для связи с внешними устройствами.

Микропроцессор (МП) − это программно-управляемое устройство обработки цифровой информации, выполненное в виде одной или нескольких БИС.

МП комплекс − это набор БИС, достаточных для построения МП системы. В этот набор входят МС управления, ввода-вывода, МС памяти и др.

МикроЭВМ − это устройство обработки цифровой информации, выполненное на основе МП средств. Процессор микроЭВМ выполнен на МП.

Существует 2 класса микроЭВМ:1. Универсальные;2. Специализированные.

Универсальные микроЭВМ предназначены для решения широкого класса научных задач. Характерно высокое быстродействие, большой объем памяти, большой набор внешних устройств.

Специализированные микроЭВМ применяются для цепей управления, контроля различных технологических объектов и систем. Имеются средства сопряжения с объектом (с внешними устройствами).

В МПС можно выделить микроконтроллер (МК). Для него характерно: МК ориентированы на выполнение узкого класса задач управления и контроля

различными объектами. МК работает по одной программе, которая храниться в ПЗУ. МК имеют простую схему команд, ориентированную на управление.

1

Процессор

АЛУ

1УУРегистры ПЗУ ОЗУ

Память

Устройствоуправления

ввода вывода

Внешние устройства

УУВВ

Page 2: Микропроцессорная техника

Основные характеристики и типы МП

МП характеризуется:1. Тип микроэлектронной технологии: ТТЛ, ТТЛШ, n-МОП, КМОП, ЭСЛ, И2Л.2. Разрядность обрабатываемых данных.3. Быстродействие МП определяет скорость выполнения операций. С быстродействием

связана тактовая частота МП.4. Объем адресуемой памяти.5. Тип устройства управления:

схемное управление − система команд неизменима, закладывается заводом-изготовителем; микропрограммное управление − программы управления МП разрабатывает пользователь.

МП делят на 2 класса:1. МП с фиксированной разрядностью обрабатываемых данных и неизменимой системой

команд.2. МП с изменяемой разрядностью обрабатываемых данных и микропрограммным

управлением, т.е. с изменяемой системой команд.

Первый МП создан в 1971 году фирмой Intel (4-хразрядный). В 1973 году создан 8-разрядный МП Intel i4004.

В дальнейшем Intel: i8008, i8080, i8085.

МП такой структуры называется многокристальным.Типы МП (Intel, Motorola, Zilog):

1) Intel i8080A, i8085A (аналог КР580ВМ80А);2) Intel i80C85A (аналог КР1821ВМ85А) − 8-разрядные МП;3) Intel i8086 (аналог КР1810ВМ86), i80186, i80286 − 16-разрядные МП;4) i80386, i80486 − 32-разрядные;5) Pentium (К589 − ТТЛШ; К1800 − ЭСЛ; К1801, К1804 − ТТЛ).

Общие принципы построения МПС

1. Комплексное использование аппаратных и программных средств.2. Модульный принцип построения.3. Магистральный принцип построения.

Модульный принцип − любую систему можно разбить на отдельные модули, выполняющие строго определенные функции (модуль памяти, модуль ввода-вывода и т.д.).

УСТРОЙСТВО МИКРОПРОГРАММНОГО УПРАВЛЕНИЯ

Секция 1 Секция 2 Секция n

Системная магистраль

2

Page 3: Микропроцессорная техника

Магистральный принцип − все модули соединяются между собой через системную магистраль (или шину) − это набор проводников, по которым передается информация и сигналы, необходимые для работы МП.

Существует 3 вида сигналов:1) обрабатываемые данные;2) адреса;3) сигналы управления.

Читать из памяти и записывать в память может только МП. Связь МП системы с внешними устройствами осуществляется с помощью портов ввода-

вывода. Запись в порт − МП доставляет данные в порт для вывода. Аналогично операция чтения из порта называется вводом данных.

Взаимосвязь между отдельными модулями МП системы осуществляется с помощью комплекса аппаратных и программных средств, которые называются интерфейсом.

По системной шине передается информация 3-х видов: адреса (коды) устройств, ячеек памяти, портов ввода-вывода; данные, которые передаются между устройствами; сигналы управления, которые организуют работу устройств.

Поэтому шину разбивают на три составляющих:1. Шина адреса − ША (А0…А15).2. Шина данных − ШД (Д0…Д7).3. Шина управления − ШУ.

Такая система называется МП система с 3-шинной структурой. Каждая из шин работает независимо друг от друга и по каждой шине передается своя информация.

Память в МПС делится на внутреннюю (п/п) и внешнюю (магнитную). Внутренняя память по функциям делится на оперативную и постоянную. МП может только читать из постоянной памяти. Оперативная память − энергозависимая (теряется при выключении), МП может читать и писать в оперативную память.

Структурная схема МПС с 3-шинной структурой:

ВУ − внешнее устройство;УВВ − устройство ввода-вывода (дисплей, принтер);ША − однонаправлена;ШД − двунаправленная (МП может принимать и передавать данные);ШУ − формируется МП.

Модульпроцессора

ОЗУ ПЗУ Порт ввода Порт вывода

ВУ

ШУ

ШД

ША

3

Page 4: Микропроцессорная техника

Основные операции, выполняемые в МПС с 3-мя шинами

Существует 7 видов операций:1. Запись в память.2. Чтение из памяти.3. Вывод в порт.4. Ввод из порта.5. Обработка запросов прерывания.6. Прямой доступ к памяти.7. Межрегистровый обмен данными.

Все эти операции осуществляются при выполнении программы. Для 3-х шиной структуры характерно то, что 3 шины работают независимо.

Сигналы управления:1. запись в память − MEMW (черта означает, что активный уровень

− низкий);2. чтение из памяти − ;3. запись УВВ − (используется для записи в порт);4. чтение из порта − .

В МПС некоторые сигналы могут находиться в 3-х состояниях:L − низкий уровень;H − высокий уровень;Z − высокоомное состояние.

U

t0

MEMR активный − низкий

А1 активный − высокий

ША

Адрес стабилен (сигнал не изменен)

Адрес не стабилен

Z − состояние

Неизвестное состояние

4

Page 5: Микропроцессорная техника

Запись данных в память

МП выставляет на ША адрес ячейки памяти, когда адрес стабильный − выставляются данные, когда данные стабильны МП вырабатывает строб, по нему происходит запись данных в память.

Чтение из памяти

При чтении из памяти МП выставляет на ША адрес ячейки, когда адрес стабилен вырабатывается строб, который производит чтение из памяти и на ШД появляются данные из памяти, которые считывает МП во внутренние регистры.

Запись в порт (вывод)

CS

IOW

OUT

Данные из МП

Адрес ячейкиША

ШД

MEMW

Начало записи

Конец записи

Адрес ячейкиША

Данные из ячейкиШД

MEMR

Данные из МП

Адрес портаША

ШД

IOW

Начало вывода

Конец вывода

5

Page 6: Микропроцессорная техника

Чтение из порта (ввод)

Обработка запросов прерывания

ISR − подпрограмма обработки прерывания. Каждое внешнее устройство имеет свою подпрограмму обработки прерывания, которая располагается в памяти. Начальный адрес обработки прерывания называется вектором прерывания.

Система обработки прерываний должна: подавать запрос прерывания; сообщать МП векторы прерывания; при поступлении нескольких запросов одновременно производить арбитраж.

Арбитраж позволяет определить какое устройство обслужить при нескольких запросах, для этого применяется метод приоритетов. Используется контроллер приоритетных прерываний (КПП).

IRQ1, IRQ2 − запросы прерывания;− подтверждение прерывания;

INT − запрос прерывания в МП.

Адрес портаША

Данные из портаШД

IOR

Модуль процессора

КПП

ATNI

INT

IRQ1 IRQ2

Код вектора прерывания

ШД

INT

IRQ

ШД КВП

INTA

6

Page 7: Микропроцессорная техника

Прямой доступ к памяти

При обмене данными между ОЗУ и внешними устройствами данные передаются по цепочке:

При чтении удобно использовать прямой доступ к памяти:

Время передачи сокращается примерно на порядок. Процессор исключается из режима обмена и предоставляет системную шину КПДП.

Межрегистровый обмен данными − данные пересылаются внутри МП между его регистрами и не передаются на системную шину.

Кэш-память − память, которая используется как дополнительные регистры.

Микропроцессор КР580ВМ80А (ВМ80)

Этот процессор является аналогом процессора i8080А. Он выполнен по n-МОП технологии на кристалле площадью примерно 3 см2. Выпускается в DIP-корпусе.

Основные характеристики: 8-разрядная шина данных; 16-разрядная шина адреса (это позволяет обращаться к 65536 ячеек памяти); тактовая частота fT = 0,5…2,5 МГц (оптимальная частота 2 МГц; быстродействие − 400 тыс. операций в секунду; требует 3-х источников питания: основное +5 В; вспомогательное +12 В и −5В; ток потребления 200 мА.

ОЗУ Портввода-вывода

Процессор ВУ

Запись в ОЗУ

Чтение из ОЗУ

ОЗУ КПДП ВУ

Контроллер прямого доступа к памяти

7

Page 8: Микропроцессорная техника

F1 и F2 − входы 2-х последовательностей тактовых импульсов, частотой fT;READY − вход сигнала готовности (“1“ − МП работает, “0“ − МП переходит в режим

ожидания);RESET − вход сигнала начальной установки (сброса);INT − вход сигнала запроса прерывания;HOLD − вход сигнала запроса захвата (используется при прямом доступе к памяти);D0 ÷ D7 − выводы шины данных (имеют 3 состояния и двунаправленные);GND − общий вывод (земля);A0 ÷ A15 − выводы шины адреса;INTE − разрешение прерывания (“1“ − прерывания разрешены, “0“ − прерывания запрещены);HLDA − подтверждение захвата;DBIN − характеризует в каком режиме работает шина данных (“1“ − работает на прием, “0“ −

работает на вывод); − запись (если низкий уровень то МП записывает данные в память или в порт);

WAIT − “1“ − МП находится в режиме ожидания, “0“ − МП работает;SYNC − вход сигнала синхронизации;UCC − присоединение основного источника питания +5 В;UBS − присоединение вспомогательного источника питания +12 В;UCS − присоединение вспомогательного источника питания −5 В.

Внутренняя структура

Основные блоки МП:1. Арифметико-логический блок (АЛУ, регистры), выполняет все арифметические и

логические операции.2. Блок регистров (регистры: W, Z, B, C, D, E, H, L; схема инкремента-декремента; SP −

указатель стека);3. Регистр команд и дешифратор команд;4. Буфер ША и ШД (согласуют по нагрузке внутренние устройства МП с внешними);5. Схема управления и синхронизации.

Регистры T, W, Z программно недоступные, динамические (работают на определенных частотах), выполнены на конденсаторах.

А 01

15

INTEHLDADBIN

WAIT

SYNC

UCC

UBS

UCS

F1F2

READYRESET

CPU

INT

HOLD

D

0 1 7

GND

Сигналы управления

Сигналы управления

D0 ÷ D7

ШД

A0 ÷ A15

ША

8

Page 9: Микропроцессорная техника

T − регистр врем. хранения;АЛУ − арифметико-логическое устройство;F − регистр флагов;A − аккумулятор;DA − десятичная коррекция аккумулятора.

Программная модель МПС

Программная модель − это набор программно доступных элементов, которые обмениваются информацией под действием команд МП.

1. МП2. Память3. Порты ввода-вывода

Модель регистров:

Буфер ШД

Д0÷Д78

Регистр команд

Дешифратор команд

Схема управления и

синхронизации

W Z

C

E

L

B

D

H

SP

Инкрем./Декрем.

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

T

DA F

AАЛУ

8Внутренняя ШД

Буфер ША1616

А0÷А15

A [8] F [8]

C [8]

E [8]

L [8]

B [8]

D [8]

H [8]

PC [16]

SP [16]

INTE [1]

Регистры специального назначения

Регистры общего назначения, могут использоваться в парах

Регистры специального назначения

9

Page 10: Микропроцессорная техника

Разряды 5, 3, 1 − не используются.Если в разряде регистра флагов “1”, то флаг установлен, если “0”, то флаг сброшен.S − флаг знака (“1” − результат отрицательный, “0” − результат положительный).Z − флаг нулевого результата (“1” − результат операции = 0, “0” − результат операции

ненулевой). AC − флаг вспомогательного переноса (“1” − есть перенос из 3 в 4 разряд аккумулятора, “0” −

переноса нет).P − флаг паритета (четности) (“1” − четное число, “0” − число нечетное).CY − флаг переноса (“1” − если произошел перенос из старшего разряда регистра − это

признак переполнения регистра (аккумулятора)).РС − счетчик команд − здесь находится адрес ячейки памяти к которой обращается МП.SP − указатель стека. Стек − это особая область оперативной памяти, адресация которой

происходит через указатель стека.INTE − триггер разрешения прерывания (“1” − прерывания разрешены, “0” − прерывания

запрещены).

Программная модель памяти

Программная модель памяти − это упорядоченная и пронумерованная последовательность 8-разрядных регистров, называемых ячейками памяти. Номер ячейки памяти называется ее адресом. Число ячеек памяти в системе определяется разрядностью ША МП (m − число разрядов шины адреса, 2 m − число адресов).

Для ВМ80 m = 16, 216 = 65536 = 64 К, К = 1024.

Для характеристики памяти используют 2 понятия: адресное пространство памяти − это максимальное количество ячеек памяти, к которым

может обратиться МП, определяется разрядностью ША. рабочее пространство памяти − реальное число ячеек памяти. Количество ячеек

определяется МС, на которой она реализуется. Рабочее пространство по выполняемым функциям делится на блоки.

Для удобства ввели понятие карта памяти − это графическое изображение рабочего пространства памяти с указанием выполняемых функций в системе.

S 0 AC 0 P I CYZ

7 6 5 4 3 2 1 0

Флаги: F

[8]

[8]

[8]

[8]

[8]

[8]

0000H

0001H

0002H

0003H

FFFEH

FFFFHH

10

Page 11: Микропроцессорная техника

Программная модель портов ввода-вывода

Программная модель портов ввода-вывода − это упорядоченная пронумерованная последовательность 8-разрядных регистров.

Количество портов ввода-вывода определяется разрядностью адреса порта, который выдает МП (используется только 8 разрядов). Максимальное количество портов 28 = 256.

Общее число портов ввода-вывода − 512. Реальное число меньше.

Анализ работы МП ВМ80

При выполнении программ процессор работает по определенным правилам, которые можно изобразить в виде блок-схемы:

ПЗУ (программа Монитор)

ПЗУ пользователя

ОЗУ пользователя

Свободнаяобласть

1 К

1 К

1 К

64 К

0000

03FF0400

07FF0800

0BFF0C00

FFFF

УМК:

[8]

[8]

[8]

[8]

[8]

[8]

[8]

[8]

Порты ввода Порты вывода

0001

FE

FF

0001

FE

FF

11

Page 12: Микропроцессорная техника

Машинные такты и циклы

МП является синхронным устройством. Работа всех его внутренних схем тактируется с помощью внешних тактовых импульсов. Эти импульсы поступают извне на входы F1 и F2.

Требования к импульсам:1. амплитуды импульсов: 8 ÷ 12 В.;2. импульсы F1 и F2 не должны пересекаться во времени;3. частота тактовых импульсов: 0,5 ÷ 2,5 МГц.

Параметры импульсов:

Т − называется машинным тактом Т = 1/fT

Машинный такт − это минимальный промежуток времени, на который разбивается работа всех внутренних устройств МП. Любая команда выполняется за строго определенное число тактов.

Машинный цикл − это промежуток времени выполнения команды, в течение которого МП обращается к памяти или портам. Любая команда может выполняться за 1 ÷ 5 циклов. Порядок их следования нумеруется:

М1 М1 М2 М1 М2 М3 М1 М2 М3 М4 М1 М2 М3 М4 М5

Пуск

Загрузить в РС число 0000Н

Чтение кода команды из памяти

Декодирование команды

Исполнение команды

Команда последняя?

Остановка МПИнкремент РС

Да

Нет

T

F2

F1

>50 нс >10 нс >70 нс

>220 нс

БИС КР580ГФ24

t

t

12

Page 13: Микропроцессорная техника

Существует 10 видов машинных циклов (в ВМ80):1. Извлечение кода команды;2. Чтение данных из памяти;3. Запись данных в память;4. Извлечение из стека;5. Запись данных в стек;6. Ввод данных из порта;7. Вывод данных в порт;8. Цикл обслуживания прерывания;9. Останов;10. Обслуживание прерывания в режиме останова.

“Извлечение кода команды” имеется в любой команде и всегда 1-ый по счету.Каждый машинный цикл разбивается на 3 ÷ 5 тактов. В каждом такте МП делает определенные

действия: в первых 3-х тактах происходит обмен данными с памятью или портами; 4-ый и 5-ый такт используются для внутренних операций МП.

MOV r1, r2 − пересылка из регистра в регистр.

MOV r, M − пересылка из регистра в память (с косвенной адресацией);MOV M, r − пересылка из памяти в регистр

Слово состояния процессора

В МП ВМ80 имеется 2 вывода для сигналов управления: − запись;

DBIN − состояние ШД (ввод или вывод).Метод мультиплексирования (разделения во времени): в один момент времени МП выводит

информацию о своем внутреннем состоянии, в другой момент времени ШД используется для

Т1 Т2 Т3 Т1 Т2 Т3 Т4 Т1 Т2 Т3 Т4 Т5

Машинные такты

М1

Т3 Т4Т2Т1 Т5

Чтение кода из памяти

Пересылка между

регистрами

М1

Т3 Т2Т2Т1 Т3

Чтение кода команды из памяти

Обмен регистра с памятью

Т4 Т1

М2

Чтение содержи-мого HL

и перенос

в регистр

13

Page 14: Микропроцессорная техника

ввода и вывода информации. Информация о внутреннем состоянии МП, выводимая на ШД и называется слово состояния процессора.

Слово состояния выводится кратковременно, в течение одного такта. Поэтому надо запомнить слово состояние на период машинного цикла. Для этого используется внешний регистр слова состояния.

В первом такте машинного цикла по фронту импульса F2 МП выставляет на ШД слово состояния, одновременно вырабатывается импульс на выводе SYNC МП. Длительность сигнала слова состояния − 1 машинный такт. Для запоминания слова состояния в регистре используется вентиль “И − НЕ”, на выходе которого вырабатывается сигнал. Низкий его уровень открывает регистр и в него записывается новое слово состояния.

Назначение отдельных разрядов слова состояния:

Разряд ШД Обозначение сигнала Назначение сигнала

RG D0

D1

D2

D3

D4

D5

D6

D7

DI

C Х

CPU D0-D7

SYNC

F1ТТЛ

STBST,

к ШД8

8

Слово состояния

Слово состояния

T1 T2 T3

F1

F2

SYNC

D0−D7

STB ST,

Старое СС Новое ССВыход Рг СС

14

Page 15: Микропроцессорная техника

D0D1D2D3D4D5D6D7

INTA

STACKHLTAOUTM1INP

MEMR

Подтверждение прерыванияЗапись − вывод

СтекПодтверждение останова

ВыводЦикл чтения кода

Вводчтение

− для ввода кода прерывания МП

Реализовывать эти логические функции можно с помощью логических микросхем.Пример построения схемных сигналов:

`

Временные диаграммы сигналов МП

В первом такте МП по срезу импульса F1 выставляет на ША содержимое РС − это адрес ячейки памяти, где храниться код команды. Затем содержимое РС инкрементируется. В этом же такте по фронту F2 выдается импульс на выходе SYNC и одновременно на ШД поступает слово состояния. Из этого слова формируется сигнал управления для данного машинного цикла. Во 2-ом такте по фронту сигнала F2 на шину данных поступает содержимое ячейки памяти − это код команды. Этот код команды считывает МП по срезу сигнала F1 в такте Т3. Сигналы управления памяти формируются из сигнала DBIN и сигнала СС. Сигнал MEMR управляет памятью. В такте Т4 МП декодирует принятый код и определяет команду, которую он должен выполнить. Если команда не требует обращения к памяти, то в 5-ом такте она выполняется. На 4-ом такте этот цикл заканчивается.

D0

D1

D4

D6

D7

&

1

&

2

&

3

&

5

&

4

1

DBIN

1

1 1

INTA

MEMR

MEMW

IOW

IOR

+ 5 В

К155ЛА8INTA

OUT

INP

MEMR

WOWO

DBIN

WR

CPU

Рг. СС

15

Page 16: Микропроцессорная техника

Во 2-ом такте каждого машинного цикла по срезу сигнала F2 МП анализирует входы READY и HOLD. Если в этом моменте READY = 0 МП переходит в режим ожидания, если HOLD = 1 МП переходит в режим захвата.

Режимы работы МП

1. Начальная установка МП (НУ) − после включения электропитания триг. регистр находится в произвольном состоянии, в том числе и РС, поэтому МП может начать выполнение программы с произвольного адреса, поэтому происходит сброс МП. Для этого имеется вход RESET − вход НУ.

При этом происходит следующее:1. РС сбрасывается в 0: (PC)←0000H.2. Сбрасывается триггер разрешения прерываний: (INTE)←0, т. е. прерывания

запрещаются3. Триггер захвата сбрасывается в 0: (HLDA)←0.

Когда RESET = 0 МП начинает работу: содержимое РС выдается на ША и МП читает код из 0-ой ячейки памяти (здесь должна быть первая команда программы).

2. Режим ожидания − для нормальной работы МП надо чтобы READY = 1. Во 2-ом такте каждого машинного цикла МП проверяет состояние входа READY. Если в момент среза импульса F2 READY = 0, то МП переходит в режим ожидания. В этом режиме МП не производит никаких действий. В режиме ожидания на выходе WAIT = 1. В этом режиме МП постоянно анализирует состояние входа READY, и как только появляется высокий уровень − МП продолжает выполнение прерванной программы. Этот режим необходим для согласования МП с медленными устройствами.

3. Режим захвата − МП отключается от управления системной шиной и отдает ША и ШД контроллеру прямого доступа к памяти. Для перехода в этот режим контроллер устанавливает HOLD = 1 . МП во 2-ом такте каждого машинного цикла анализирует этот вход и если там 1, то

Адрес ячейки памяти

T2 T3 T4

F1

F2

ША

MEMR

T1

ШД СС КК

SYNC

DBIN

RESET

0tНУ

t

tНУ ≥ 3Т Т = 1/fT

16

Page 17: Микропроцессорная техника

МП переходит в режим захвата, переводя ША и ШД в Z − состояние. МП в этом режиме следит за входом HOLD и как только там будет 0 МП продолжает выполнение прерванной программы.

4. Режим прерывания − чтобы перейти к подпрограмме прерываний надо чтобы они были разрешены. Это определяется триггером INTE, если INTE = 1 − прерывания разрешены, если INTE = 0 − прерывания запрещены. Для разрешения прерывания имеется команда EI, а для запрещения команда DI.

Внешние устройства подают высокий уровень на вход INT:

Если INTE = 1, то МП заканчивает выполнение текущей команды и сбрасывает в 0 триггер INTE. Закончив выполнение команды, МП переходит к машинному циклу обслуживания прерывания. В этом цикле:

1. МП помещает содержимое РС в стек, в РС содержится адрес предыдущей команды − это адрес возврата в основную программу;

2. Из СС формируется сигнал управления INTA. По этому сигналу внешнее устройство передает на ШД код команды RST N (N = 0, 1,…,7). МП считывает этот код и определяет адрес подпрограммы прерывания.

3. В РС загружается полученный адрес подпрограммы, и она выполняется.4. В конце подпрограммы прерывания находится команда возврата RET. По этой команде

МП извлекает из вершины стека адрес возврата и заносит его в РС − происходит возврат к основной программе.

RST N VVV Адрес ISR, HEXRST 0RST 1RST 2RST 3RST 4RST 5RST 6RST 7

000001010011100101110111

00000008001000180020002800300038

INT

tзапрос

прерывания

1 V V V 1 I 11

7 6 5 4 3 2 1 0

RST N

17

Page 18: Микропроцессорная техника

В этом машинном цикле адрес не используется и на ШД образуется слово состояния − вырабатывается строб INTA. С помощью строба на ШД поступает адрес команды RST N.

5. Режим останова − команда останова HLT, после выполнения этой команды МП переходит в режим останова − МП не выполняет никаких действий, содержимое РС неизменимо, МП переводит буферы ША и ШД в 3-е состояние, на выходе МП WAIT = 1. В этом режиме МП может находиться бесконечно долго. Выти из режима останова можно 2-мя методами:

1. Подачей запроса прерывания на вход INT − если прерывание разрешено (INTE = 1), то МП выходит из режима останова и переходит к подпрограмме обработки прерывания, если прерывание запрещено, то этот метод не срабатывает.

2. Подачей сигнала начальной установки на вход RESET − при этом МП начнет выполнение программы с нулевого адреса. Этот метод всегда срабатывает.

Построение отдельных модулей МПС

Модуль центрального процессора; Модуль памяти; Модуль ввода-вывода; Модуль прерывания.

Модули строятся по типовым схемам с применением БИС, которые входят в МП комплекты (МПК КР580 − центральный МП КР580ВМ85А).

Модуль процессора: играет главную роль в системе, основная задача − формирование системной шины. Ядро модуля − МП. Существует 3 причины по которым МП ВМ80А не может быть ядром МПС:

1. Для работы МП необходимо 2 последовательности тактовых импульсов с амплитудой около 12 В.

2. МП имеет малую нагрузочную способность выводов: I0вых ≤ 2 мА, I1

вых ≤ 50 мкА.

RST 0

RST 1

RST 2

RST 3

RST 4

0000

0008

0010

0018

0020

Адрес не используется

T2 T3 T4

F1

F2

ША

ШД

INTA

T1 T5

СС RST

18

Page 19: Микропроцессорная техника

Нагрузочная способность выводов МП позволяет работать только на одну ТТЛ нагрузку. Необходимо усилить выводы МП по току. Для этого ставят буферные элементы (или усилители). Для шин такие усилители называются шинными формирователями.

3. В МП ВМ80А недостаточно сигналов управления. Необходимые сигналы управления формируются из СС МП с помощью логических схем.

Реализовывать модуль процессора можно на разных БИС различными методами.КР580ВМ85А − МП;КР580ГФ24 − БИС системного генератора;КР580ВА86 − БИС 2-направленного 8-разрядного шинного формирователя (высокая

нагрузочная способность I0вых ≤ 32 мА);

КР580ВК28(ВК38) − БИС системного контроллера, обеспечивающего формирование 2-напрвленой 8-разрядной ШД и формирование сигналов управления:

1. чтение и запоминание в памяти;2. ввод и вывод в порты;3. подтверждение прерывания.

Используя эти МС можно реализовать модуль процессора на 5 МС (см. рис. ниже). Диод служит для быстрого разряда конденсатора при скачках питания.

− разрешение шины (при прямом доступе к памяти);TF − буфер направления (TF = 1, то А → В; TF = 0, то А ← В).

1UВХ UВЫХ

IВХ IВЫХ

I0ВХ ≤ 1,6 мА

I1ВХ ≤ 40 мкА

Генератортактовых

импульсов

F1

F2

Формирователь ША

Формирователь ШД

Формирователь ШУ

МП

А0−А15

D0−D7

DBIN

WR

А0−А15

D0−D7

ШУ

16 16

8

19

Page 20: Микропроцессорная техника

R1 ≈ 10 КОм, С1 ≈ 10 мкФ, tНУ > 1/fТ

Модуль памяти: память МП делят на внутреннюю (резидентную) и внешнюю.Внутренняя память − обычно на полупроводниковых МС. Внешняя память − магнитная или

оптическая.По выполняемым функциям внутреннюю память делят на постоянную (ПЗУ) и оперативную

(ОЗУ).ПЗУ − память только для чтения, энергонезависима. ОЗУ − для чтения и записи,

энергозависима.Модуль памяти делят на 2:

модуль ПЗУ; модуль ОЗУ.

Модуль ПЗУ (ROM):1. Масочное ПЗУ − программируется на заводе-изготовителе, достоинство −

дешевизна.

20

GX1

X2

Ready

Reset

Sync

А 01

15

D0−D7

HLDAINTEWAITDBIN

SYNC

F1

F2

READY

RESET

CPU

INT

HOLD

F1

F2

Ready

Reset

F2ТТЛ

SC B01

7HOLD

A 0 1 7

DBIN

WR

BUSEN

MEMR

MEMW

IOR

IOW

INTA

DD1 КР580ГФ24 DD2 КР580ВМ80А

DD3 КР580ВК28

+ 5 В

ZQ1

R1

R2

C1SB1ШУ

F2ТТЛ Reset

ШУ

8D0D1 D7

ШДМП

ШУМП

A

0

1

7

TF

OE

F ↔

B

0

1

7

A

0

1

7

TF

OE

F ↔

B

0

1

7

+ 5 В

+ 5 В

DD4 КР580ВА86

DD5 КР580ВА86

А0

А1

А7

А8

А9

А15

А0

А1

А7

А8

А9

А15

ШДМП

Page 21: Микропроцессорная техника

2. Программируемое ПЗУ (ППЗУ) − однократно программируемое, процесс записи называется прожиганием. Достоинство − невысокая стоимость. Недостаток − однократность программирования.

3. Репрограммируемое ПЗУ (РПЗУ) − стираемое ПЗУ: с УФ стиранием и с электрическим стиранием.

Основные параметры МС ПЗУ

1. Информационная емкость МС −это количество бит информации, которую может одновременно хранить МС [бит] − N.

Структура запоминающей матрицы:

N = n ∙ m, где n − разрядность ячейки памяти (4, 8, 16); m − количество ячеек памяти. N определяет внутреннюю структуру запоминающей матрицы.

N = 4096 битN = 1К ∙4 битN = 512 ∙ 8 битВыходные буферы согласовывают нагрузочную способность памяти с нагрузочной

способностью МС.

− разрешение выхода − управляет выходными буферами: если = 0, то буферы закрыты; если = 1, то буферы в Z − состоянии.

− выбор МС − этот сигнал открывает выходные буферы.2. Время выборки адреса tв (или tва)

n n-1 2 1

1

2

3

m-1

m

ячейка памяти

Дешифратор адреса

Схема управления

Запоминающая матрица

Выходные буферы

А0

А1

Ак

CS

OE

D0 D1 Dn

21

Page 22: Микропроцессорная техника

tв − это промежуток времени между поступлением адреса и появлением данных на выходе МС. tв ≈ (10 ÷ 100) мсек.

ППЗУ серии К556, КР556: технология ТТЛШ; быстродействие tв ≈ 10 мсек.; потребл. знач. мощность от источника питания + 5 В.

Тип ИМС Емкость, бит Тип выходного буфераКР556РТ4

РТ5РТ6РТ7РТ11РТ12РТ13РТ14РТ15РТ16РТ17РТ18

256 х 4512 х 82К х 82К х 8256 х 41К х 41К х 42К х 42К х 48К х 4512 х 82К х 8

ОКОКТСОКТСОКТСОКТСТСТСТС

ОК − открытый коллектор; ТС − 3 состояния.Условное графическое обозначение КР556РТ11 (рис. 1) и КР556РТ6 (рис.2 ):

РПЗУ серии К573 и КР573 (с УФ стиранием, выходы этих МС − ТС).Тип ИМС Емкость, бит Напряжение питания, ВК573РФ1

РТ2РТ3РТ4

КР573РФ5РТ6РТ7РТ9

1К х 82К х 84К х 168К х 82К х 88К х 832К х 8128К х 8

+ 5, − 5, + 12+ 5+ 5+ 5+ 5+ 5+ 5+ 5

Условное графическое обозначение КР573РФ5:

Адрес

CS

Выход данных

А0

1

7

◊D00123

CS1

CS2

Ucc

GND

PROM 1K

Рис. 1

Входы связаны

по И

А01

910

◊D001

7

CS1CS2CS3

Ucc

GND

PROM 16K

Рис. 2

Входы связаны

по И

22

Page 23: Микропроцессорная техника

= 1, на D0 − Z-состояние;= 0, на D0 − Z-данные.

МС оперативной памяти : 1. МС статических ОЗУ2. МС динамических ОЗУ

В статических ОЗУ в качестве запоминающего устройства используются статические триггеры, построенные на транзисторах. Достоинства: простота управления, высокая помехоустойчивость, возможность бесконечно долгого хранения информации при наличии питания. Недостатки: малая информационная емкость, высокая потребляемая мощность от источника питания.

Статические ОЗУ применяются при небольшой требуемой емкости оперативной памяти (≈ несколько десятков Кбайт), используются в простых МПС (микроконтроллеры).

В динамических ОЗУ элементарная ячейка памяти представляет собой конденсатор, который записывает и хранит заряд.

RЗИ ≈ 1012 Ом; CЗИ ≈ 1 ÷ 2 пФ; tРАЗР ≈ 3 ÷ 4 мсек.При каждом считывании такой ячейки конденсатор разряжается. Процесс восстановления

называется регенерацией. Для регенерации применяется специальное устройство − контроллер регенерации динамического ОЗУ.

Достоинства:1. простота конструкции;2. малая мощность, потребляемая от источника питания;3. невысокая стоимость.

Недостатки:1. сложность управления;2. высокий уровень помех.

Применение − когда требуется большая емкость.МС с УФ стиранием имеют на корпусе окошко, через которое кристалл облучают

ультрафиолетовым светом − при этом открытые транзисторы закрываются.В МС с электрическим стиранием для стирания подаются импульсы тока.Достоинство − возможность многократно стирать и записывать информацию. Недостаток −

дороговизна.К132 − ТТЛШ, К541 − И2Л, К537 (КР537) − КМОП:

1. характерно очень малое энергопотребление (IПОТ ≈ 10 мкА);

А01

910

◊D001

7

CSOEUPR

Ucc

GND

EPROM 16K

Вход программ. (подается импульс при работе + 5 В)

R

+ UИП

C

ИЗ

Вых

Вх

CЗИ

23

Page 24: Микропроцессорная техника

2. для резервирования питания подсоединяют гальваническую батарейку;3. выходные буферы с ТС.

Существует 2 группы МС по методу выполнения линий ввода-вывода данных: с раздельными линиями ввода-вывода; с общими (совмещенными) линиями ввода-вывода данных.

Тип ИМС Емкость, бит Линии ввода-выводаКР537РУ1

РУ2РУ3РУ6

КР537РУ8РУ9РУ10РУ13РУ14РУ17

1К х 14К х 14К х 14К х 12К х 82К х 82К х 81К х 44К х 18К х 8

раздельные−−//−−−−//−−−−//−−общие−−//−−−−//−−−−//−−

раздельныеобщие

Условное графическое обозначение КР537РУ3 (с раздельными линиями ввода-вывода):

− разрешение записи ( = 0 − запись; = 1 − чтение ).= 0 − запись, = 1 − чтение.

DI DO Режим работы100

х01

хDIх

ZZ

DO

ХранениеЗаписьЧтение

Условное графическое обозначение КР537РУ10 (с общими линиями ввода-вывода):

DIO − совмещенные линии могут работать на ввод и вывод данных. − управление выходными буферами.

DIO Режим работы1000

х011

хх10

ZDIZ

DO

ХранениеЗапись

Чтение без выдачиЧтение с выдачей

Принцип построения внутренней памяти МПС

А01

1011

D0

DICSWE

Ucc

GND

RAM 4K

RW/

А01

910

◊DIO

01

7

CSWEOE

Ucc

GND

RAM 16K

24

Page 25: Микропроцессорная техника

В МПС внутренняя память разделяется на постоянную и оперативную и размещается в области адресного пространства МП. Память имеет страничную организацию. Число ячеек в странице памяти определяется типом МС памяти, т. е. их емкостью. Выбор страниц осуществляется адресным селектором: AS.

Для сопряжения с ША и ШД используют буферы (внутренние и внешние).

26 = 64 страницы, 1024 ячейки = 1К памяти.Такая организация памяти упрощает построение схем.

А15 А14 А13 А12 А11 А10 А9 А8 … А1 А0 HEX Страница0 0 0 0 0 00 0 0 0 0 0

…0 0 0 0 0 0

0 0 … 0 00 0 … 0 1

…1 1 … 1 1

00000001…

03FF

0−ая страница

0 0 0 0 0 1…

0 0 0 0 0 1

0 0 … 0 0…

1 1 … 1 1

0400…

07FF

1−ая страница

0 0 0 0 1 0…

0 0 0 0 1 0

0 0 … 0 0…

1 1 … 1 1

0800…

0BFF

2−ая страница

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

Построение модуля ПЗУ

А15 А14 А13 А12 А11 А10 А9 А8 А7 А6 … А1 А0

Поле адресов страниц Поле адресов внутри страницы

ША

ШУ

16

8

CS A0–A9 ПЗУ (1Кх8) DO

AS

Вых. буфер

ШД

10

6

8

8

CS

CS A0–A9 ОЗУ (1Кх8) DI DO

AS

Буфер ввода-вывода DIO

10

6

8

CSMEMR

Структура ПЗУ Структура ОЗУ

MEMR

MEMW

DC 0

1

2

3

4

5

6

7

A

0

1

2

&

A0

A1

A2

“0”

“0”

“1”

CS0

CS1

CS2

CS3

CS4

CS5

CS6

CS7

25

Page 26: Микропроцессорная техника

МС ПЗУ делятся по типу выхода: выходные буферы с ОК; выходные буферы с ТС.

МС может иметь вход .1 вариант − модуль ПЗУ с буферированием данных (выходные буферы с ОК, нет

управляющего входа ).

2 Вариант − модуль ПЗУ без буферирования данных. Если выходные буферы имеют ТС, то можно обойтись без МС буферирования.

1-ая схема:

AS

ROM А

D0

CS

ROM CS

D0

A

F DI ◊ D0

OE

ША

ШД МПС

Внутр. ШД

DD1

DD2

DD3

16

8

8

Шинный формирователь

CS2

CS1

MEMR

Внутр. ШД

CS1

Адрес 1 Адрес 2

Данные из DD1 Данные из DD2

Дан. из DD1 Дан. из DD2

ША

ШД МПС

CS2

MEMR

AS

ША

ROM А ◊ D0

CS

ROM CS ◊ D0

A

DD1

DD2

8

ШД МПС

CS2

CS1

MEMR

1

1asCS2

asCS1DD3

DD4

8

26

Page 27: Микропроцессорная техника

2-ая схема: с использованием управляющего вывода (для МС КР573) :

Построение модуля ОЗУ

1. С раздельными линиями ввода-вывода: 1Кх1, 4Кх1. Каждая МС хранит отдельный бит: D7, D6,…,D1, D0. МС не имеет входа , при выборе МС ( = 0) информация из ячейки памяти поступает на выход.

1-ый метод: с использованием буфера для связи выходов МС с ШД системы (КР537РУ2, N=4Кх1).

CS1

Адрес 1 Адрес 2ША

Дан. из DD1 Дан. из DD2ШД

CS2

MEMR

asCS1

asCS2

AS

ROM А

OE D0

CS

ROM CS

OE D0

A

ША DD1

DD2

16

8

8

CS2

CS1

MEMR 8

MEMR

27

Page 28: Микропроцессорная техника

Емкость модуля N = 4Кх8. DD9 − шинный формирователь, служит выходным буфером.= 0 − запись данных;= 1 − чтение из DD1 ÷ DD8;

= 0 − чтение из ОЗУ.2-ой метод: стробирование сигнала выбора .

Режим100

х0х

хх0

101

100

ХранениеЗапись в ОЗУ

Чтение из ОЗУ

А01

1011

D0

DICSWE

Ucc

GND

RAM 4K

ША

А01

1011

D0

DICSWE

Ucc

GND

RAM 4K

A

0

1

7

TF

OE

F ↔

B

0

1

7

+ 5 В

DD9

D0

D1

D7

D0

D1

D7

DD2DD1

А0

А11

А0

А11

CS

ШД D0 D1

MEMR

ШД МПС

MEMW

WE

CS

MEMW 1

1 &MEMR

CSas

28

Page 29: Микропроцессорная техника

2. С общими линиями ввода-вывода: МС с входом (разрешение вывода). МС имеют байтовую организацию. КР537РУ8, РУ9, РУ10, РУ17 (N = 4Кх8 = 32 Кбит.

= 0 для 0000H ÷ 07FFH= 0 для 0800H ÷ 0FFFH= 0 для 1000H ÷ 17FFH

Адрес ОЗУ: 0800H ÷ 17FFH

Построение двухстраничного модуля памяти

Если требуется ОЗУ и ПЗУ небольшой емкости (несколько Кбайт), то можно обойтись 1 страницей ПЗУ и 1 страницей ОЗУ и исключить дешифратор адреса страниц. При этом селектором страницы будет некоторый разряд ШД.

1) А15 − селектор страницы (при А15 = 0 это ПЗУ, при А15 = 1 это ОЗУ).

WE

CS

MEMW 1

1 &MEMR

CSas

А01

1011

D0

DICSWE

Ucc

GND

RAM 4K

ШАDD1

А0

А11

CS

ШД D0

А01

1011

D0

DICSWE

Ucc

GND

RAM 4K

DD2

А0

А11

D1D0 D1

DD8

D7

А01

1011

D0

DICSWE

Ucc

GND

А0

А11

RAM 4K

D7

WE

DC 0

1

2

3

4

5

6

7

A

0

1

2

&

A11

A13

+5 В 5

CS0

CS1

MEMW

А01

910

◊DIO

01

7

CSWEOE

Ucc

GND

RAM 16K

А01

910

◊DIO

01

7

CSWEOE

Ucc

GND

RAM 16K

КР1533ИД7 DD1 DD2

MEMR

A0A0

A10A10

D0D0

D7D7

ШД МПС

ША

29

Page 30: Микропроцессорная техника

Адреса ПЗУ: 0000Н ÷ 07FFH ОЗУ: 8000H ÷ 87FFH

2) А11 − селектор страницы (при А11 = 0 это ПЗУ, при А11 = 1 это ОЗУ).Адреса ПЗУ: 0000Н ÷ 07FFH ОЗУ: 8000H ÷ 0FFFH

Модуль ввода-вывода

1

А01

910

◊D001

7

CSOEUPR

Ucc

GND

EPROM 16K

А01

910

◊DIO

01

7

CSWEOE

Ucc

GND

RAM 16K

ШД МПС

DD1 КР573РФ5 DD2 КР573РУ10

DD3КР1533ЛН1

ША

MEMW

MEMR

A0

A10

A15(А11)

D0

D7

D0

D7

A0

A10

A15(А11)

Повторный слой ПЗУ

ОЗУ

Повторный слой ПЗУ

ПЗУ

Повторный слой ОЗУ

2 К

2 К

2 К

2 К

2 К

07FF0800

0000

7FFF8000

0FFF

87FF

FFFF

ОЗУ

Повторный слой ОЗУ

Повторный слой ПЗУ

ПЗУ

Повторный слой ПЗУ

2 К

2 К

07FF0800

0000

0FFF

FFFF

Повторный слой ОЗУ

30

Page 31: Микропроцессорная техника

МПС связывается с внешними устройствами через порты ввода-вывода.Порт − это адрес устройства, из которого МП получает информацию или в которое МП

выводит данные. Это 8-разрядный регистр.Недостаток − невозможно изменять функции программно. Это неудобно при работе со

сложными внешними устройствами. Поэтому применяются более сложные порты на интерфейсных БИС.

В модуле ввода-вывода 3 основных элемента:1. адресный селектор, который декодирует адрес порта2. сам порт ввода или вывода3. схема управления порта.

Методы адресации портов:1. ) с раздельным полем адресов памяти и портов;

При обращении к портам: (IN port или OUT port), (port) = 00H … FFH.При работе с памятью: и .При работе с портами: и .Достоинство − максимальное использование адресного пространства МП, т. е. возможно

максимальное число ячеек памяти и портов ввода-вывода.Недостаток − для работы с портами имеется только 2 команды:

ввод: IN port (A) ← (port); вывод: OUT port (port) → (A).

2. ) с общим полем адресов памяти и портов − для работы с памятью и портами используются одинаковые команды, т. е. не разделяют программно ячейки памяти и порты. Для фактического разделения памяти и портов используют один из разрядов:

Признак: А15 = 0 − адрес ячейки памяти; А15 = 1 − адрес порта.

А15 А14 А13 А12 А11 А10 А9 А8 А7 А6 … А1 А0ШД

15 … 8 7 … 0

Поле адресов ячеек памяти 64 К А7 А6 … А1 А0

ША

7 … 0

Адрес порта

Поле адресов портов ввода 256

Поле адресов портов вывода

256

А15 А14 А13 А12 А11 А10 А9 А8 А7 А6 … А1 А0ША

31

Page 32: Микропроцессорная техника

Достоинство − одинаковые команды для работы с портами и памятью.Недостаток − уменьшение адресного пространства памяти.

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

Существует 2 метода кодирования адреса:1) С использованием позиционного двоичного кода (возможно максимальное число адресов −

256)00000000 = 00H00000001 = 01H…11111111 = FFH

Чтобы декодировать этот код применяются дешифраторы (используют частичное декодирование), что может привести к ошибке при работе схемы. 1110000 - 00000000 =

А7 А6 А5 А4 А3 А2 А1 А0 HEXх х х 0 0 0 0 0х х х 0 0 0 0 1

…х х х 0 0 1 1 1

00H01H…

07HПолное декодирование с 2-мя дешифраторами:

Поле адресов портов 32 К

Поле адресов памяти 32 К

7FFF 8000

0000

FFFF

А15 А14 А13 А12 А11 А10 А9 А8 А7 А6 … А1 А0ША

15 … 8 7 … 0

Адрес порта

DC 0

1

2

3

4

5

6

7

A

0

1

2

&

A0

A1

A2

А3

А4

“1”

CS00H

CS01H

CS06H

CS07H

ША КР1533ИД7

32

Page 33: Микропроцессорная техника

Адреса: 00…99 (должны быть в двоично-десятичном коде).Достоинство − полное декодирование адреса.

2) С использованием унитарного двоичного кода (используется только один 0 или одна 1).А7 А6 А5 А4 А3 А2 А1 А0 HEX0 0 0 0 0 0 0 10 0 0 0 0 0 1 00 0 0 0 0 1 0 00 0 0 0 1 0 0 00 0 0 1 0 0 0 00 0 1 0 0 0 0 00 1 0 0 0 0 0 01 0 0 0 0 0 0 0

01H02H04H08H10H20H40H80H

Используются инверторы, которые ставятся в линию, где адрес − 1.

Такой метод называется линейным выбором портов.Применение позиционного двоичного кода позволяет получить максимальное число портов

(256), но требует сложных схем дешифраторов. Использование унитарного двоичного кода упрощает декодирование, однако максимальное число портов = 8.

1

1

1

А7

А1

А0

ША

CS01H

CS02H

CS80H

33

CS91H

DC 0

1

2

3

4

5

6

7

8

9

1

2

4

8

DC 0

1

2

3

4

5

6

7

8

9

1

2

4

8

1

1

CS00H

А0

А1

А2

А3

А4

А5

А6

А7

ШАКР1533ИД6

Декодирует младшую тетраду

Декодирует старшую тетраду

Page 34: Микропроцессорная техника

Схемотехника модуля ввода-вывода

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

Порт вывода должен запоминать (фиксировать) выводимые данные.8-ми разрядные регистры КР580ИР82 − без инверсии на выходе, КР580ИР83 − с инверсией на

выходе:

DI ◊

D0

Ucc

GND

RG

к ШД МПС

от ВУ8

8

CS

IOR

ША

CS

Адрес порта

Данные из порта

ШД

IOR

IN Port

DI ◊

D0

Ucc

GND

RG

ШД МПС к ВУ

88

CS

IOW

ША

CS

Адрес порта

Данные из МПС

ШД

IOWСтарые данные Новые данныеD0

OUT Port

DI0

1

7

◊D00

7

STB

OE

Ucc

GND

RG

34

Page 35: Микропроцессорная техника

Высокая нагрузочная способность: I0ВЫХ ≤ 32 мА, I1

ВЫХ ≤ 5 мА.Эти регистры выполнены на основе 8 D-триггеров ( со статическим управлением) −

прозрачные фиксаторы.STB − строб (или тактовый вход), управляет входами D − триггеров (при STB = 1, DO = DI;

при STB = 0, триггеры запоминают данные на DI).ОЕ − управление выходными буферами ( при = 1, DO = Z; при = 0, DO = 1 или 0).

Диапазон чисел: 0,7∙10-19 ≤ |Х| ≤ 0,92∙1019

КР1533 – серия ТТЛШ

КР1533ИР33

Порт ввода:

Ст. Б Мл. Б S mСМ

Б3Б2Б1

Знак мантиссы

порядок мантисса

35

DI

STB

D0

С

ОЕ

Iвых0 ≤ 20 mAIвых1 ≤ 2 mA

1

STB=1D0

01

7

DI01

7

STB

OE

RGШД

Д0

Д1

Д7

От ВУ

+5 В

Page 36: Микропроцессорная техника

Порт вывода:

Адрес:Один порт ввода – 01HОдин порт вывода – 80HЛинейный выбор

Организация модуля ввода – вывода с общим полем адресов памяти и портов.

Если А 15 = 0, то адрес яч. памяти А15 = 1, то адрес порта

36

1

0OE D0

01

7

DI01

7

STB

OE

RG

Д0Д1

К ВУ

Д7

Д0Д1

Д7

ШД

IOWCS

Д0

Д1

Д7

КР1533ЛЛ1+5 В

11

D0

01

7

DI01

7

ОЕ

С

КР1533ИР33

ШДД0

Д1

Д7

От ВУ

КР1533ЛН1ША

А0

А7

IOR

КР1533ЛЕ1

11

D0

01

7

DI01

7

С

OE

RG

КР1533ИР33

IOW

К ВУ

Page 37: Микропроцессорная техника

IN portНе используются

OUT port

Соответственно стробы IOR и IOW тоже не вырабатываются.

Для раб. с порт.: STA, LDA, STAX, LDAX, MOV

Стробы: Порт ввода – 8001HПорт вывода – 8003H

A15 A14 A13 A12 A11 A10 A9 A8 … A2 A1 A0 HEX 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1

8001 8003

Ввод из порта 8001H в аккумулятор LDA 8001H; ( A )( 8001H )37

Адреса яч. памяти

Адреса портов

32К

32К

0000

7FFF8000

FFFF

ША

А0А1А2

А3А1

А15

DI01

7

ОЕ

STB

Д0

Д1

Д7

1

D0

01

7

RG

КР580ИР82

ШДД0

Д1

Д7

От ВУ

1

D0

01

7

DI01

7

STB

OE

RG

MEMW

К ВУ

+5 B

01234567

DCA012

&

MEMR

КР1533ИД7

H8001CS

H8003CS

Page 38: Микропроцессорная техника

Ввод из порта 8001H в регистр С

LXI H, 8001HMOV C, M; ( C ) ( 8001H )

Вывод из аккумулятора в порт 8003H

STA 8003H; ( 8003H ) ( A )

Вывод из регистра Д в порт 8003H

LXI H, 8003HMOV M, Д; ( 8003H ) ( Д )

Построение модуля прерывания.

В МПС предусм. режим, когда по запросу ВУ МП прерывает выполнение основн. программ. и переходит к подпрограмме обслуживания прерывания ( ISR ).

Для выполнения подпрограммы прерывания необходимо:- Прерывание должны быть разрешены ( МП реагирует на запрос к прерыва -нию – высокий

уровень на входе INT МП ).- Прерывание могут быть разрешены и запрещены программой:EI – команда разрешения прерывания.DI – команда запрещения прерывания.- Прерывание автоматически запрещается:1. После начальной установки МП, т.е. после выполнения RESET.2. При входе в подпрограмму обработки прерывания. Если прерывание разрешены, то МП заканчивает выполнение очередной команды и

переходит к машинному циклу обслуживания прерывания:1.) МП помещает в стек содержимое РС ( это адрес команды, кот. он должен был

выполнять – это адрес возврата в основ. програм. )2.) Из словосостояния для машинного цикла вырабатывается строб –

подтверждение прерыванию – этот строб использ для сообщения МП адреса подпрогр. обработки прерывания. Адрес обработки прерывания наз. вектором прерывания.

2 метода 1. Невекторный – при этом сообщается указатель вектора прерывания (RST N) 2. Векторный – использ. команда CALL addr. Суть 1 – го метода – по стробу INTA на ШД сист. Поступает команда RST N, в кот.

содержится указатель вектора прерывания.

RST N 7 6 5 4 3 2 1 01 1 + + + 1 1 1

Указатель вектора прерыв.

+ + +RST 0 --- 0 0 0RST 1 --- 0 0 1

……………….RST 7 --- 1 1 1 Это уровень прерывания

38

Page 39: Микропроцессорная техника

Адрес прерывания: N – 8 – десятичное число

RST N

1 1 +

+

+

1 1 1 Регистр команд

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

РС 0 0 0 0 0 0 0 0 0 0 + + + 0 0 0

Если, например, RST 1, то 111001111 и РС=0008Н

После выполнения подпрограммы прерывания МП должен возвратиться в основную программу, поэтому подпрограмма ISR должна заканчиваться командой RET, по которой МП извлекает и РС, адрес возврата в осн. программу. Перед командой RET должна стоять команда EI.

Как только прерывание разрешены и происходит возврат в основную программу, МП анализирует вход INT, если ШТЕ = 1 будет бесконечный цикл обслуживания прерываний.

39

DI RG01 D02 03 14 2 5 36 47 5 6 STB 7OE

+5 В

ШД МПСКР580ИР82

Д0Д1Д2Д3Д4Д5Д6Д7

“1”“1”“1”“1”

“1”“1”

“1”

INTA

DI RG

D0

OEМодульпроцессораINT INTA

S T

DC

R

&

К ШД

INT

“1”

+5 B

C1 +

IRQ

INT

Page 40: Микропроцессорная техника

R1C1 – служит для запрещ. прерыв. при включ. электропитания. На практике часто необходимо обслуж. несколько ВУ, т. е. каждое ВУ должно иметь свою

подпрограмму обслуживания прерывания, поэтому возможно подача сразу нескольких запросов на прерывание.

Процедура анализа запросов наз. орбитражём. Имеется несколько методов:- приоритетный – каждому запросу присваивается свой номер, и первым запросом

обслуживается тем, кот. имеет больший приоритет. МС КР580ВН59 – позволяет программно установить приоритеты 8 запросов, установить

порядок. Недостатки МП ВМ80:1. Необходимость 3 – х источников питания.2. Необходимость 2 – х тактовых последователей, импульсов амплитудой 12В3. Сложность организации прерывания.4. Сложность организации сигналов управления.

Улучшенный i 8085 А – n – МОП I 80C85 A – КМОП

КР1821ВМ85А

Микропроцессор ВМ85.40

Page 41: Микропроцессорная техника

DIP – технология Характеристики:1. работает при одном напряжении, питания +5В.2. имеет внутр. тактов генератор, внутрен. такт. Частота 0,5 – 3 мГц3. удобная система прерывания 4. отрабатывает сигнал управления системой5. имеет возможность последовательного ввода и вывода данных6. имеет такую же систему команд, как и ВМ80, но добавлены 2 команды.

X1, X2 – выводы для присоед. времязадающей цепочки ( кварцевый генератор ). – вход сигн. нач. установки. RESOUT - выход сигн. нач. установки. READY – вход сигн. готовности SID – вход последов. данных. SOD – выход посл. данных.

TRAP RST 7.5RST 6.5 Входы запросов прерываний.RST 5.5INTR

HOLD – вход запроса захвата AD0…AD7 – совмещённые линии данных и мл. байтва адреса.UCC

+5B входы питания

GND

0B

41

X1 CPU UCC

X2 GND

RESIN CLK

READY SOD

SID S0 S1TRAP I0 / MRST 7.5RST 6.5 ALERST 5.5 WRINTR RD INTAHOLD HLDAAD RESOUT01 A… 87 …. 15

Page 42: Микропроцессорная техника

CLK – выход сигн. тактов частоты S0 сигналы состояния МП. S1 I0 / M – сигн. обращения к портам или к памяти, если I0 / M = 1 – к портам I0 / M = 0 – к памяти ALE – разрешение фиксации адреса.

стробы записи чтения

– строб подтверждения прерывания HLDA – сигн. подтверждения захвата A8…A15 – линии вывода ст. байта адреса. Чтобы ША была 16 – разр. к линиям АД присоед. внешн. регистр для фиксации адреса.

МП имеет внутр. тактов. генератор, част. кот. определяет внешн. времязадающая цепочка.

FCLK = 0.5…3 мГцF ZQ =1…6 мГц

Пример: маш. Цикл записи в память: MOV M, B

42

DI RG D0

C

А8…А15 СРU

АД0…АД7

ALE

8

8 8

8

8

A8...A15

D0…D7

A0...A7

1

Генератор тактовых

импульсов

Д Т

С

ZQX1

X2

X1

X2

L C

X1

X2

fсlk

X1

R

+5 B

fвнеш

Page 43: Микропроцессорная техника

В 1 – ом маш. такте выдаётся ст. байте адр. на мен. А8…А15, на АД0 – АД7 выдаётся мл. байт адр. в течении такта Т1. Одновременно выраб. строб ALE и по срезу строба во внеш. регистре запоминается мл. байт адреса. Во 2 и 3 тактах на линии АД0 – АД7 выводятся из МП. По стробу WR эти данные записываются в память. На выводе IO / M – низк. уровень, т. е. сигн. подтвержд. обращ. к памяти.

Система прерываний МП ВМ85.Наименование

выводаПриоритет Адрес перехода при

прерывании (адрес ISR)Активный сигнал для выбора

TRAP 1 0024 H Перепад (01) или высокий уровень

RST 7.5 2 003C H Перепад (01)RST 6.5 3 0034 H

Высокий уровеньRST 5.5 4 002C HINTR 5 согласно коду RST N

Все запросы прерываний принято делить на 2 вида:- маскируемые- немаскируемые

Маскируемые наз. запрос, кот. можно программно запрет или разрешение. Если прерыв. невозможно запретить программно оно наз. немаскируемым. TRAP – вход запроса немаскир. прерывания. Остальные прерывания наз. маск. Немаскир. прерыв. использ. для реакции МП на аварийныеситуации. Приоритет устанав. Порядок обслуж. прерываний при одновременном их поступлении. Чтобы представить как распологаются вектора прерываний в памяти составные табл.

43

T1 T2 T3

CLK

A8 –A15

AD0-AD7

ALE

Старший байт адреса

Данные из МПМл. байт адреса

Фиксация младшего байта

01

0000Н RST 0

0008H RST 1

001CH RST 2

0018H RST 3 0020H RST 4

0024H TRAP

0028H RST 5

002CH RST 5.5

0030H RST 6 0034H RST 6.5

0038H RST 7

003CH RST 7.5

Page 44: Микропроцессорная техника

TRAP и RST – называют аппаратными векторными прерываниями (не треб. дополнит. МС).

Ввод и вывод последовательных данных.

SID – вводSOD – выводИспользуются команды МП: RIM и SIM.

“ 1 ” в 6 – ом разр. аккум. разрешает вывод данных. SIM – установить маску прерывания использует содержимое аккумулятора и используется для:1. Программирование масок аппаратных прерываний: RST 7.5; RST 6.5; RST 5.5.2. Для сброса триггера защёлки, воспринимающего фронт сигн. по входу RST 7.5.3. Для вывода данных на выход SOD – данные на этом выводе запоминаются на триггере

защёлки.

SID

RIM

1 x ….. x

0 1 х ….. х

SIM

МП

SOD

44

МП

“1”

До выполнения После выполнения

Аккумулятор

7 6 0

ПослеДо

Аккумулятор

7 6 5 0

“0”

Page 45: Микропроцессорная техника

Пример: требуется разрешить прерыв. по вх. RST 7.5 и RST 6.5, выполнить сброс триггера RST 7.5, запретить прерыв. по вх. RST 5.5. MVI A, 00011001 B SIMВывести “1” на вывод SOD: MVI A, 11000000 B SIM RIM – чтение маски прерывания.

Пример: прочитать данные со входа SID. RIM ANI 10000000 B; в разряде Д7 данные со входа SID.

Построение модуля центрального процессора МП ВМ85.

Для работы МП в сист. необх.:1. Обеспечить синхронизацию тактов генератора. 2. Обеспечить начальную установку МП. 3. Сформировать ША, ШД и ШУ.

ZQ1 – служит для задания тактов частоты МП: FCLK=1/2 fZQ FZQ=1…6 мГц

45

SOD SOE X RST7.5 MSE M7.5 M6.5 M5.5

7 6 5 4 3 2 1 0Аккумулятор

Вывод данных в SOD

Разрешение вывода “1”

Разрешение установки маски (“1”)

Сброс триггера RST 7.5 (“1”)

Маски прерывания (“1” – маска установлена)

SID I7.5 I6.5 I5.5 IE M7.5 M6.5 M5.5

Маски прерывания (“1” – маска установлена)

Флаг разрешения прерывания (“1” - разрешено)

Прерывание в ожидании

Данные со входа SID

X1

X2READY

RESIN

TRAPRST7.5RST6.5RST5.5INTR

HOLD

CPU

VD1

SB1

R1

+5 B

10K

+ C1

10mk

ZQ1

R2 4.7k

Запросы прерыва-ния

Page 46: Микропроцессорная техника

R1, C1, VD1 – для создан. сигн. начальн. установки при включении электропитания. TЗАР> ЗТ

SB1 – для нач. установки в произвольный мом. Времени. VD1 – для быстрого разряда рез – та R1 при пропадании напряжения питания. R2 - через него подаётся высок. уровень на вход Ready т. е. создаётся сигнал готовности.

Если хотябы один из запросов на прерывание не присоединён, его надо соединить с общей шиной. HOLD = 0 – т. е. запрос захвата шине используется.

Формирование ШУ: В МПС для работы ус – в необходимо 4 системных сигнала ( для управления памятью и портами ) МП ВМ80 формирует:

Сигнал RD WR IO / M01

01

10

10

00

11

КР1533 ( 74ALS ): IВХ 0 ≤0,2 mA IВХ !≤10 mkA

К155 ( 74 ): IВХ 0 ≤1,6 mA

IВХ 1 ≤40 mkA

Формирование ША : 1. мл. байт адреса выдаётся на совмещённую шину АД0 – АД7 и он должен запоминаться в спец.

регистре.2. Необходимо обеспечить высокую нагруз. способность ША, для этого ставяться буферные эл –

ты, кот. усиливают вых. токи МП. IВЫХ 0≤2 mA IВЫХ 1≤50 mkA

Вых. буферы – регистры или шинные формирователи.

Регистры: КР1533ИР3346

1

1

1

1

1

RD

WR

IO/

КР1533ЛЛ1

MEMR

MEMW

IORКР1533ЛН1

Page 47: Микропроцессорная техника

ИР22

IВЫХ 0 ≤20 mAI ВЫХ 1≤100 mkA

Шин. Формир.: КР1533АП5

DD2 – служит защёлкой мл. байта адреса и одновременно усиливает сигнал по току, формирует мл. разряды ША. DD1 – служит усилителем сигналов ст. байта адреса, формирует ст. байт ША.

Формирование ШД: ШД двунаправлена. Для формирования сигналов ШД использует спец. МС – двунаправленные шинные формирователи:КР1533АП6: IВЫХ 0 ≤ 20 mA I ВЫХ 1 ≤ 100 mkA

47

DI RG0 D01 0… 17 ….. 7COE

DI RG0 D01 0… 17 ….. 7COE

ША МПС

А8915

017

ALE

DD1

DD2

A8A9

A15

A0

A1

A7

A F B01 0… 17 ….. EAB 7OE

ШД МПС

АД017

RD

КР1533АП6

Д0Д1

Д7

Page 48: Микропроцессорная техника

Направление передачи сигн. определяется сигналом на входе EАВ:

Если EАВ = 1, то А В Если Е АВ = 0, то А В

Имеется воз – ть переводить буферы в Z – состоянии: при ОЕ = 1, то Z – сост. Когда МП читает дан., то В А, когда записывает – А В ( для этого использ. вых. RD ) Можно исключить 2 – направ. буфер ШД и формирователь старш. Байта адреса ( если нагрузка на шине мала ) Кроме токовой нагрузки для МП важна ёмкостная: CН ≤ 150 пФ Если ёмкость превышает, то импульсы вместе прямоугольных становяться искажёнными:

Например, у КР1533: CВХ = 10 … 20 пФ С МОНТ = 50 пФ

Система команд МП.

МП имеет 244 команды. Отличных – 78. По ф – циям:1. Команды перемещения данных.2. Команды арифметические.3. Команды поразрядной обработки данных.4. Команды передачи управления.5. Команды управления МП.

Команды хранятся в памяти МП. Каждая команда – это комбинация двоичных данных. Но удобнее использовать 16 – ричный формат. Операнды – это могут быть данные или адреса памяти и портов. По фориату команды: 1 – байтные 2 – байтные 3 - байтные

48

КОП

КОП Дан. или адр.

15 8 7 0

7 0

Б1 Б2

КОП Ст. байт Мл. байт

23 Б1 16 15 Б2 8 7 Б3 0

Адреса или данные

Adr

Adr+1

Adr+2

Б1

Б3

Б2

Мл.б.

Ст.б.

Адреса или данные

Page 49: Микропроцессорная техника

Способы адресации – определяют методы операндов:1. Непосред. адресация – данные указываются непосредственно в команде.2. Прямая адресация – в команде указывается адрес ячейки памяти, где нах. или куда будут

пересылаться данные.3. Регистровая прямая – в команде указываются название регистров, где нах. данные.4. Косвенная регистровая – адрес яч. памяти нах. в регистровой паре ( чаще всего HL ).5. Стековая – используется при работе со стеком – адресация ячеек стека идёт через указатель

стека SP.

Команды перемещ. дан. хар – но, что дан. только перемещаются из одного объекта в др. ( дан. при перемещении копируются ). А) Команды пересылки, загрузки, запоминания и обмена. Б) Команды операций со стеком. В) Команды ввода – вывода. Если дан. перемещ. между регистр. – это пересылка; если из памяти в регистр – это пересылка рег., перемещ. из рег. в память – это запоминание.

- перемещение данных- обмен данными - R произвольный регистр - ( R ) содержимое регистра - RP регистровая пара- ( RP) содержимое регистровой пары- М ( Адрес ) содержимре ячейки памяти с адресом - М ( HL ) содержимое ячейки памяти, адрес который нах. в рег. паре - D8 или d8 8 – разр. данн. ( 1 – байт. )- D16 или d8 16 – разр. дан. ( 2 – байт. )- А16 или ADR 16 – разр. адрес- PORT адрес порта

А) MOV, MVI, LXI, LDA, STA, LDAX, STAX, LHLG, SHLD LHLG, SHLD XCHG – ( HL ) ( DE ) MOV R1, R2 ( R1 ) ( R2 ) R1, R2: A, B, C, D, E, H, L, M7 6 5 4 3 2 1 00 1 D D D S S SКод ком.

Код прие-мника

Код источ-ника

0111 1101 = 7DHMOV A, L ( A ) ( L )

000 – В001 - С010 - D011 - E

49

Page 50: Микропроцессорная техника

100 - H101 - L110 - M111 – A

Ком пересылки не действуют на флаги МП. Б) Стек – оюл. опер. памяти, адресация кот. осущ. с помощью рег. – указателя стека.

Для определения вершины стека надо загрузить указатель стека и указать адрес вершины стека: LXI SP, 100A H

Команды для раб. со стеком: PUSH RP – занести в стек содержимое регистровой пары.

PUSH H ( HL ) PUSH B ( BE ) PUSH D ( DC ) PUSH PSW ( PSW ) = ( A ), ( F )При занесении в стек:

1. Указатель стека декрементируется : ( SP ) ( SP ) – 1 : 1009H 2 . Старший регистр пары заносится в ячейку по новому адресу ( SP ) ( H ) ( 1009 H ) ( H ) 3. Указатель стека вновь декрементируется: 1008H. 4. Заносится по этому адресу мл. регистр пары ( SP ) ( L ) ( 1008H ) ( L )

PUSH PSW ( A ) ( F ) = 33H, 02H

1. ( SP ) ( SP ) – 1 1007H 2. ( SP ) ( A ) ( 1007H ) ( A ) 3. ( SP ) ( SP ) – 1 1006H 4. ( SP ) ( F ) ( 1006H) ( F )

POP RP – извлечь из вершины стека 16 – разр. данные и помещаем в рег. пару. Извлечь надо в обратном порядке: PUSH H PUSH PSW …………..

50

SP

1007

1008

1009

100А XXXX Вершина стека

Адрес ОЗУ

( HL ) = 5522 H

1008 221009 55100А

(L) – новая вершина стека(Н)

SP

SP 1006 02H1007 33H

(F) – новая вершина стека(A)

Page 51: Микропроцессорная техника

POP PSW POP H POP PSW 1. МП перемещает из верш. стека содержимое в регистр пары ( F ) ( SP ): ( F ) (1006H) 2. Указатель стека инкреминтируется : ( SP) ( SP ) + 1: 1007H3. Дан. из вершины стека пересыл. в старший рег. пары: ( А ) ( SP ) : ( A ) ( 1007H )4. Указ. стека вновь инкреминтируется: 1008H

POP PSW – изменяет флаги МП

В) Команды ввода и вывода: IN PORT – ( A ) ( PORT ) OUT PORT ( PORT ) ( A )2. A ) команды сложения 8 разр. чисел ( ADD, ADC, ADI, ACI ) Б ) команды вычесления 8 – разр. чисел ( SUB, SBB, SBI ) В ) команды сложения 16 – разр. данных DAD – данные складываются с регистровой парой овой парой . DAD H – ( HL ) ( HL ) + ( HL ) DAD B – ( HL ) ( HL ) + ( BC ) DAD D – ( HL ) ( HL ) + ( DE ) DAD SP – ( HL ) ( HL ) + ( SP ) Г ) команды инкремента ( INTR, INX ) Д ) команды декремента ( DCR, DCX ) Е ) команды десятичной коррекции данных ( DAA )

3. A ) ком. Логические: ANA ANI - лог. И ORA, ORI – лог. искл. ИЛИ CMA - лог. НЕ Б ) ком. cдвига: RLC, RRC, RAL, RAR В ) ком. сравнения CMP, CPI: CMP R – сравнен. с рег. CMP M – сравн. с ячейками памяти CPI – сравн. с непоср. данными 0, то Z = 1 ( А ) – ( R ) = < 0, то CY = 1 > 0, то Z = 0 , CY = 0Г) команды операции с флагом переноса: STC: (CY) 1 и CMC: (CY) ( )

3 группы: А) Ком. перехода Б) Ком. вызова подпрограммы В) Ком. возврата из подпрограмм 2 вида:- безусловные команды – выполняются всегда- условные ком. – выполняются при истинности усл – ия, указанного в ком.

Условие – это состояние флагов МП.

Условие выполнения команды

Флаг ( признак ) Мнемоника

51

Page 52: Микропроцессорная техника

Равенство 0Неравенство 0

ПереносНет переносаНечётность

ЧётностьПоложительностьОтрицательность

Z =1Z = 0

CY = 1CY = 0P = 0P = 1S = 0S = 1

ZNZC

NCPEPOPM

Команды перехода: А ) безусловные: JMP ADR; в РС загружается адрес, указанный в команде: ( PC ) ADR

PCHL ; ( PC ) ( HL ) Б ) условные: Jcond ADR; (где cond – это мнемоника: JZ, JNZ, JC, JNC, JPE, JPO, JP, JM)

1. МП проверяет флаг, котор. указан в усл – е истинно, то ( PC ) ADR; а если ложно, то команда игнорируется: ( PC ) ( PC ) + 3 Команды вызова подпрограмм: А ) безусловные Б ) условные

А. CALL ADR

1. МП заносит в стек содержимое РС – это будет адрес возврата из подпрограммы – PUSH PC

2. В PC заносится адрес, указанный в команде – JMP ADR

ADR – это первая команда подпрограммы – 0000Н….FFFFHRST N N = 0, 1, 2, 3, 4, 5, 6, 7ADR = N * 8 ( десятичное число )

Команда Адрес п .п.RST 0RST 1RST 2RST 3RST 4RST 5RST 6RST 7

08162432404856

0000H0008H 0010H 0018H 0020H0028H 0030H0038H

Б. Ccond ADR (где cond – мнемоника условия)

1. проверяется флаг, указанный в команде: если усл – ие истинно, то выполняется вызов п. п. по адресу, указанному в команде ( в стек заносится содержимое РС и в ( РС ) ADR )

3. если усл –ие ложно, то команда вызова игнорируется: ( PC ) ( PC ) + 3

52

КОП Ст. б Мл. б

Б1 Б2 Б3

Адрес

Page 53: Микропроцессорная техника

Команды возврата из п. п. : А ) безусловные

Б ) условные

А. RET возврат

МП извлекает из вершины стека 16 – разр. число и помещает его в РС, при этом происходит возврат в основную программу: 1. ( РС ) ( SP ) 2. ( SP ) ( SP ) + 1 3. ( PCH ) ( SP ) 4. ( SP ) ( SP ) + 1

Б. Rcond (где –cond - мнемоника условий)

1. проверяется флаг МП – если усл – ие истинно, то выполняется команда возврата ( из стека загружается РС – адрес возврата )

2. если усл – ие ложно, то команда возврата игнорируется: ( PC ) ( PC ) + 1

5 EI – ком. разрешить прерыван. ( т. е. разрешает МП реагировать на сигналы по входу INT) EI – вызывает установку внутр. триггера INTE 1 ( т. е. прерывание разрешены ) DI – запрещение прерываний ( т. е. МП не реагирует на запросы прерыв., поступающие на вход INT ), триггер INTE 0 NOP – пустая команда ( не производит никаких действий ) – использ. для выполнения задержек и для лотание дыр в программе. HLT – останов МП – ША и ШД переходят в Z – сост., т. е. МП отключается от системной шины. Выход: – запрос прерывания

- сигнал нач. установки

Язык Ассемблера.

Это язык символического кодирования, он позволяет заменить действительные данные или адреса символическими языками, этот язык удобен для компьютера. Этот язык наз. языком низкого уровня (или машинно – зависимым). Для каждого МП нужен свой язык. Сущ. языки высокого уровня(алгоритмические), котор. не зависят от МП. Достоинства Ассемблера – позволяет max использовать возможности МП, программы быстрые и короткие. Недостатки - требует высокой квалификации программиста. Все программы сост. Из предложений (строки на экране компьютера). Каждое предложение разбивается на поля:Метка операция операнды комментарийИспользуются символические имена:- постоянные имена- имена пользователя

Постоянные имена – это мнемокоды команд, название регистров и определённых операций. Имена пользователя – те, кот. даёт сам пользователь. Имена сост. из посл – ти лат. букв и цифр, начало – буква, число букв – 32: ABBA ABBA _ ACA

53

Page 54: Микропроцессорная техника

MET1 В поле метки стоит имя, кот. явл. символич. адресом яч. памяти. Признак метки двоеточие после имени.

АВВА: Операция 1. Мнемокод команд.

3. Псевдокоманды Ассемблера ( это указания Ассемблеру )

В поле операнды:1. имена регистров МП2. данные в какой – либо сист. счисления:

если 10 сист. – 12 или 12Д если 8 сист. – 12Q

если16 сист. – 12Н ( если начинается с буквы надо ставить 0 АВН 0АВН)

ASCII код для кодирования буквенно – цифровой инф –ии (используется апостроф) – ‘ C ’3. символ. имена данных или ячеек памяти

АВВА TEMP

4. различные символы, арифметич. и лог. операций +, -, /, *, NOT, AND, OR,…

Комментарий – описываются действие, выполняемые в данном предложении, отделяется ; , не воспринимается транслятором.

Псевдокоманды Ассемблера.

Псевдокоманда – это указание транслятору. Псевдокоманды не выполняются МП. ORG, END, EQU, SET, DB, DW, DS, MACRO, ENDM, ORG. < Метка: > ORG Выражение Скакого адреса начинается размещение программы. ORG 100H Если ORG отсутствует в начале программы, то по умолчанию нач. адрес программы – 0000Н < Метка: > END конец программы имя EQU выражение присваивает символич. имени какое – либо значение CONST EQU 25H MEM EQU 2000H Имена EQU не должны переопределяться программой Имя SET выражение CONST SET 25H ……….. CONST SET 45H Возможно изменение имени. < Метка: > DB список резервирует 1 яч. памяти и записывает в неё значение из списка. TABLE: DB, 01H, 07H, 0ABH < Метка: > DW выражение Резервирует 2 соседние ячейки и размещает в них 2 – х – байтовое число из списка < Метка: > DS выражение Резервирует в памяти определённое число ячеек, которые определяются выражением ( при этом в

выделенные ячейки никаких значений не заносится ) BASE : DS 100

54

Page 55: Микропроцессорная техника

ORG 1000H Base : DS 100

DELAY – имя п. п. задержки ……. П. п. задержки NUM + EQU 100 ORG 50H DELAY : MVI C, NUM LOOP : NOP DCR C JNZ LOOP; цикл если ( С ) = 0 RET; возврат из п. п. END; конец программы MACRO и ENDM используются для создания макроср – в. часто в прогр. есть отдельные фрагменты, котор. часто повторяются – их записывают как макрокоманды.

Имя MACRO программы ……….. ENDM RCHANGE : MACRO R1, R2 MOV A, R1 MOV R1, R2 MOV R2, A ENDM Обмен ( В ) и ( С ) – RCHAHGE B, C XCHANGE: MACRO X1, X2 PUSH X1 PUSH X2 POP X1 POP X2 ENDM Обмен между ( ВС ) и ( DE ) XCHANGE B, D

Методика разработки программного обеспечения.

2 класса средств:

1. Аппаратные2. Программные ( ПО )

Этапы разработки ПО:

1. Определить и проанализировать задачу.2. Составить алгоритм реш – ия задачи.3. Составить структурную схему ( блок – схему ) алгоритма.

55

1000BASE100

Page 56: Микропроцессорная техника

4. Записать программу на языке Ассемблера.5. Транслировать программу в машинные коды.6. Занести коды программы в память МПС.7. Отладить программу.8. Документировать программу.

На 1 – ом этапе уточняются отдельные детали задачи (на разговорном языке). Задача разбивается на блоки. Методы задания алгоритмов:

1. Словестный.2. Табличный метод – использование таблиц для сравнения ( пример – таблица истинности )

С помощью формул – при использ. комбинационных схем.

Графический метод – задание алгоритма с помощью геометрических фигур, называемых блоками. Последовательность блоков и соединительных линий образуют структурную схему или блок – схему (БСУ ).

Алгоритмы : 1. Линейные2. Разветвлённые3. Циклические.

Линейные алгоритмы не содержат усл – ий, имеют 1 ветвь и изображ. лин. посл – тью связанных друг с другом блоков. Разветвлённый алгоритм содержит 1 или несколько логических условий, может иметь несколько ветвей обработки. Проверка усл – ий – это проверка флагов. Пример: в МПС поступает 1 – байтн. число со знаком. Если оно полож. – выводится в 1 –ый порт, если отрицат. – во 2 – ой порт.7 6 5 4 3 2 1 0SS = 0 – положительное

56

Блок обработки

Начало

Конец

Блок обработки п. п.

Блок ввода и вывода

Блок условий

Нет Да

1

Page 57: Микропроцессорная техника

S = 1 – отрицательное

PORT – Порт вводаOPORT1 и OPORT2 порт вывода

IN IPORT; ввод данных ORA A; установка флагов JP MET1; переход на MET1, если S = 0 OUT OPORT2; вывод HLT MET1: OUT OPORT1; вывод HLT Цикл алг. содерж. 1 или нескол. циклов. Цикл – это посл –ть повторяющихся команд. Имеется счётчик цикла или переменная – показывает сколько раз должен повторяться цикл.

N = 1…256 раз – в качестве счётчика цикла использ. любой из регистров.…MVI C, NUMBER; загрузить счётчик циклаLOOP: NOP NOP DCR JNZ LOOP; цикл если ( С ) 0N = 1…65536 – использ. регистр. пару ( BC, DE, HL )

57

Начало

Ввод из порта

S = 0

Вывод в порт 1Вывод в порт 2

Конец

Загрузить счётчик циклов

Блок обработки

Модификация переменного цикла

Счётчик цикла > 0

Тело цикла

Page 58: Микропроцессорная техника

… LXI B, NUMBER; загруз. счётч. Цикла LOOP: NOP NOP и т. д. 1. Проверить на 0 рег. В и если истинно, то проверить рег. С:

LXI B, NUMBER LOOP: NOP NOP DCX B MOV A, B CPI 0 JNZ LOOP; цикл, если ( В ) 0 MOV A, C CPI 0 JNZ LOOP; цикл, если ( С ) 0

( В ) = 000000001 ( С ) = 100000000 100000001

Процедура обработки данных.

МП обрабатывают разные данные.

Массивы – это набор эл – ов данных одинаковой длины, кот. расположены в области смежных ячеек памяти.

58

Начало

Инициализация

Обработка

Модификация

Эл – нт послед.

Конец

BASE

Эл –нт 0 BASE – адрес начального эл – та массиваIND - индекс массива

Эл – нт 1 ADR = BASE + IND – адрес текущего эл – та…………. R – число байт

Эл – нт N ADR = BASE + k * IND

Page 59: Микропроцессорная техника

Для операций с массивами использ. 2 вида переменных:- указатель яч. памяти POINTER ( PTR )- счётчик, в кот. содержится индекс массива COUNTER

Пример: поиск max числа в массиве 1 – байтн. целых чисел без знака

Длина массива в ячейке LENGTH В качестве счётчика – рег. В Указатель памяти – рег. пара HL Нач. адрес массива – BASE

БСА:

LDA LENGTH; пересылка длины мас. MOV B, A ; рег. В – счётчик LXI H, BASE ; HL – указатель памятиNEW MAX: MOV A, M NEXT: DCR B JZ DONE; переход, если (В) = 0 INX H CMP M

59

Начало

Инициализация: ( HL ) BASE( BC ) ( LENGTH )

( A ) (( HL ))

( B ) ( B ) - 1

B = 0

( HL ) ( HL ) + 1

( A ) < (( HL ))

Конец

Да

Да

Нет

Нет

СY=1

Page 60: Микропроцессорная техника

JC NEWMAX; если (CY) = 1 JMP NEXT DONE: HLT; останов

Для хранения переменных можно использовать ячейки памяти (если не хватает регистров)

LXI H, BASE SHLD PTR LXI A, NUMBER STA COUNT ….. LHLD PTR; загрузить указатель памяти LDA COUNT; загрузить счётчик MOV B, A … SHLD PTR; запоминание эл – ов MOV A, B STA COUNT

60

PRTPRT1 + 1

COUNT

ячейки хранения адреса

яч. хранения счётчика эл – ов

Датчик

D0 0 1 … 7 8 9

DI RG D001… …7 7

DI RG D00 0 1 1… …7 7

ШД МПС

Х(t)

л/# Д0Д1

Д7

Д0Д1

Д7

Порт 1

Порт 2

BASE XXXX XXXX мл. б.

0000 00ХХ ст. б.

PTR указатель памятиPTR+1COUNT счетчик

Page 61: Микропроцессорная техника

Инициализация LXI H, BASE SHLD PTR; запоминание указателя памяти MVI A, LENGTH; загрузить число эл – ов STA COUNT; заполнить счётчик …… CYCLE: LHLD PTR IN PORT 1; ввод мл. б. кода АЦП MOV M, A INX H IN PORT 2; ввод ст. б. кода АЦП ANI 00000011 B, выделить разр. D1, D0 MOV M, A INX H SHLD PTR LDA COUNT PCR A STA COUNT INZ CYCLE DONE:

Виды программного обеспечения ( ПО ) МПС.

2 вида : 1. прикладные2. системные программы.

Прикладные прогр. выполн. числовую и символьн. обраб. Данных Прикл. прогр. разраб. пользователь. Систем. програм. Организует работу внутр. уст – в. Совок – ть сист. программ образуют операционную систему ( ОС ). Имеются стандартные ОС: MS DOS, WINDOWS и др. Они разрабатываются проффесионалами ОС занимают большой объём памяти. ОС для простых МПС ( типа микроконтроллеров ) проще, чем универс. ОС. В памяти они могут занимать до нескольких Кбайт. Простые ОС делят на 2 группы: 1 – ая группа выполняет связь сист. с внешн. устр – ми. Программы, выполняющие ввод – вывод ( связь с ВУ ) наз. драйверами. 2 – ая группа выполнят связь с оператором. Используется язык директив. Такие простые ОС часто наз. мониторами.

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

Часто встречается посл – ти команд, кот. выполняют одну ф – цию, используя разные данные. Эти посл – ти организуют в подпрограмме котор. может вызываться из основн. программ. Подпрогр. – это законченный сегмент ( или модуль ) прграммы, кот. можно вызвать любое число раз. 273

61

Page 62: Микропроцессорная техника

Достоинства : 1. Сложную прогр. можно разделить на небольшие модули, разработка кот. может

производиться различными программистами.2. Каждую подпрогр. можно отладить отдельно.3. Подпрограмма сокращает длину общей программы.4. Отлаженные подпрогр. можно хранить в библиотеках и использовать в разных задачах.

Недостатки : 1. вызов и возврат подпрогр. затрачивает время, поэтому маленькие подпрогр. неэффективны. Вызов подпрогр. осуществляется командой: CALL SUBR адрес

При вызове подпр. МП заносит в вершину стека содержимое РС ( адрес след. команды за командой CALL ) – это адрес возврата.

RET – команда возврата ( при этом из вершины стека МП извлекает 2 – байтовое число и помещает в РС и происходит возврат в основ. программу ) Необходимо, чтобы подпрогр. не меняла содержимое регистров, кот. использ. в основн. программе. Для этого надо сохранить содержимое регистров:

1. сохранить в стеке содержимое регистр. перед вызовом подпрогр., после восстановить.2. В самом начале самой подпрогр. занести в стек содержимое регистров и перед выходом из

подпрогр. восстановить содержимое этих регистров.

SUBR: PUSH PSW; занести в стек ( A, F ) PUSH B; занести в стек ( В, С ) …… POP B; восстановить ( B, C ) POP PSW; восстановить ( А, F ) RET SUBR1: ……. DCR A RZ; возврат, если ( А ) = 0 INI B POP D POP H регистры не восстанавливаются RET SUBR1: …… DCR A JZ EXIT; выход, если ( А ) = 0 INX B EXIT: POP D POP H RET

Чтобы подпрогр. правильно использовать необходимо произвести спецификацию, в кот. указывается:

1. входн. прог – мы подпрогр., т. е. где наход. данные, обрабатываемые подпрогр.2. выходные пар – ры подпрогр., т. е. где будут размещаться рез – ты работы под – мы.3. Какие регистры будут использ. в подпрогр.

В Ассемблере спецификац. размещается в комментариях в начале подпрограммы:

62

...

...

...

N Б1 Б0

+

СY

Слогаемое 1

Слогаемое 2

Результат

Page 63: Микропроцессорная техника

; подпрогр. сложения 2 – х целых чисел ( двоичных ) формата 8 * N; входн. пар – ры: регистры В, С – адрес мл. байта слогаемого 1; HL – адрес мл. байта слогаемого 2; рег. Е – кол – во байт N числа; выход. пар – ры: регистры В, С – адрес мл. байта рез – та; CY – признак переполнения суммы; используются все регистры

Возможно ситуация, когда после вызова подпр., она вызывает др., а следующ. ещё одну. Такие подпрограммы наз. вложенными.

Способы передачи пар – ов : 1. Передача пар – ов через яч. памяти ( через адреса яч. памяти ). К этим адресам может

обращаться и основн. и подпрогр.Такие пар – ры наз. глобальные ( общедоступные )

Недостаток – искажение пар – ов и трудность обнаружения виновника.2. С помощью регистров МП – можно передать как данные, так и адреса яч. памяти.

Недостаток – малое кол – во регистров. Такие пар – ры наз. локальными.3. Передача пар – ов через стек – перед вызовом подпрогр. основн. прогр. заносит в стек пар –

ры, кот. будут использ. в подпрогр., после она вызывает из стека пар –ры. Осн. прогр. LXI H, PARAM1 PUSH H LXI H, PARAM2 PUSH H LXI H, PARAM3 PUSH H CALL SUBR

SUBR : POP H SHLD ADRRET POP H; в ( HL ) PARAM3 POP H; ( DE ) PARAM2 POP D; ( BC ) PARAM1 ………

63

SP

ADR

PARAM3

PARAM2

PARAM1

Стек ОЗУ

Адрес возврата ADR

ADRRETADRRET+1

Page 64: Микропроцессорная техника

LHLD ADRRET PCHL; возврат из подпрогр. Достоинство – быстрота и неогран. число пар – ов.

Иерархическая организация подпрограмм.

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

Применение таблиц.Таблица – обобщ. одномер. массив, эл – ты кот. могут иметь различ. длину.

1. Таблицы адресов – эл – ми явл. 16 – разр. адреса яч. памяти.

Каждое сообщение заканчивается спец. знаком – символом конца – терминатором: NUUL = 00000000

64

Основная программа

n/n-1 n/n-2

n/n-3 n/n-4 n/n-5 n/n-6

1 уровень

- 2 уровень

Таблица сообщений

Таблица адресов

номер сообщ.

Сообщение 0

Сообщение 1

Сообщение 2

0

1

2

Adr 0

Adr 1

Adr 2

Adr 0

Adr 1

Adr 2

NULL

NULL

NULL

Пуск ….. Стоп

Пуск

0 1 2

При нажатии клавиши происходит её ид - ия

Порт ввода ( KEY BORD )

SB1

SB2

SB3

DI0

1

2

RG

Page 65: Микропроцессорная техника

Нажатию любой клавиши соответствует свой код, и следовательно своя п. п. SB Код П / п 1 00H SUBRO 2 01H SUBR1…………………………..

1.ввод с клавиатуры данных и сравнен. последов. с кодом ( известным ) клавиши, в случае рав – ва мы определили какая клавиша нажата и переходит к п / п.

IN KEYBORD CPI 00H; сравнение с кодом SB1 SZ SUBR 0; CPI 01H; сравнение с кодом SB2 CZ SUBR 1; …………… такая прогр. может быть очень громадной 2.использ. табл. адресов:

IN KEYBORD ADD A; удвоение MOV E, A MVI D, 0 ; ( DE ) ( A ) LXI H, TABLE ; ( HL ) нач. адрес табл. DAD D ; ( HL ) ( HL ) + ( DE ) MOV D, M ; ( D ) Ст. б. адреса INX H MOV E, M ; ( E ) Мл. б. адреса XCHG ; ( DE ) ( HL ) PCHL ; Переход к п / п

65

TABLE Адрес SUBR 0

Адрес SUBR 1

Адрес SUBR 2

Page 66: Микропроцессорная техника

Применение таблиц для преобразования кодов:

Двоичный код HEX Символ 7 6 5 4 3 2 1 00 0 1 1 1 1 1 1 3F 00 0 0 0 0 1 1 0 06 1...................................................................

0 1 1 1 1 1 1 1 7F 81 0 0 0 0 0 0 0 80 ,

00000000 = 00Н

; П / п преобразование двоичного кода; Символа в 7 – сегментный код; Вх. пар – ры рег. А – двоич. код симв.; Вых. пар – р рег. А – 7 – сегментн. Код CONVERT: MOV E, A MVI D, 0; ( DE ) ( A ) LXI H, TABLECOD DAD D ; ( HD ) ( HL ) + ( DE ) MOV A, M; чтение кода из табл. RET ; Табл. 7 – сегмент. кодов TABLECOD ; DB 3FH; Код “ 0 ” DB 06H; Код “ 1 ” ……… DB 71H; Код “ F ”

2. вычисление ф – ций с помощью таблиц:

Y = X2 x = 0, 1, …, 10X Y

DEC HEX DEC HEX0 00 0 001 01 1 012 02 4 043 03 9 094 04 16 105 05 25 196 06 36 247 07 49 31

66

7 6 5 4 3 2 1 0

a

f b ge c d h

Page 67: Микропроцессорная техника

8 08 64 409 09 81 5110 0A 100 64

; П / п вычисление ф – ции Y = X2

; Вх. пар – ры: рег. С – число Х; Вых. пар – р: рег. Е – рез – т У KVADRAT: MVI B, 0; ( BC ) – число х LXI H, TABLE DAD ; ( HL ) ( HL ) + ( BC ) MOV E, M ; чтение у RET; Таблицы квадратов TABLE: DB 00H, 01H, 04H DB 09H, 10H, 19H DB 24H, 31H, 40H DB 51H, 64H

4.Таблицы переходов: слож. прогр. сост. из нескольких моделей. Обычно каждый модуль содержит п / п, кот. могут вызываться из др. модулей. Это делается с помощью команды CALL Adr JMP Adr

Программирование цифровых вычислительных устройств.

Числа делятся на виды:1. целые2. дробные

Могут быть : - без знака- со знаком

Целые числа делят на :- двоичные- десятичные ( в двоично – десятичном коде )

Дробные числа: - c фиксированной запятой ( ф3 )- с плавающей запятой ( пз )

Число могут иметь размер 1, 2, 3, … и т. д. байт

Арифмитические операции с целыми числами без знака.

67

Табл. переходовГлавн. Прогр

CALLSUBR 1

CALLSUBR 2

JMPSUBR 1A

JMPSUBR 2B

SUBR 1A

SUBR 2A

SUBR 1

SUBR 1

Page 68: Микропроцессорная техника

Обратный код – инверсия каждого двоичного числа: [ A ]ОБР = [ A ]ПР

использ. для выполнения операции вычитания. Дополнительный код: [ A ]ДОП = [ A ]ОБР + 1 LDA MEM ; MEM – адрес числа в ком. CMA STA MEM ; число в обр. коде INR A STA MEM ; число в доп. Коде 00Н = 0 FFH = 255

Увеличение разрядности чисел резко уменьшает производительность МП ADD – сложение SUB – вычитание

ADC – сложение с учётом переноса Пример: ; п / п сложение 2 – х целых беззнаковых ; двоичных чисел формата 8 * N ; N – число байт ; вх. пар – ры: рег. В, С – адрес мл. б. слог. 1 ; рег. HL – адрес мл. б. слогаемого 2 ; рег. Е – кол – во N байт числа ; вых. пар – ры рег. ВС – адрес мл. б. суммы ; CY – признак переполнения суммы

ADD8N: MOV D, E; сохранить рег. Е PUSH B; сохранить адрес 1 XRA A; ( CY ) 0 ; многобайтное двоичное сложение

68

0 1 0 1 0 1 0 0

7 6 5 4 3 2 1 0

Число двоичное в прямом коде.

Б3 Б2 Б1 Б0

31 24 23 16 15 8 7 0

Б1 Б0

15 8 7 0 Б0 Adr

Б1 Adr+1

Б1 Б0

Б1 Б0

- 1 слог.

- 2 слог.

CY

Page 69: Микропроцессорная техника

CYCLE : LDAX B ; ( A )адрес ВС ( SBB M ) ADC M ; сложить ( вычесть ) STAX B ; запомнить INX B INX H DCR E JNZ CYCLE ; цикл, если ( Е ) 0 ; восстановление регистров MOV E, D POP B RET

Умножение и деление:

1010 - Мж * 1101 - Мн

1010 - частное произведение 0000 1010 1010 _ 10000010 - произведение ( рез – т ) разряды: 8 * 8 = 167 * 16 = 24

16 * 16 = 32

При делении получается целое и целый остаток

Быстрое умножение и деление двоичных чисел.

Использ. команды сдвига 00000100 = 4 сдвиг 00001000 = 8

00010000 = 16 при сдвиге влево происходит умножение на 2: Aрез. = А исх. * 2N

N – число сдвигов

Рез – т будет правильный, если не произошёл перенос из старшего разряда 00001000 = 8 00000100 = 4 00000010 = 2 т. е. при сдвиге вправо происходит деление на 2: Арез. = Аисх / 2N

00001001 = 9 сдвиг через перенос

У = х * 6 = 4 * х + 2 * хУ = 10 * х = 8 * х + 2 * хУ = 6,5 * х = 4 * х + 2 * х + х / 2 Пример: исходное однобайтное число поступает в порт. Надо * 6,5 и записать в память

IPORT – адрес порта ввода SAVE – адрес яч. памяти IN IPORT ; ( A ) x

69

Page 70: Микропроцессорная техника

MOV C, A ; ( C ) X RLC ; ( A ) = 2 * x MOV B, A ; ( B ) 2 * x RLC ; ( A ) = 4 * x ADD B ; ( A ) = ( A ) + ( B ) = 6 * x MOV B, A ; ( B ) = 6 * x ORA A ; ( CY ) 0 MOV A, C ; ( A ) ( C ) = x RAR ; сдвиг вправо ( А ) = х / 2 ADD B ; ( A ) ( A ) + ( B ) = 6.5 * x STA SAVE ; запомнить Число должно быть меньше 255 !

Упакованный формат удобен для хранения чисел в памяти, но не удобен для ввода и вывода чисел. Неупакованный формат

Преобразование десятичного числа из неупаков. Формата в упаков. наз. упаковкой десятичн. чисел. Обратное преобразование наз. распаковкой десятичн. чисел.

1

70

1 0 0 0 1 0 0 1

7 6 5 4 3 2 1 0

Ст. Т Мл. Т

диапазон 0…99

0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 1

15 8 7 0

4 5 8 9

Б1 Б0

Adr 1000 1001

Adr + 1 0100 0101

0 0 0 0 1 0 0 1

Ст. Т Мл. Т

цифра

0 0 0 0 1 0 0 1

0 0 0 0 1 0 0 0

1 0 0 0 1 0 0 1

Мл. ц.

9

Ст. ц.

8

Ст. ц. Мл. ц.

Page 71: Микропроцессорная техника

Сложение десятичных чисел

ADD – слож. двоичных чисел DAA – десятич. коррекц. аккумулятора Пример ; П / п сложения десятичн. чисел ; Вх. пар – р : рег. ВС – адрес Мл. б. слог. 1 ; Рег. HL – адрес Мл. б. слог. 2 ; Рег. Е – кол – во байт N ; Вых. пар – р : рег. ВС – адрес суммы ; CY – признак переполнения суммы

ADD10N: MOV D, E PUSH B XRA A ; сложение ВСD – чисел CYCLE: LDAX B ADC M ; двоичное сложение DAA ; десятичная коррекция STAX B INX B INX H ; проверка конца цикла DCR E JNZ CYCLE ; если ( Е ) 0 ; выход MOV E, D POP B RET

Для вычитания коррекция не применяется поэтому так нельзя отнимать.

71

Мл. ц. Байт 0

Б1

Ст. ц. Б2

1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1

Ст. ц. Мл. ц. 9 8 5 4 3 1

Б2 Б1 Б0

Page 72: Микропроцессорная техника

Вычитаемое преобр. в дополн. код и производится сложение. Умножение и деление десятичных чисел очень сложно. Поэтому такие программы неиспользуются. Для необходимости производят преобразование десятичных чисел в двоичные, затем производят необходимые действия, а затем осуществляют обратное преобразование.

Преобразование двоичных чисел в десятичные и наоборот.

Преобраз. 2 – х – разряд. десятичн. число в эквивалентное двоичное

; Вх. пар – р : рег. А – двоич. – десят. число; Вых. пар – р : рег. А – эквивал. двоичн. число

PR 102 : ; распаковка дв. – дес. число MOV B, A ; копия дв. – дес. число ANI OFH ; выделить Мл. ц. MOV C, A ; MOV A, B ; ANI OFOH ; выделить Ст. ц. RRC ; Ст. ц. * 10 MOV B, A ; в рег. в – Ст. ц. * 8 RRC RRC ; Ст. ц. * 2 ADD B ; Ст. ц. * 10 ADD C ; в рег. А – двоичн. число RET

72

PR 102

Выделить Мл. ц.

Выделить Ст. ц.

Вычислить 10 * Ст. ц.

Сложить 10 * Ст. ц. + Мл. ц.

Выход

1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1

Ст. ц. Мл. ц. Двоичное число 9 9

Ст. Ц. 0 0 0 0 0 0 0 0 Ст. Ц

RRC RLC Ст. Ц. * 8 RLC RRC RLC RRC Ст. Ц. * 8 Ст. Ц. + 2

Page 73: Микропроцессорная техника

Преобразование 1 – байтного двоичного числа в эквивалент. десятичном

; Вх. пар – р : рег. С – двоичное число ; Вых. пар – р : рег. HL – 3 – разр. десятичн. число

PR810 : LXI H, O MVI B, 8 ; счётчик циклов ; сдвиг влево CYCLE: MOV A, C RLC MOV C, A ; дв. – дес. удвоение суммы MOV A, L ADC L DAA MOV L, A MOV A, H ADC H DAA MOV H, A ; проверка конца цикла DCR CYCLE RET

Операции с целыми двоичными числами со знаком !

S = 0 – положит. число S = 1 – отриц. число

1) прямой код – ст. разряд – знаковый, остальные разряды – этомодули числа.

0 1 1 1 1 1 1 1 = + 127 1 1 1 1 1 1 1 1 = - 127

возможно появление 2 – х видов нуля: положит. и отриц.

2) обратный код

если S = 0 обр. код совпадает с прям. S = 1 обр. код = инверсии

0 1 0 1 0 1 0 1 – прямой код 73

1 1 1 1 1 1 1 1

0 0 1 1 0 1 0 1 0 1 0 1

2 5 5

= FF

S

7 6 5 4 3 2 1 0

S

обр. код числа

Page 74: Микропроцессорная техника

0 1 0 1 0 1 0 1 – обр. код

1 0 1 0 1 0 1 0 – прямой код 1 1 0 1 0 1 0 1 – обр. код

возможность появления 2 – х видов нулей.

3) дополнительный код

S = 0 – доп. код совпад. с прям. код S = 1 – [ AДОП ] = [ AОБР.] + 1 = [ ]ПР + 1

Достоинство – слож. и вычит. выполняется одинаково ; имеется только один нуль.

Недостаток – громоздкость получения доп. кода ( особенно для многобайтных чисел ) [ A ]ДОП = [ A ]ОБР + 1 = [ ]ПР + 1 [ A ]ПР = [ ] = [ AДОП ] + 1

- 1 = 1 0 0 0 0 0 0 1 – пр. код инверсия 0 1 1 1 1 1 1 0+ 1 0 1 1 1 1 1 1 1 = ошибка 1 1 1 1 1 1 1 1 = FFH

П / п преобраз. однобайтных чисел из прям. кода в дополнит. и наоборот

; Вх. рар – р : рег. А – исх. число ; Вых. пар – р : рег. А – вых. число

DOP : MOV C, A RLC JC PREOBR ; если S = 1 MOV A, C RETPREOBR : MOV A, C CMA ; инверсия числа INR A ; ( A ) ( A ) + 1 RET

74

S

доп. код числа

АЦП

Порт 1 IPORT 1

Порт 2 IPORT 2

S

Ст. б. Мл. б.

15 0

X(t)

МлБ

СтБ

МлБ s СтБ доп.код

Page 75: Микропроцессорная техника

; П / п преобраз. из прям. кода в допол. ; Вх. пар – ры : IPORT 1 – ввод Мл. б., IPORT 2 – ввод Ст. б. ; Рег. HL – адрес Мл. б. доп. кода в ОЗУ

DOP 2 : IN IPORT 2: Ввод Ст. б. RLC JC PREOBR ; если S = 1 IN IPORT 1 ; ввод Мл. б. MOV M, A INX H IN IPORT 2 ; ввод Ст. б. MOV M, A RET PREOBR: IN IPORT 1 : ввод Мл. б. CMA ADI 1 MOV M, A ; запомнить в ОЗУ IN IPORT 2 ; ввод Ст. б. CMA ACI O ORI 80 ; установить S = 1 MOV M, A RET

1) С использованием специального порта состояний – кода ВУ выставляет данные, оно записывает в определённые ячейки порта “ 1 ”

75

POP 2

Ввод Мл. б.

Ввод Ст. б.

инверсия

инкремент

Запись в ОЗУ

Выход

Page 76: Микропроцессорная техника

Если D7 = 1 – данные имеются D7 = 0 – данных нет

MAIN : LXI H, BASE MVI C, 100 ; загрузить счётчик WAIT : IN PORTSTAS ; ввод состояния ANI 1000 0000 B ; выделить D7 JZ WAIT ; цикл ожидания CALL DOP 2 ; ввод данных и преобразование DCR C ; JNZ WAIT ; цикл, если ( С ) 0 HLT ; остановить МП

76

Порт состояния PORT STAS

от ВУ D7

MAIN

инициализация

Ввод из PORT STAS

D7 = 1

DOP 2

Декремент счётчика

( С ) = 0

Конец

Нет

Нет

Да

Да

Мл. б. BASE Доп. Код S Ст. б.

Page 77: Микропроцессорная техника

2) Использование запросов прерывания.

RST 7 – команда прерыв. вектор прерывания : 0038 H ORG 0000H JMP MAIN ; переход к главн. программе ORG 0038H ; вектор прерывания CALL DOP 2 DCR E JNZ NEXT ; если ( С ) 0 JMP EXIT NEXT : EI RET ORG 0100H MAIN : LXI H, BASE MVI E, 100 EI ; разрешить прерываниеWAIT : JMP WAIT ; зацикливаниеEXIT : HLT

Дробные числа.

1. С фиксированной запятой ( ФЗ ) 2. С плавающей запятой ( ПЗ )

Целые числа > 0

Дроьные числа < 1, но > 0 ( если число > 1 – то переполнение ) ПЗ : X = X * RM

Где: м – порядок, Х – мантисса, R – основание.М и Х – могут быть и положит. и отрицат..

77

МП

INT

Появились данныедля ввода

7 6 5 4 3 2 1 0 1) , - число целое

7 6 5 4 3 2 1 02) - смешанное число

целая дробная часть часть 7 6 5 4 3 2 1 03) , - дробное число

Page 78: Микропроцессорная техника

В МП ВМ80, ВМ85 : Занимает 1 байт Х = 2 – 3 – байта

д. б. нормализована ( в старшем разряде д. б. 1 ) Мантисса это число с ФЗ

Арифметические операции с числами с ПЗz = x ∙ y = x ∙ 2 mx ∙ y ∙ 2 my = x ∙ y ∙ 2 mx + my

z = = x ∙ 2 mx / y ∙ 2 my = ∙ 2 mx – my

Сложение:

MULFL

Умножение мантисс в формате с ФЗ

Сложение порядков в формате целых чисел

Нормализация мантисс

Коррекция порядка

Выход

78

Ст. б. Мл. б.

7 6 5 4 3 2 1 0

Sm Порядок Мсм.

М + 27 = + 128 - 64 0 63

Мсм - 27 = - 128 0 127 Мсм = м + 64

15 8 7 0

мантисса

Page 79: Микропроцессорная техника

БИС параллельного интерфейсаКР580ВВ55А (i8285A)

Имеет пластмассовый корпус и потребляет ≈ 125 мА.

ADDFL

Выровнять порядки

Сложение мантисс в формате с ФЗ

Нормализация мантисс

Коррекция порядка

Выход

A0A1

PIO

CS

D

0 1 7

UccGND

RDWR

RESET

PA

0 1 7

PB

0 1 7

PC

0 1 7

79

Page 80: Микропроцессорная техника

Порты А, В, С. Порт С разделен на старший и младший. Все порты управляются программно.Буфер данных имеет 3 состояния.А0, А1 − адрес.RESET − переводит все порты на ввод.РУС − регистр управляющего слова, которое посылает МП. По сигналу RESET РУС

сбрасывается в 0.

МС может работать в 3-х режимах:0 − режим простого ввода- вывода. Порты работают на прием-выдачу параллельных данных;1 − стробируемый ввод-вывод. Работают порты А и В, порт С используется для управления;2 − двунаправленный ввод-вывод. Работает только порт А.

ППА − программируемый параллельный адаптер.Программирование − запись в РУС управляющего слова, которое определяет режим работы.

Применяется 2 вида управляющих слов:1. УССРР − управляющее слово режима работы. Каждый разряд отвечает за

строго определенную функцию.

MVI A, РУСOUT РУС

Буфер данных

Схема управ-ления

РУС

Порт PCH

8 4(PC4 ÷ PC7)

Порт PA

8 8(PA0 ÷ PA7)

Порт PCL

8 4(PC0 ÷ PC3)

Порт PB

8 8(PB0 ÷ PB7)

D0

D7

A0

A1

RESET

CS

RD

WD

ШД

8

8

D7 D5 D4 D3 D2 D1 D0D6

Всегда “1”

Реж. 0Реж. 1Реж. 20

0101

х Порт РА и РСH

РА(7÷0)ВводВывод1

0

РС(7÷4)ВводВывод1

0

10

ВводВывод

РС(3÷0)

01

Режим 0Режим 1

10

ВводВывод

РВ(7÷0)

80

Page 81: Микропроцессорная техника

Пример: настроить адаптер на работу со следующей конфигурацией: порт А − ввод, порт В − вывод, ст. т. порта С − вывод, мл. т. порта с − ввод. Все порты работают в режиме 0.

A0 A1 Регистры ППА0011

0101

РАРВРС

РУС

= 1 → все выводы адаптера в Z − состоянии;= 0 → адаптер включается в работу.

А7 А6 А5 А4 А3 А2 А1 А0 Регистры Адресахххх

хххх

хххх

хххх

хххх

1111

0011

0101

РАРВРС

РУС

04Н05Н06Н07Н

MVI A, 91HOUT 07H

;ввод из порта РАIN 04H

;вывод в порт РВOUT 05H

2. Можно управлять отдельными битами порта СУСУСБ − управляющее слово установки сброса битов. Определяет работу только РС.

1 0 1 0 0 0 10

7 6 5 4 3 2 1 0

УС: = 91Н

A0A1

PIO

CS

D

0 1 7

UccGND

RDWR

RESET

PA

0 1 7

PB

0 1 7

PC

0 1 7

ШД

1

ША

ШУ

А0

А2

А1

Reset

IOR

IOW

81

Page 82: Микропроцессорная техника

Пример: установить в “1” 2-ой бит порта СУС: 0000 0101 = 05НMVI A, 05HOUT РУС

Выходные буферы портов имеют следующую структурную схему:

Пример: установить в “1” 2-ой бит порта АIN PAORI 0000 0100BOUT PAПример: инвертировать 3-ий бит порта СIN PCXRI 0000 0100BOUT PC

Адаптер имеет невысокую нагрузочную способность:I0

ВЫХ ≤ 2 мАI1

ВЫХ ≤ 40 мкА

БИС последовательного интерфейса КР580ВВ51А

При последовательной передаче данных информация передается последовательно бит за битом. Необходимо устройство для преобразования параллельного кода в последовательный (на передающей стороне) и последовательного в параллельный на приемной стороне.

D7 D5 D4 D3 D2 D1 D0D6

Всегда “0”

0000111

1 0 0 1 1 0 0 1 10101010

1РС0

РС1

РС2

РС3

РС4

РС5

РС6

РС7

01

Сброс в 0Установка 1

х х х

ШД

1

2

8Выход

8 8

8

Служит для чтения состояния выхода

82

Page 83: Микропроцессорная техника

Важнейший параметр − скорость (частота) передачи − определяет количество передаваемых бит в секунду [бит/с]. Эта величина называется Бод = бит/с.

Интервал, когда уровень неизменный ТП = 1/VП , VП − скорость передачи, ТП = 1/fП , fП

− частота передачи.

Используется передача младшими разрядами вперед:

Коды:1. 5-элементный или МТК (международный телеграфный код). 25 = 32 сообщения.

Используется 3 регистра: верхний, средний и нижний.2. Американский код для передачи последовательных данных ASCII − 7-элементный,

для передачи используется 7 битов: 27 = 128. 8-ой бит используется как контрольный. Такой код недостаточен для русского алфавита.

3. КОИ−8 (или КОИ−7) − код для обработки информации.

При передаче по линии связи могут возникнуть искажения, поэтому важны защита кодов и способы обнаружения ошибок: контроль паритета (четности) − для четного паритета сумма всех битов должна быть четной, для нечетного соответственно нечетной. Позволяет исправить 90 % ошибок.

При передаче используют 2 принципа передачи: асинхронный и синхронный.

МПС Передатчик Приемник МПС

Передающая часть Приемная часть

Л. С.

Параллельный кодПоследовательный код

Параллельный код

ТП

D7 D5 D4 D3 D2 D1 D0D6

1 0 0 1 1 0 0 1

D0 D1 D2 D3 D4 D5 D6 D7

ТП

Время

83

Page 84: Микропроцессорная техника

Асинхронный − передача каждого символа заключается в рамку из старт-бита и стоп-битов (может быть 1 или 2). Начало передачи определяется старт-битом. Приемник, получив его производит синхронизацию генератора. При отсутствии передачи в Л. С. − высокий уровень. В конце передачи передатчик выдает стоп-биты (высокого уровня). Приемник, получив их, заканчивает прием данных.

Достоинства:1. Большая надежность передачи данных.2. Низкие требования к стабильности генераторов передатчика и приемника.

Недостатки:1. Большая избыточность.2. Невысокая скорость передачи.

Используется для передачи на большие расстояния.

Синхронный − перед началом передачи в линию связи посылают специальное сообщение (наз. синхросимволы) чтобы информировать приемник о начале передачи и синхронизировать работу генераторов. Приемник, обнаружив синхросимволы начинает прием данных сплошным потоком без перерыва.

Достоинство: большая скорость передачи.Недостатки:

1. Т. к.. синхронизация осуществляется только вначале передачи массива данных, то высокие требования к генератору.

2. Меньшая помехозащищенность.Используется при передаче данных на небольшие расстояния (внутри сиситемы).

Передатчик ПриемникЛ. С.

Г1 Г2

D0 D1 D2 D3 D4 D5 D6 D7 D8

1 0 0 1 1 0 1 0 0

Старт-бит Стоп-биты

Бит паритета

Рамка

Четн. паритет

1-ый синхросимвол 2-ой синхросимвол

1-ый символ

Данные

2-ой символ

84

Page 85: Микропроцессорная техника

Внутренняя структура БИС КР580ВВ51А

ПСА − программируемый связной адаптер.УСАПП (USART) − универсальный синхронный-асинхронный приемник-передатчик. БИС позволяет преобразовывать параллельный код в последовательный и обратно. Может

работать в двух режимах передачи. Имеет пластмассовый корпус, 28 выводов, питание однополярное.

− сигнал выбора (идентификации): = 1 −

передаются управляющие слова; = 0 − передаются данные. − выбор кристалла: = 1 − выбор МС; = 0 − Z-состояние.

CS

SIO

CLK

D

0 1 7

UccGND

RDWR

RESET

T x D

T x C

T x RDY

T x E

R x D

R x RDY

R x C

SYNDET

DSR

DTR

RTS

CTS

Буфер данных

РУС

Буфер передат-

чикаT x DD0

D7

Схема управ-ления и синхро-низации

DC/

CS

RESET

RDWR

CLK

Внутренняя ШД

8

8

Схема управ-ления

модемом

DTRDSRCTS

RTS

Буфер приемни-

каR x D

Схема упр-я

передатч. C x T

T x RDY

T x E

Схема упр-я

приемн. C x R

R x RDY

SYNDET

85

Page 86: Микропроцессорная техника

− строб чтения− строб записи

CLK − для подачи синхроимпульсов (для синхронизации генераторов адаптера) ≈ 2 МГцRESET − сигнал начальной установки (сбрасываются регистры управляющих слов и МС м. б.

запрограммирована)T x D − передаваемые данныеT x RDY − сигнал готовности передатчика, (T x RDY = 1 − буфер передатчика пуст)T x E − передатчик пуст, т. е. закончил работу

− сигнал синхронизации передатчика, определяет частоту передатчикаR x D − принимаемые данныеR x RDY − готовность приемника (R x RDY = 1 − принял и преобразовал последовательные

данные)− сигнал синхронизации приемника, определяет частоту приемника

SYNDET − определитель синхронизации, является выходным в асинхронном режиме и синхронном режиме при внутренней синхронизации

Программирование БИС ВВ51А

Это во внутренние регистры управляющих слов.Управляющие слова бывают 2-х видов: инструкции режима и инструкции команд.Инструкции режима − определяют режим работы МС − число передаваемых бит, скорость

передачи, наличие паритета и т. д. Указывается 1 раз (инициализация).Инструкция команд − для непосредственного управления передачей и приемом.

Имеется 2 отдельных регистра: регистр управления РУС и регистр данных DAN. = 1 − данные передаются в РУС = 0 − данные передаются в DAN

Порядок записи и чтения информации:

OUT РУС − запись в регистр управляющих слов

Начальная установка УСАПП

Инструкция режима

1-ый символ синхронизации

2-ой символ синхронизации

Инструкция команды

Данные

Инструкция команды

Сигнал

Примечание: аппаратная или программная1

1

1

1

1

0

1

Только для синхрогенер.

86

Page 87: Микропроцессорная техника

OUT DAN − запись в регистр данныхIN DAN − чтение из регистра данных

Формат инструкции асинхронного режима работы

fС − импульсы, синхронизирующие работу передатчика.Если 1:1, то частота передачи равна частоте синхронизации (fП = fС); 1:16, то fП = fС/16; 1: 64, то fП = fС/64.Для повышения надежности связи рекомендуется 1:16 или 1:64.

Формат инструкции синхронного режима работы

D7 D5 D4 D3 D2 D1 D0D6

Запрещено1 бит

1,5 бита2 бита0

011010

1 Число стоп-битов

00

5 бит1

06 бит0

17 бит1

18 бит

Длина слова

Четный паритет−1 Нечетный паритет−0

1−Разрешить контроль паритета 0−Запретить

10

1:10

11:161

11:64Скорость обмена

T x D

T x C

VП или fП [бит/с]

D7 D5 D4 D3 D2 D1 D0D6

00

5 бит1

06 бит0

17 бит1

18 бит

1 − Четный паритет 0 − Нечетный паритет

1 − Один символ 0 − Два символа

1 − Внешн. синхрон. 0 − Внутр. синхрон.

1 − Разрешить контроль паритета 0 − Запретить контроль паритета

“0” “0”

87

Page 88: Микропроцессорная техника

Формат инструкции команды

Если D1 = 1, то = 0. Активный уровень − низкий (отрицательная логика).

Пример: произвести начальную программную установку адаптера:УС: 0100 0000 = 40НMVI A, 40HOUT РУС

Пример: задать асинхронный режим работы со следующими параметрами: 2 стоп-бита, контроль на четность, длина слова 8 бит, коэффициент деления частоты синхроимпульса = 16:УС: 1111 1110 = FEHMVI A, FEHOUT РУС

Пример: задать синхронный режим работы со следующими параметрами: 1 символ синхронизации с кодом 7EH = 0111 1110В, синхронизация внутренняя, контроль на четность, длина слова 8 бит:

УС: 1011 1100 = ВСНMVI A, ВСНOUT РУСMVI A, 7ЕНOUT РУС

Слово состояния адаптера: при работе адаптер формирует информационное слово, которое отражает работу его внутренних элементов; МП в любой момент времени может прочитать это слово: IN РУС.

Формат слова состояния

D7 D5 D4 D3 D2 D1 D0D6

1−Прогр-ая установка сигнала =0 0−=1

1−Поиск синхросимвола разрешен 0−Поиск синхросимвола запрещен

1−Программнаяая НУ (сброс) УСАПП 0 −Нет программной НУ

1 − Сброс флага ошибок 0 − Нет сброса

1−Прогр-ая устан. вых-а передатчика в 0 0−Нормальная работа

1−Прием разрешен 0−Прием запрещен

1−Прогр-ая уст-ка сигнала =0 0−=1

1−Передача разрешена 0−Передача запрещена

88

Page 89: Микропроцессорная техника

FE, OE, PE − флаги ошибок.Пример: выполнить опрос готовности передатчика и в случае его готовности загрузить в него

байт из массива с адресом BASE:WAIT: IN РУС ; чтение слова состояния RRC ; сдвиг вправо JNC WAIT ; цикл ожидания LDA BASE ; чтение символа из массива в (А) OUT DAN ; вывод символа в регистр данных

Пример: выполнить опрос готовности приемника и в случае его готовности записать принятый байт в ячейку памяти MEM:

WAIT: IN РУС RRC RRC JNC WAIT IN DAN ; чтение символа STA MEM ; запись в память

CS

SIOШД

D

0 1 7

UccGND

CLK

RD

WR

RESET

T x D

T x C

T x RDY

T x E

R x D

R x RDY

R x C

SYNDET

DSR

DTR

RTS

CTS

В Л.С.

&А0

А7

D0

D7

f2 ттл

RESET

IOW

IOR

ШУ

А0

ША

Делитель частоты

Генератор синхроимпульсов

89

D7 D5 D4 D3 D2 D1 D0D6

DSR

SYNDET

FE (1−ошибка формата) формата

OE (1−переполнение буфера) PE (1−ошибка паритета)

TxE (конец передачи, передатчик пуст )

RxRDY (готовность приемника )

TxRDY (готовность передатчика)

Page 90: Микропроцессорная техника

А7 А6 A5 A4 A3 A2 A1 A0 HEX код Регистр1 1 1 1 1 1 1 11 1 1 1 1 1 1 0

FFFE

РУСDAN

VП : 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200 [бит/с].При КДЕЛ = 1:16, VП = 1200 [бит/с], fC = 1200 ∙ 16 = 19200 Гц.При fCLK = 2МГц, КДЕЛ = 2000000/19200 = 104,1

Передатчик при отсутствии передачи импульсов передает в линию высокий уровень.Закончив прием импульсов, адаптер вырабатывает флаги (в случае ошибок) и производится

преобразование в параллельный код. VП МАХ = 9600 [бит/с].Достоинство синхронного режима − высокая надежность передачи, низкие требования к

стабильности генератора.Недостаток − низкая скорость передачи (для устранения используют асинхронный режим

передачи).

БИС программируемого таймера КР580ВИ53 (i8253)

Счетчик 16 разрядный. Напряжение питания +5 В. Работает на вычитание. Счет может быть двоичным, либо двоично-десятичным. Признак окончания счета − изменение на выходе OUT.

CLK − тактовый входGATE − управляющий входБуфер данных связывает БИС таймера с внутренней ШД.Регистр управляющих слов содержит слово, управляющее работой счетчика.

CLK0GATE0

Буфер данных

РУС

D0

D7

Схема управ-ления

A0

A1

Внутренняя ШД

8

CS

RD

WRСчетчик 2

(СТ2)

OUT 2

CLK 2

GATE 2

Счетчик 1 (СТ1)

OUT 1

CLK 1

GATE 1

Счетчик 0 (СТ0)

OUT 0

CLK 0

GATE 0

24 13

121

90

Page 91: Микропроцессорная техника

Может работать в 6 режимах:Режим 0 − программируемая задержка;Режим 1 − ждущий мультивибратор (одновибратор);Режим 2 − делитель частоты;Режим 3 − генератор прямоугольных импульсов (меандр);Режим 4 − программно-управляемый строб;Режим 5 − аппаратно-управляемый строб.Адресные входы определяет счетчик, к которому обращается МП:

А1 А0

0 00 11 01 1

СТ0СТ1СТ2РУС

Программирование таймера

Режимы работы таймера задаются управляющим словом

A0A1CS

PT

RDWR

D

0 1 7

OUT0

OUT1

OUT2

CLK0GATE0

CLK1GATE1

CLK2GATE2

ШД

D0

D7

IOR

IOW

Входы управления

ШУ

1

ША А0

А3

fCLK = 0 ÷ 2 МГц

D7 D5 D4 D3 D2 D1 D0D6

СТ0СТ1СТ2

Запрещено00110101

00хх1

1 0 0 1 1 0 001010

1Реж.0Реж.1Реж.2Реж.3Реж.4Реж.5

ЗащелкиваниеТолько мл. байтТолько ст. байт

Мл. байт→ст. байт001

1 0 1 0 1

Способ записи или

чтения

01Двоичный код

Двоично-десятичный код

91

Page 92: Микропроцессорная техника

Программирование заключается в следующем:1. запись во внутренний регистр РУС управляющего слова (для всех 3-х регистров по одному

адресу);2. запись в каждый счетчик начального значения числа (N).

А7 А6 A5 A4 A3 A2 A1 A0 HEX код Внутр. регистр0 0 0 0 0 0 0 10 0 0 0 0 1 0 10 0 0 0 0 1 1 00 0 0 0 0 1 1 1

04050607

СТ0СТ1СТ2РУС

Пример1: настроить счетчик СТ0 на режим 1, в мл. байт загрузить число 13Н, счет двоичный.УС: 0001 0010 = 12НMVI A, 12HOUT 07HMVI A, 13HOUT 04H

Пример 2: те же условия, но число двухбайтное 1513Н.УС: 0011 0010 = 32НMVI A, 32HOUT 07HMVI A, 13HOUT 04HMVI A, 15HOUT 04H

Пример 3: произвести начальную установку таймера при следующих условиях:СТ0, режим 5, число 1513НСТ1, режим 1, число 06НСТ2, режим 2, число 0ВНВсе счетчики работают как двоичныеУС0: 0011 1010 = 3АНУС1: 0101 0010 = 52НУС3: 1001 0000 = 90Н

MVI A, 3АHOUT 07HMVI A, 52HOUT 07HMVI A, 90HOUT 07HMVI A, 13HOUT 04HMVI A, 15HOUT 04HMVI A, 06HOUT 05HMVI A, 0ВHOUT 06H

Иногда при работе требуется определить содержимое счетчика в произвольный момент времени, т. е. программно определить состояние счетчика:

92

Page 93: Микропроцессорная техника

1. Приостановить работу счетчика − остановить работу счетчика можно 2-мя способами: а) заблокировав подачу счетных импульсов на вход CLK б) подать запрещающий сигнал на вход GATE = 0.

2. Без останова работы счетчика (чтение на “лету”)

Чтение содержимого счетчика происходит по команде IN CT(0, 1, 2), где СТ(0, 1, 2) − адрес счетчика, который считается. Чтение производится также, как запись.

Пример: прочитать содержимое счетчика с блокированием счетных импульсов, в управляющем слове D4, D5 = 1, Сч0.

MVI A, 00H ; на D0 = 0OUT PORT_OTKL ; импульсы прекратилисьIN CT0MOV C, A ; сохранение мл. байтаIN CT0MOV B, A ; сохранение ст. байтаMVI A, 01HOUT PORT_OTKL ; запустить СТ0

В регистр надо записать специальное управляющее слово, в котором D4, D5 = 0, остальные разряды остаются первоначальными.

Пример: прочитать “на лету” содержимое СТ0, управляющее слово 32Н = 0011 0010Н. УС: 0000 0010 = 02НMVI A, 02HOUT 07H ; запись УСIN 04HMOV C, A ; сохранение мл. байтаIN 04HMOV B, A ; сохранение ст. байта Программирование:Режим 0

D0012∙∙∙7

RG & РТCLK0

GATE0

OUT0

fCLK

“1”

PORT_OTKL

tзд

TCLK

4 3 2 1 0

Разрешение счета

CLK

WR

GATE

OUT

93

Page 94: Микропроцессорная техника

tзд = n ∙ TCLK TCLK = 1/fCLK

После загрузки УС на выходе OUT = 0. Счет разрешается когда OUT = 1. Изменение счетчика происходит по срезу импульса CLK, когда в счетчике 0 на входе OUT = 1.

Режим 1 − счетчик генерирует одиночный импульс

tк = n ∙ TCLK

Запись происходит перепадом 0→1 на входе GATE. Когда счетчик обнуляется на выходе OUT = 1.

Режим 2

ТВЫХ = n ∙ TCLK

fВЫХ = fCLK /n

Режим 3

tк = tп = Т/2При четном числе, загруженном в счетчик, на его выходе прямоугольные сигналы, у которых

равны по времени высокий и низкий уровни. Если же число нечетное, то высокий уровень будет больше на величину периода счетных импульсов.

OUT

TВЫХ

4 3 2 1 0

CLK

WR

GATE

OUT

43 2 1 0

ТВЫХ

tк tп

Т

U

t

94

Page 95: Микропроцессорная техника

Режим 4

tзд = n ∙ TCLK

tи = TCLK

ТВЫХ

TCLK

4 3 2 1 0

CLK

WR

4

3 2

OUT

n=4

1)

ТВЫХ

TCLK

5 4 3 2 1

CLK

WR

5

0 4

OUT

n=5

2)

tзд

TCLK

4 3 2 1 0

CLK

WR

OUT

n=4

GATE=1

95

Page 96: Микропроцессорная техника

Режим 5 − запуск счетчика выполняется с помощью сигнала (перехода) GATE

Применение МП в системах управления и контроля

Такие системы содержат: Объект управления или контроля Устройство управления Исполнительное устройство

xЗ(t) − задающая величинаU(t) − возмущающее воздействиеМикроконтроллер (МК) − на основе МП. МК работает с цифровыми сигналами (ТТЛ уровень).Сигналы:

1. аналоговый2. дискретный (двоичный)

АЦП (аналого-цифровой преобразователь) − преобразователь аналогового сигнала в цифровой код.

ЦАП (цифро-аналоговый преобразователь) − обратный АЦП.

tзд

4 3 2 1

CLK

WR

GATE

OUT

40 1 2 3

n=4

Запуск счетчика

Исполнительное устройство

Объект управления Датчик

Исполнительное устройство

U(t)

y(t) x(t)

xЗ(t)

U(t)аналог.

t

U(t)дискрет.

t

96

Page 97: Микропроцессорная техника

Работа МК с дискретными сигналами

Типовые программы (процедуры) управления и контроля (используются при работе с дискретными датчиками (кнопки, реле, переключатели) и с дискретными исполнительными устройствами (сигналы только двух видов − светодиоды, лампочки, реле, двигатели переменного тока):

1. опрос двоичного датчика2. ожидание события3. формирование управляющего сигнала4. формирование временной задержки

Опрос двоичного датчика − сигналы датчика можно разделить по характеру датчика на контактные и бесконтактные.

Опрос состоит в том, что МП опрашивает состояние датчика и зависимости от состояния происходит переход к какой-то ветви программы.

ЦАП Преобразователь уровня 1

Исполнительное устройство 1

Преобразователь уровня 2

Исполнительное устройство 2

Объект управления

Датчик 1 Преобразователь уровня

АЦП

Датчик 2 Преобразователь уровня

МКX1(t)

X2(t)Y1(t)

Y2(t)

y2(t)

y1(t)

аналог.

дискрет.

τ1(t)

τ2(t)

аналог.

дискрет.

RG DO

0 1 ∙ ∙ ∙ 7

DI 0 1 2 3 4 5 6 7

IPORT

ШД

+5 В

R

K

UВХ

Ввод из порта

Выделить разряд D1

D1 = 1 ?

Метка М1 Метка М2

OPROS

Да Нет

97

Page 98: Микропроцессорная техника

OPROS: IN IPORT ANI 0000 0010B ; выделить D1 JZ M2 ; если D1 = 0 M1: … ; если D1 = 1 ∙ ∙ ∙ M2: …

Ожидание события (ожидание появления определенного сигнала) − МП опрашивает состояние датчика в цикле до тех пор, пока на выходе датчика не будет заданного сигнала.

U

t

L−ур. H−ур.

Появление Н− уровня

Статические сигналы

U

t

Появление L− уровня

Импульсные сигналы

Положительный импульс Отрицательный импульс

RG DO

0 1 ∙ ∙ ∙ 7

DI 0 1 2 3 4 5 6 7

IPORT

ШД

+5 В

R

K

UВХ

Ввод из порта

Выделить разряд D2

D2 = 1 ?

WAIT_H

Да

Нет

Выход

98

Page 99: Микропроцессорная техника

CALL WAIT_HWAIT_H: IN IPORT ANI 0000 0100B ; выделить D2 JZ WAIT_H ; цикл ожидания RET ; выход

WAIT_L: IN IPORT ANI 0000 0100B ; выделить D2 JZ WAIT_L ; цикл ожидания RET ; выход

Борьба с дребезгом контактов

При использовании контактных элементов появляется дребезг (многократное срабатывание)

Для борьбы:1. аппаратный метод − используются RS − триггеры или триггер Шмидта

2. программный метод:а) подсчитывается число переключений контакта.

Ввод из порта

Выделить разряд D2

D2 = 0 ?

WAIT_L

Да

Нет

Выход

+5 В

R

K

UВЫХ(t)

t

UВЫХ(t)

При замыкани

и

При размыкании

R

S

TR1 4,7 K

R2 4,7 K+ 5 B

SB1

99

Page 100: Микропроцессорная техника

Время дребезга зависит от типа контакта: для реле небольшой мощности ≈ 20 ÷ 30 мс, для кнопок ≈ 10 мс, для герконовых реле ≈ 2 мс.

б) когда программа обнаружила срабатывание контакта, выполнение ее приостанавливается на время большее времени дребезга.

WAIT_L: IN IPORT ANI 0000 0010B JNZ WAIT_L ; цикл, если D1 = 1 CALL DELAY ; п/п задержки на tзд RET

Формирование управляющих сигналов

Виды управляющих сигналов:1] Статические

RG DO

0 1 ∙ ∙ ∙ 7

DI 0 1 2 3 4 5 6 7

IPORT+5 В

R

K

UВХ

Конт. сработал ?

DEBOUNCE

Да

Нет

Выход

п/п задержки

RG DO

0 1 ∙ ∙ ∙ 7

DI 0 1 2 3 4 5 6 7

IPORT+5 В

R

K

UВХ

tзад > tдр

RGDI

OPORT

UВЫХD0 0 1 2 3 4 5 6 7

УМ (преобразователь

уровней)

Исполнительное устройство (нагрузка)

UПИТ

100

Page 101: Микропроцессорная техника

VKL: MVI A, 01H OUT OPORT ; вывод D0 = 1OTKL: MVI A, 00H OUT OPORT ; вывод D0 = 0OTKL: XRA A ; сброс (А) OUT OPORT ; вывод D0 = 0

2] Импульсные (однократные и периодические) (см. далее)

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

2) Программный − выводимые данные запоминаются в ячейке памяти, перед новым выводом в порт читается содержимое порта и при необходимости маскируются ненужные разряды.

XRA AOUT OPORT ; гашениеSTA MEM ; запоминание в ячейке MEM…LDA MEM ; чтение состояния портаORI 0000 0001B ; установить D0 = 1OUT OPORT ; зажигается красная лампочкаSTA MEM…

UВЫХ

t

“Включить” VKL

UВЫХ

t

“Выключить” OTKL

RGDI

OPORT

DO

RGDI

IPORT

DO

Выводы

К ШД

К ШД1)

D00123∙∙

RGU1 (красная)

U2 (зеленая)

101

Page 102: Микропроцессорная техника

LDA MEMORI 0000 0100B ; установить D2 = 1OUT OPORT ; зажигается зеленая лампочкаSTA MEM…LDA MEMANI 1111 1110 ; D0 = 0OUT OPORT ; гаснет красная лампочкаSTA MEM; изменить свечение (проинвертировать D2)LDA MEMXRI 0000 0100 ; D2 ← OUT OPORTSTA MEM

3) если в качестве порта вывода − адаптер ВВ55

; Погасить лампочкиXRA AOUT PA ; вывод в порт РА; Зажечь краснуюIN PA ; читаем состояние выходов порта РАORI 0000 0010B ; D1 = 1OUT PA

2] Формирование импульсных управляющих сигналов

XRA AOUT OPORT ; вывод D1 = 0MVI A, 02HOUT OPORT ; вывод D1 = 1CALL DELAY ; задержка на tИ

XRA AOUT OPORT ; вывод D1 = 0

ШД ВыходыPA0123∙∙

PIO

U1 (красная)

U2 (зеленая)

U(t)

t

U(t)

t

D00123∙∙

RGUВЫХ(t)

102

Page 103: Микропроцессорная техника

MEANDER: MVI A, 02H OUT OPORT CALL DELAY XRA A OUT OPORT CALL DELAY JMP MEANDER

MEANDER: XRI 02H OUT OPORT CALL DELAY JMP MEANDER

Формирование временных задержек

1) Программный − МП выполняет определенный участок в цикле программыDELAY: MVI C, 10LOOP: NOP DCR C JNZ LOOP RETДостоинство: не требует дополнительных аппаратных затрат.Недостаток: во время задержки МП не выполняет никаких других программ.Если задержка большой длительности, то эффективность работы падает. Поэтому такой метод

используется при задержке мкс ÷ мс.2) Аппаратный − используют таймеры (программируемые). Задача: на выходе порта сформировать сигнал длительностью 10 мс. МП − К1821ВМ85А,

таймер − КР580ВИ53.

tи = tп = T/2tи tп

T

103

Page 104: Микропроцессорная техника

Адреса таймера: СТ0 − 04Н, СТ1 − 05Н, СТ2 − 06Н, РУС − 07НАдрес порта: 0000 1000В = 08НУС: 0011 0010В = 32НMVI A, 32HOUT 07H ;загрузить УС в таймерMVI A, 20HOUT 04H ; загрузить мл. байт в СТ0MVI A, 4ЕHOUT 04H ;загрузить ст. байт в СТ0MVI A, 01HOUT 08H ; вывод 1 в разряд D0EI ; разрешение прерыванийMVI A, 0EHSIM ; содержимое (А) заносим в регистр прерываний, т. е. разрешить прерывание по… ;RST 5.5ORG 002CH ; вектор прерывания по RST 5.5MVI A, 00HOUT 08H ; вывод 0 на D0RET

Управление дискретными нагрузками от МПС

Все виды нагрузок можно разделить по виду потребляемого тока:

OUT0

t

tзд

A0A1CS

PT

RDWR

D

0 1 7

OUT0

GATE0CLK0

1

ША А0

А2

RST5,5

CPU

CLK

RGDI

OPORT

UВЫХ

D0 0 1 2 3

COE

11A3

IOW

fCLK = 2 МГц TCLK = 0,5 мкс

tзд = n ∙ TCLK

n = 10 мс/5 мкс = 20∙103 = 4Е20Н

104

Page 105: Микропроцессорная техника

1. нагрузка постоянного тока − светодиоды (СИД), индикаторные лампочки, электромагнитные реле, динамики.

2. нагрузка переменного тока − осветительные лампы, магнитные пускатели, электронагревательные элементы.

1)СИД: АЛ307(А, Б. В, Г), (А, Б. В, Г) − цвет свеченияIСР ≤ 20 мА∆ UПР = 1…3 ВПорт вывода − КР 580ИР82 − без инверсии, КР 580ИР83 − с инверсиейI1

ВЫХ ≤ 1 мАI0

ВЫХ ≤ 32 мА

КР1533ИР33 (23)I0

ВЫХ ≤ 20 мАКР580ВВ55А − параллельный адаптерI1

ВЫХ ≤ 2 мАI0

ВЫХ ≤ 40 мАНадо использовать усилители тока − буферные элементы:

DO0123∙∙

RG“0” − горит

“1” − не горит

+5 В

R1

VD1

1

1

инвертор

повторитель

К155ЛН3 (6НЕ)I0

ВЫХ ≤ 40 мА

К155ЛН4

PA012…

PIO

горит

не горит

+5 В

R1

VD11

PB0123…

1

+5 ВR2

VD2

“1”

“1”

“0”

“0”

“0”

“0”

“1”

“1”

горит

не горит

PA0123∙∙

PIO+5 В

R4

VD1

R5

VT1

105

Page 106: Микропроцессорная техника

, т. к. Iпр = Iк

U1ВЫХ ≈ 2,4 В

∆UБЭ = 0,7 В

Электромагнитное реле постоянного тока: РЭС9, РЭС10, РЭС22, РЭС32

UРАБ = 6; 12; 15; 24 ВIРАБ = …RОБМ = …

КД105, КТ503При срабатывании реле VD − в обратном включении и не оказывает влияния

Громкоговорители (динамики):

RОБМ = 4…8 Ом

НР НЗ П (тройник)

К

DO0123∙∙

RGUП

VD1

R1VT1

K1 e

DO0123∙∙

RG

VT1R1

&

ЗГ

BA1

+UП

UЗГ

U1

UВЫХ

106

Page 107: Микропроцессорная техника

РВЫХ = 0,5; 1; 2;…UФ = 220 ВUЛ = 380 В

Необходимо обеспечить гальваническую развязку:1.

Но экономически не выгодно из-за использования трансформатора2. использование оптоэлектрического прибора:

IВХ = 15…20 мАIВЫХ = 50…200 мАИспользуется фототиристор АОУ103(А, Б, В) − переменное напряжение , которое

прикладывается к вых. цепи.

D00123∙∙

RGR1 VS

EL

Uc

Запрещена

Uc

TV

UВЫХUВХ

IВХ IВЫХ

UВЫХUВХ

IВХ IВЫХ

UСV1

1

R

+5 В

EL

107

Page 108: Микропроцессорная техника

Применяется также симистор:

2)Оптоэлектронное реле:

U = класс ∙ 100, В

3-хфазное реле переменного тока, нереверсивное:

V1

1

R

+5 В

EL

V1

1

R

+5 В

ELVS1

“0”“1”

КУ202Н Т2−10

1UС

V1

R1

+5 В

EL

V2

R2

+5 В

VS1

~UВХ

IВХ

5П19. 10ТС−1−4−А1(Б1, Б2)

ток, А: 1; 3; 10; 20

Класс: 4; 6; 8

108

Page 109: Микропроцессорная техника

Сопряжение АЦП с МПССопряжение ≡ интерфейсАЦП выпускается в виде МС. Характеризуются большим количеством параметров. При

сопряжении важны 2:1. разрядность цифрового входа АЦП, nАЦП

2. Быстродействие АЦП − время преобразования tПР, мкс (от момента запуска АЦП до момента появления цифрового кода).

Тип АЦП nАЦП tПР, мксК572ПВ1К572ПВ3К1107ПВ1К1107ПВ2К1108ПВ1К1108ПВ2К1113ПВ1

12868

10(8)1210

110…1507,50,10,1

0,9(0,7)2,030

Все АЦП по быстродействию делят на 2 группы:1) быстрые;2) медленные;КР580ВМ80: при fT = 2 МГц, Т = 0,5 мкс, fK = 3…5 мкс

Основные сигналы, с которыми работают АЦП:1. сигнал запуска (Start, ST)2. конец преобразования (Data Ready, DR)3. выходные сигналы (Data Output, DO)

На выходе АЦП − буферы с тремя состояниями. Имеется спец. сигнал и вывод для управления выходными буферами − разрешение буфера (Output Enable, OE).

Имеется сигнал для подачи тактовой частоты от внешнего генератора (CLK).AI − вход для подачи аналогового сигнала.

UВХ

IВХ А1

А2

В1

В2

С1

С2

5П36.30ТС−10−6−Г1(Г2, Д1, Д2)

ток, А: 10; 20; 40; 80

Класс: 4; 6; 8; 10; 12

EL KM EK HL

109

Page 110: Микропроцессорная техника

a − стартb − начало преобразованияb ÷ с − преобразованиес − конец преобразованияd − на выходе появляется цифровой коде − завершение вывода

Интерфейс быстрых АЦП с МПС

1) nШД ≥ nАЦП

− выбор порта для запуска АЦП − выбор порта разрешения выдачи кода АЦП

Запуск: OUT PORT1

^/# D0 0 1 2 … 9

OE

AI CLK

ST

DR

0 1 2 3 4 5 6 7 8 9

a b

c

d e

tпр

Выход. кодDO

DR

ST

CLK

МПШД

IOW

IOR

DA

1

1

Адресный селектор

SEL1

SEL2

АЦП AI

ST

OE DO

UВХ

8

ША Адрес PORT1

ST

110

Page 111: Микропроцессорная техника

Вывод данных: IN PORT2

Программное управление АЦП:OUT PORT1 ; запуск АЦПIN PORT2 ; чтение кода АЦП

Задержки позволяют согласовывать быстродействие АЦП и МПС.2) nШД < nАЦП − код разбивают на 2 байта и записывают в буферные регистры; МП считывает

сначала мл. байт, затем ст. байт.

OUT PORT1 ; запуск ЦАПIN PORT2 ; чтение Мл. Б. кодаIN PORT3 ; чтение Ст. Б. кода

К1108ПВ1:

UП1 = +5 В, UП2 = −5,2 В.AI − вход аналогового сигналаGA − аналоговая земляGD − цифровая земляST − вход запускаERD − разрешение чтение выходного кода

ША Адрес PORT2

DO Код

8МПШД

IOW

IOR

DA

1

1

Адресный селектор

SEL1

SEL2 1

SEL3

АЦП AI

ST

OE DO

UВХ

RG DI ◊ D0

OE

RG DI ◊ D0

OE

8

8

Мл. Б

Ст. Б

^/# D0 0 1 2 … 9

AI GA GD STERDSE10/8

C DR

111

Page 112: Микропроцессорная техника

SE10/ → 0 АЦП − 8-ми разрядный → −5,2 В АЦП − 10-ти разрядныйС − вход синхронизацииDR − готовность данных

Схема интерфейса с 8-разрядным АЦП

А7 А6 A5 A4 A3 A2 A1 A0 HEX код

1 0 0 0 0 0 0 01 0 0 0 0 1 0 1

8081

DD2.1 − для формирования импульса запускаDD2.2 − формирование сигнала разрешения выхода

OUT 80H; Запуск АЦПIN 81H; Чтение кода АЦП

Интерфейс с 10-разрядным АЦП

0 1 2 3 4 5 6 7 8 9

tпр

ST

CLK

Код АЦПDO

DR

DC 0

1

2

3

4

5

6

7

A

0

1

2

&

A2

DD2.1

С1

ША

^/# D0 0 1 2 … 9

AI GA GD STERDSE10/8

C DR

1

1

SEL80H

SEL81H

IOW

IORDD2.2

КР1533ЛЛ1

DD1 КР1533ИД7

A1

A0

A3

A4

A7

UВХ ШД

К1108ПВ1

112

Page 113: Микропроцессорная техника

DD1: КР1533ИД7DА2: К1108ПВ1DD2: КР1533ЛЛ1DD4: КР1533ИР33 − мл. байтDD5: КР1533ИР33 − ст. байтOUT 80H ; запуск АЦПIN 81H ; чтение мл. байта кода АЦПMOV C, AIN 82H ; чтение ст. Байта кода АЦПANI 0000 0011В ; выделить D1, D0MOV B, A ; в регистровую пару ВС − код АЦП

Интерфейс медленных АЦП с МПС

После запуска АЦП надо ожидать момента появления данных на выходе АЦП.DR − готовность данных (“1” − данные готовы).

1. С программным опросом готовности данных.2. С прерыванием программы по сигналу DR.

1) Асинхронный метод с квитированием: после запуска АЦП МП постоянно опрашивает вывод DR, в случае готовности данных происходит считывание кода.

К1113ПВ1:

DC 0

1

2

3

4

5

6

7

A

0

1

2

&

A2

DD2.1

ША

1

1

SEL80H

SEL81H

IOW

DD4

DD1 КР1533ИД7

A1

A0

A3

A4

A7

С1

^/# D0 0 1 … 7 8 9

AI GA GD STERDSE10/8

C DR

UВХ

DA1 К1108ПВ1

DD2.3

1

IOR

SEL82H

-5,2 В

DI01…7

◊D00

7

С

OE

Ucc

GND

RG

DI01…7

◊D00

7

С

OE

Ucc

GND

RG

+5 В

+5 В

ШД

DD5

Запуск АЦП

Данные готовы?

ADCONV

Да

Нет

Выход

Чтение кода АЦП

113

Page 114: Микропроцессорная техника

В/ − гашение tИ ≥ 2 мкс.

ADCONV: MVI A, 01H OUT 80H; D0 ← 1 XRA A OUT 80H; D0 ← 0 (запуск АЦП)

TEST: IN 82HANI 1000 0000B; выделить D7JNZ TEST; цикл, если D7 = 1IN 81H; чтение мл. байта кодаMOV C, AIN 82H; чтение ст. байта кодаANI 0000 0011B; выделить D1, D0MOV B, A; в регистровой паре ВС − код АЦП

^/# D0 0 1 2 … 9

AI

GA

GD

В/

UП1

UП2DR

+ 5 В

− 15 В

0 1 2 3 4 5 6 7 8 9

tпр

CLK

Код АЦПDO

tиB/

DC 0

1

2

3

4

5

6

7

A

0

1

2

&

A2

ША

IOR

DD1

A1

A0

A3

A4

A7

DD3.1

1

1

SEL81H

SEL82H

IOW

^/# D0 0 1 … 7 8 9

AI

DR

DD3.2

1

Т D

C

SEL80H

ШДD0

DD2 КР1533ТМ2

UВХ

DD4

DI01…7

◊D00

7

С

OE

Ucc

GND

RG

DI01…7

◊D00

7

С

OE

Ucc

GND

RG

+5 В

+5 В

ШД

DD5

D0

D7

D0

D1

Мл. Б

Ст. Б

КР1533ИР33

114

Page 115: Микропроцессорная техника

1]

UВХ МАХ = 10,24 В, при однополярном входном сигнале.UВХ МАХ = ± 5,12 В, при двухполярном входном сигнале.Ширина дискреты: 210 = 1024

∆U = = 10 мВ.

28 = 256 → UВХ МАХ = 28 ∙ 10 мВ = 2,56 В, т. е. в 4 раза уменьшается ширина сигнала.

2]

UПОР = 22 ∙ ∆U = 4 ∙ 10 мВ = 40 мВ.Не уменьшает диапазон входного сигнала, но увеличивает в 4 раза UПОР.

ADCONV: MVI A, 01H OUT 80H XRA A OUT 80H ; запуск АЦП CALL DELAY ; задержка на 30 мкс IN 81H ; чтение кода АЦП RET2) Программа запускает АЦП и продолжает свою работу. Сигнал готовности служит запросом

прерывания и по этому запросу МП переходит к обработке подпрограммы, считывает данные, запускает АЦП и происходит возврат к основной программе.

DO012∙∙789

DO012∙∙789

UВХ

UПОР

t

DO012∙∙789

RG ШДD0 0 1 2 3 ∙ ∙ ∙ 7

COE

D0 0 ∙ ∙ 5 6 7 +5 В

115

fCLK = 2 МГц TCLK = 0,5 мкс

Page 116: Микропроцессорная техника

МП не ждет готовности данных. Недостаток − дополнительные аппаратные затраты.

Сопряжение ЦАП с МПС

Наиболее важны 2 параметра ЦАП для сопряжения с МП:1. разрядность входного кода (nЦАП)2. быстродействие ЦАП (tУСТ, мкс) − это время от подачи на вход ЦАП кода до момента

появления на выходе установившегося сигнала.

Запуск АЦП

Разрешить прерываеие

Продолжение осн. программы

Чтение кода АЦП

Запуск АЦП

Разрешить прерываеие

Продолжение осн. программы

Подпрограмма обработки

прерывания

Начало

АЦП

DR

Модуль процессора

INT

Модуль прерывания Вектор прерывания

INT

DR

Вектор прерывания

(ШД) Код

116

Page 117: Микропроцессорная техника

Параметры типовых ЦАП:

Тип ЦАП nЦАП tУСТ, мксК572ПА1К572ПА2К594ПА1К1108ПА1К1118ПА1К1118ПА2

10121212810

5153,50,40,020,08

При подключении ЦАП к МПС надо, чтобы код на входе поступал одновременно на все разряды; подавать побайтно нельзя, т. к. на выходе ЦАП будут большие помехи и tУСТ значительно увеличится.

КР572ПА1 − 10-разрядный АЦП:

UВХ

(код)

t

UВЫХ

ttУСТ

Порт вывода мл. байта кода

Порт вывода ст. байта кода

88

44

8

Буфер с тремя

выходными состояниями

ОЕРазрешение вывода кода

Порт вывода ст. байта кода

код

12 UВЫХ

ШД

117

Page 118: Микропроцессорная техника

DA2 − преобразует токовый сигнал в напряжениеDD3 − порт вывода мл. байта кода (адрес 80Н)DD4 − порт вывода ст. байта кода (адрес 81Н) − одноразрядный порт на триггере для разрешения выдачи кода (адрес 82Н).DACONV − п/п ЦАПLXI H, DATACALL DACONV

DACONC: MVI A, 01H OUT 82H ; запрет выдачи кода MOV A, M ; чтение мл. байта из ОЗУ OUT 80H ; запись мл. байта кода INX H MOV A, M ; чтение ст. байта из ОЗУ OUT 81H ; запись ст. байта кода XRA A ; D0 ← 0 OUT 82H ; разрешение выдачи кода на ЦАП RET

Устройство сбора и распределения данных

Для уменьшения помех используют фильтры и нормирующие схемы. Эти устройства называются: УСД (устройство сбора данных) − многоканальное устройство преобразования аналогового сигнала в цифровой код и УРД (устройство распределения данных) − многоканальное устройство преобразования цифрового сигнала в аналоговый код.

УСД:1. параллельный метод построения2. последовательный (мультиплексный) метод построения

1) для каждого аналогового сигнала отдельный канал:

DC 0

1

2

3

4

5

6

7

A

0

1

2

&

A2

ША

1

1

SEL80H

SEL81H

IOWDD1

КР1533ИД7

A1

A0

A3

A4

A7

1

SEL82H

IOW

DD3

DI01…7

◊D001

7 С

OE

RG

DI01…7

◊D001

7 С

OE

RG

DD4

ШД

ШД

Т D

C

ШД

D0

DD2

#/^

IOC

I1

I2

DI 0 1 7 8 9

DA1

DA2

UВЫХ

118

Page 119: Микропроцессорная техника

НУ − нормирующее устройство, приводит сигналы к уровням, требующимся для работы с АЦП.

УВХ − устройство выборки и хранения, запоминает мгновенные значения сигналов на время равное времени преобразования.

ФНЧ − для подавления сетевых помех.Достоинство:

высокие требования к частоте высокое быстродействие низкий уровень помех

Недостаток: дороговизна.

2) ставится один АЦП и аналоговый мультиплексор (коммутатор), который переключает аналоговые каналы:

Достоинство: дешевизна схемы.Недостатки:

высоки требования к быстродействию АЦП значительный уровень помех

УРД:1. параллельный метод построения2. последовательный (мультиплексный)

1)

ФНЧ НУ УВХ АЦПХ1 Х1

ФНЧ НУ УВХ АЦПХn Хn

ШД

ФНЧ НУХ1

ФНЧ НУХn

УВХ АЦПХ

ШД

Аналоговый коммутатор

ЦАП ФНЧy1

ЦАП ФНЧ

ШД

yn yn

y1

119

Page 120: Микропроцессорная техника

Достоинство: высокая точность преобразования низкий уровень помех

Недостаток: дороговизна.2)

Достоинство: низкая стоимость.Недостаток: большой уровень помех.В качестве коммутаторов применяют КР590КН2(3, 4, …, 8) − на КМОП-структуре.

UП1 = +15 ВUП2 = −15 ВUВХ = 0…10 ВUВХ = −5…+5 ВЕ = 0 → все ключи разомкнуты (rРАЗ = 1012 Ом, rЗАМК ≈ 1012 Ом).

А2 А1 А0

0 0 00 0 1

…1 1 1

y = x1y = x2

…y = x8

ЦАП

ШД ФНЧ

ФНЧ

Аналоговый коммутатор

y1

yn

SW

КР590КН6

Аналоговый сигнал

x1x2…x8

A012

E

Y

Цифровой сигнал (ТТЛ)

120

Page 121: Микропроцессорная техника

Организация связи МПС с оператором.

Используется клавиатуры и дисплей.Подключение линейного дисплея на ССМИ (семисегментный индикатор).ССДИ – семисегментный светодиодный индикатор.Достоинства: дешево, большая яркость.Недостаток: большая потребляемая мощность.

АЛС321А(Б, В, Г)АЛС324А(Б, В, Г)АЛС333А(Б, В, Г)АЛС339А(Б, В, Г)

По виду соединения диодов:— С общим катодом;— С общим анодом.

Параметры СДИ:1. Потребляемый токIпр.ср≤20 мАIпр.имп≤300 мА (при tимп≤10 мс, скважность Q≥10)2. Падение напряжения.

пр=2…3,5В

Для работы индикатора требуется семисегментный код:1. использование специальных преобразователей кодов (из двоичного в семисегментный) – К514ИД1 (общий коллектор) и К514ИД2 (общий анод).

R1-R7 ограничивают токи, протекающие через выходные транзисторыR1-R7 = 110…330 Ом.

121

a

f g b

e d c h

AVD

K

0

a

b

h

БГ(ОА)

0

a

b

h

А, В(ОК)

KP514ИД1

HG1

Двоично-десятичный код

1 - разрешение

R0123

E

x/y abcdefg

abcdefg0

Page 122: Микропроцессорная техника

2. Программная перекодировка – для каждого сегмента выделяется свой разряд в семисегментном коде.

Д7 Д6 Д5 Д4 Д3 Д2 Д1 Д0 НЕХ Символ0 0 0 0 0 1 1 0 06 10 1 0 1 1 0 1 1 5В 2

1 0 0 0 0 0 0 0 80 ,

В ПЗУ должны быть коды отображаемых символов, программа выбирает из ПЗУ этот код в соответствии с двоичным кодом требуемого символа.; подпрограмма перекодировки; регистр А – двоичный код символа; регистр А – семисигментный код символа

CROSSCOD: MOV C,AMVI B,00h В регистровой паре ВС – двоичный кодLXI H,TABLECODDAD B (HL) (HL)+(BC)MOV A,M Чтение кода символаRET

TABLECOD DB 3Fh Код символа «0»DB 06h Код символа «1»

DB 71h Код символа «F»

122

KP514ИД2

АЛС339БR

0123

E

x/y abcdefg

abcdefg05 В

a

f g b

e d c h

D7 D6 D5 D4 D3 D2 D1 D0

1 – Свечение0 - Затемнение

HG1АЛС339ARG Д0

0123…7

1

1

1

5 B

5 B

5 B

К155ЛП9

HG1АЛС339БRG Д0

0123…7

1

1

1

К155ЛН3

+5 В

R1

R8

Page 123: Микропроцессорная техника

Управление индикаторами линейного дисплея.

1. статический метод2. динамический (мультиплексный)

Статический метод.

Все индикаторы постоянно включены в работу.Для управления используют:

1. дешифраторы семисегментного кода2. программную перекодировку.

123

Ц4 Ц3 Ц2 Ц1

аb…g

x/y0123

аb…g

x/y0123

HG1

HG2

D00123

4567

RG

OPORT1

аb…g

x/y0123

аb…g

x/y0123

HG3

HG4

D00123

4567

RG

OPORT2

ОЗУ:

DATAДАННЫЕ 1

ДАННЫЕ 2

Ц1

Ц4 Ц3

Ц2 Ц1

Ц4 Ц3

Ц2

Page 124: Микропроцессорная техника

DISPLAY – подпрограмма управления дисплеем

DISPLAY LXI D,DATA Начальный адрес массиваLDAX D В (А) код для Ц1, Ц2OUT OPORT1 Вывод на HG1, HG2INX DLDAX D В (А) код для Ц3, Ц4OUT OPORT2 Вывод на HG3, HG4RET

OPORT1: для HG1OPORT2: для HG2OPORT3: для HG3OPORT4: для HG4

124

Буферные элементы HG3

HG4

D00123

4567

RG

OPORT4

Буферные элементы HG1

HG2

D00123

4567

RG

OPORT1

Двоичный код символа 1

Двоичный код символа 2

Двоичный код символа 3

Двоичный код символа 4

ОЗУ

DATA

Page 125: Микропроцессорная техника

DISPLAY LXI D,DATA Начальный адрес массиваLDAX D В (А) код для символа 1CALL CROSSCODE Подпрограмма перекодировкиOUT OPORT1 Вывод на HG1INX DLDAX D Чтение кода символа 2CALL CROSSCODEOUT OPORT2

OUT OPORT4RET

Достоинства:1. простота программной реализации2. простота схемной реализации

Недостатки:1. большой потребляемый ток:

Iпотр = Iср*8*4 = 20*8*4 = 640 мА2. большое число соединительных проводов

n = 8*4+1 = 333. число индикаторов ≤ 4

Динамический (мультиплексный).

В каждый момент времени горит только 1 индикатор.

Чтобы не было мерцания надо напряжение подавать сначала на сегменты, затем на электроды:

125

Un-1 U1Un

СДВИГОВЫЙ РЕГИСТР

Семи-сегмент-ный код

Page 126: Микропроцессорная техника

D0

D1

D2

D3

Данные для вывода находятся в ОЗУ в соседних ячейках:

126

tсв

tзатем tзатем

Буфер

HG4

D0012…7

RG

PORT_SEGM

D001234

RG

PORT_SСАN

… … … …

аbс

h

К4 К3 К2 К1

HG4 HG4 HG4

C1

C2

C3

C4

DATA HG1

HG2

HG3

HG3

Page 127: Микропроцессорная техника

Погасить все индикаторы

Чтение данных для сегментов

Перекодировка

Вывод в PORT_SEGM

Вывод кода сканирования в PORT_SCAN

Задержка на время tсв

Tscan = tсв ≤ 50 мсD7 D6 D5 D4 D3 D2 D1 D00 0 0 0 0 0 0 1

0 0 0 0 0 0 1 0

0 0 0 0 0 1 0 0

0 0 0 0 1 0 0 0

Подпрограмма сканирования дисплея

DISPLAY XRA AOUT PORT_SCANMVI B,00000001 Начальный код сканированияPUSH BLXI D,DATA Начальный адрес

AGAIN LDAX D Чтение кода символаCALL CROSSCODE В (А) семисегментный кодOUT PORT_SEGMPOP B Чтение кода сканированияMOV A,BOUT PORT_SCAN Включение индикатораCALL DELAY Подпрограмма задержки на tсвCPI 00001000JZ DISPLAY Если да, идти на началоRLC Сдвиг кода сканированияMOV B,APUSH BINX D Адрес следующего символаJMP AGAIN Зацикливание

Недостаток: микропроцессор не выполняет никакой другой работы.

Программа управления дисплеем с использованием таймера.

127

DISPLAY

Page 128: Микропроцессорная техника

Подпрограмма обработки прерывания состоит в выборе кодов в порт сегментов и порт сканирования, после выбора – возврат в основную программу.

Программа инициализации дисплея

INIT_DISPLAY:

XRA A

OUT PORT_SCANMVI A,00000001BPUSH PSWLXI D,DATAEI Разрешение прерывания

ORG XXX Вектор прерывания

Подпрограмма обработки прерываний.DISPLAY: XRA A

OUT PORT_SCAN Погасить дисплейLDAX D Чтение кодаCALL CROSSCODE ПерекодировкаOUT PORT_SEGMPOP PSW Чтение кода сканированияOUT PORT_SCAN Зажечь индикаторCPI 00001000B Индикатор последний?JZ AGAIN Да, идти на ссылкуRLC Сдвиг влевоPUSH PSW Запомнить новый кодINX D Адрес следующего символаEIRET

AGAIN XRA AOUT PORT_SCANMVI A,00000001BPUSH PSWLXI D,DATAEIRET

В зависимости от видов использованных индикаторов:1. Индикаторы с ОК.

128

Генератор (таймер)

Модуль процессораINT (RST)

Модуль прерывания

Векторпрерываний

tсв

Page 129: Микропроцессорная техника

2. индикаторы с ОА.

Достоинства:1. меньше потребляемый ток.2. меньшее число соединительных проводов.3. меньшее количество портов и буферных элементов.

Недостаток – сложность программного обеспечения и опасность разрушения индикаторов при остановке сканирования.Iпр = 15…20 мА

Интерфейс дисплея с клавиатурой.

Клавиатуры делятся:1. простейшие2. более сложные.

Два вида клавиатур:1. кодирующие

129

a

h

1

1

1

+5 B

От порта PORT_SEGM

От порта PORT_SCAN

K155АП9

K155ЛН3

a

h

1

+5 B

От порта PORT_SEGM

От порта PORT_SCAN 1

VT1KT209KT503

R2300

R1

300

R

150...300

Page 130: Микропроцессорная техника

2. некодирующие

Кодирующие клавиатуры.

Каждой клавише соответствует определённый вход порта ввода, узнать положение клавиши можно опрашивая вход порта.

R1 – R8 1...4,7 kOm

Нажата Унитарный код Позиционный код

SA1 11111110 00000000SA2 11111101 00000001SA3 11111100 00000010

SA8 01111111 00000111

Преобразование унитарного кода в позиционный.1. табличный метод2. метод сдвигов унитарного кода

Табличный метод.

130

123

8

SA14 5

3 62 71 8

SA1 SA2 SA8

Без фиксации:

С фиксацией:

SA1

DI01

7

R1SA1 R2 ...

SA2

SA8 R8

+5 B

RG

DI01

7

+5 B

RG

Page 131: Микропроцессорная техника

Основан на том, что в ПЗУ имеется таблица кодов: каждому унитарному коду соответствует позиционный.

IN IPORTCMACPI MASKJZ EXIT

При выходе выбирается позиционный код, соответствующий данной маске.MASK1 EQU 00000001BMASK2 EQU 00000010B MASK8 EQU 10000000B

IDENTIF1:

IN IPORT

CMA Инверсия кодаCPI MASK1JZ EXIT1CPI MASK2JZ EXIT2

CPI MASK8JZ EXIT8MVI B,0FFH Если не нажата ни одна клавишаRET

EXIT1 MVI B,00HRET

EXIT2 MVIB,01HRET

EXIT8 MVI B,07H

Метод сдвигов унитарного кода.

Исходный код после инверторов сдвигается вправо через перенос (если нажата клавиша, то флаг переноса = 1).

131

Page 132: Микропроцессорная техника

IDENTIF2 IN IPORTMVI B,0MVI C,8CMA ИнвертироватьORA A Сброс CY

SHIFT RARJC EXITINR BDCR CJNZ SHIFTMVI B,OFFH

EXIT RET

В регистре В – двоичный позиционный код.

Если возможно нажатие нескольких клавиш, то надо после программы идентификации проверить (А) и если там не 0, то было нажато два или более клавиши.К переключателям с фиксацией относится декадные переключатели: номеронабиратели.

132

IDENTIF2

Ввод из порта

Инвертировать код

Загрузка в (С) = 8

Очистить счетчик сдвигов регистра В

Сдвиг вправо

CY=1?

Декремент регистра С

Инкремент регистра В

CY=1?

Выход

Выход

Да

Да

Нет

Нет

Page 133: Микропроцессорная техника

Цифра Код 23 22 21 20

0 0 0 0 01 0 0 0 1 9 1 0 0 1

Ak: СтЦ МлЦ

В случае клавиш без фиксации надо уловить момент, когда кнопки нажимаются:1. Программа ожидает нажатие клавиши. Программа сначала ожидает нажатие клавиши,

затем защита от дребезга, затем программно ожидает отжатия клавиши, затем идентификация нажатой клавиши.

KEYBOARD IN IPORTCMAORA A Установить флаги

133

+5 ВSA1 20 = 1

SA2 21 = 2

SA2 22 = 4

SA2 23 = 8

DI01234567

RG

R1 R4

R5 R8

МлЦ

СтЦ

SA1

SA2+5 В

+5 В

Iвх0 ≤ 1,6 мА

Uвх0 = 1,6*300 = 0,48 В

Uвх0max ≤ 0.8 B

R1 – R8 = 300 Om

KEYBOARD1

DELAY

WAIT_OFF

IDENTIF

WAIT_ON

Возврат

Page 134: Микропроцессорная техника

JZ KEYBOARD Цикл ожиданияPUSH PSWCALL DELAY

WAIT IN IPORTCMAORA AJNZ WAIT Ожидание нажатияCALL IDENTIFRET

IDENTIF POP PSW

Недостаток: МП постоянно ожидает нажатия клавиши.

2. Периодически вызывается подпрограмма ввода кода из порта, период должен быть достаточно малым, частота опроса порта не менее 10 раз в секунду.

Неудобство – надо периодически вызывать эту программу.

3. С использованием прерывания программы:

134

KEYBOARD2

Ввод из порта

Инвертировать код

Загрузка в (С) = 8

Сдвиг вправо

CY=1?

Выход Да

Нет

Выход

DI01

7

RG

&

+5 B

SB1

SB2

SB8

t

Сигнал, поступающий на вход запроса прерывания микропроцессора

Page 135: Микропроцессорная техника

Достоинство – отсутствие потерь времени на ожидание нажатия клавиши.Недостатком кодирующих клавиатур является большое число входов портов. В случае большого числа клавиш используют не кодирующие клавиатуры.

Не кодирующие.

Контакты клавиш присоединяются к матрице, образованной пересечением вертикальных и горизонтальных линий.

Идентификация нажатой клавиши осуществляется методом сканирования: на один ряд подается код сканирования (бегущий «0»), а с другого ряда снимается байт возврата – если не нажата ни одна клавиша в байте возврата 1, если нажата клавиша 0, в соответствующем разряде.

Программируемый контроллер КР580ВВ79 с клавиатурой и дисплеем.

Функционально БИС делится на две части:— Клавиатурная (управляет работой клавиатуры или матрицы датчиков)— Дисплейная

Имеется оперативная память (восемь ячеек – восемь байтов): в режиме ввода датчиков – как обычная ОЗУ; в режиме работы с клавиатурой – как регистр FIFO.Дисплейная часть рассчитана на работу с семисегментными индикаторами. Имеется ОЗУ для вывода данных на индикаторы (шестнадцать ячеек).

135

KEYBOARD3

DELAY

WAIT_OFF

IDENTIF

RET

Ввод из порта

Page 136: Микропроцессорная техника

Д – выводы шины данных;АО – шина адреса;СS – выбор МС;RD – строб чтения;WR – строб записи;СLK – сигнал для тактовых импульсов fmax = 2 mГц;RESET – вход сброса начальной установки «1» - во всех регистрах 0;Ucc – питание +5 В;SND – земля;RL0 ... RL7 – линия возврата (байт возврата при опросе клавиатуры);SHIFT – линия сдвига;CTRL/ - линия управления или стробирования;SL0 ... SL3 - линия сканирования (вырабатывается сканирующий код);DSPA0 ... DSPA3 – младший такт линии управления;DSPB0 ... DSPB3 - старший такт линии управления;BD – вывод бланкирования (гашения дисплея);IRQ – вывод сигнала запроса прерывания.

Программирование КР580ВВ79.

Программная модель контроллера:

0000 Ячейка 0 Ячейка 1 000

136

017

A0CS

RDWRCLK

RESET

UccGND

PKDCRL0RL1

RL7SHIFTCTRL/

SL0

SL3DSPA0

DSPA3DSPB0

DSPB3

BDIRQ

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

Регистр данных

А0 = 1

А0 = 0

8 8

Page 137: Микропроцессорная техника

0001 Ячейка 1 Ячейка 2 001

ОЗУ дисплеяОЗУ

клавиатуры / портов вывода

1111 Ячейка 15 Ячейка 8 111Команды для управления контроллера:

1. общие (используются во всех режимах);2. управляющие дисплеем;3. управляющие клавиатурой (портами ввода).

Тип команды НаименованиеОбщие — установка режимов работы

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

Команды управления дисплеем — чтение из ОЗУ дисплея— запись в ОЗУ дисплея— бланкирование – запрет записи.

Управление клавиатурой (портами ввода)

— чтение ОЗУ клавиатуры (портов ввода)— установка режима ошибки – сброс

прерывания.

Команды установки режимов работы.

7 6 5 4 3 2 1 00 0 0 Д Д К К К

Типкоманд

Управление

дисплеем

Управлениеклавиатурой

Д Д0 0 Восьми позиционный дисплей Ввод слева1 0 Ввод справа0 1 Шестнадцати позиционный

дисплейВвод слева

1 1 Ввод справа

Пример ввода числа 245 слева: 2 2 …4 2 4 …5 2 4 5 …

Пример ввода числа 245 справа:… 2 2

… 2 4 4… 2 4 5 5

К К К Примечание0 0 0 Режим ввода с клавиатуры с обнаружением двух

и более нажатых клавишКодирование SL0 … SL3

0 0 1 Декодирование SL0 … SL3

0 1 0 Режим ввода с клавиатуры без блокирования ввода одновременно нажатых клавиш

Кодирование SL0 … SL30 1 1 Декодирование SL0 …

SL31 0 0 Опрос восьми портов ввода Кодирование SL0 … SL3

137

Page 138: Микропроцессорная техника

1 0 1 Декодирование SL0 … SL3

1 1 0 Режим стробируемого ввода Кодирование SL0 … SL31 1 1 Декодирование SL0 …

SL3

Кодирование – на линейное кодирование вырабатывается двоичный код (бегущий ноль).

Декодирование – с выхода контроллера идет действительный код сканирования (бегущая 1).

Программная очистка.

7 6 5 4 3 2 1 01 1 0 Д Д Д F 0

F – сброс регистра слова состояния и сброс сигнала запроса прерывания.0 – бит общей очистки FIFO, ОЗУ дисплея.

Д Д Д Примечание0 0 Х Запись в ОЗУ нулей (гашение индикаторов)0 1 0 Запись в ОЗУ кода пробела0 1 1 Запись в ОЗУ единиц (горение всех сегментов)

Код пробела: 20Н = 00100000В

Управление частотой сканирования.

7 6 5 4 3 2 1 00 0 1 Р Р Р Р Р

138

А012

Д001234567

SL0

SL0

SL0

SL0

Page 139: Микропроцессорная техника

Р – коэффициент деления.

Условные регистры:РУС – при А0 = 1DAN – при А0 = 0

Пример: произвести инициализацию контроллера со следующими параметрами: произвести ввод данных с клавиатуры с блокировкой, шестнадцати позиционный дисплей, ввод слева, частота сканирования 5 кГц, частота синхронизации 2 мГц.7 6 5 4 3 2 1 00 0 0 0 1 0 0 0fclk – 2 мГцf1 = 2000/100 = 20 кГцf2 = fskan = 5 кГцКдекг = 4

INIT1 MVI A,001H Управляющее словоOUT РУСMVI A,008H Команда режимаOUT РУСMVI A,24H Установка частоты сканированияOUT РУС

Чтение из ОЗУ дисплея.

7 6 5 4 3 2 1 00 1 1 АI А А А А

Признак команды

Адрес ячейки ОЗУ дисплея

АI – бит автоинкремента адресации (автоматически увеличивает адрес после каждой команды чтения).

139

Kдел1 = 100 Kдел2 = 2 ... 31f clk f scan

7 6 5 4 3 2 1 0

Ячейка 0

Ячейка 1

Ячейка 15

0000

0001

1111

Page 140: Микропроцессорная техника

Запись в ОЗУ дисплея.

7 6 5 4 3 2 1 01 0 0 АI А А А А

Пример: составить программу чтения кода символа, отображается на пять позиций дисплея.01100101 = 65Н

MVI A,65HOUT РУСIN DAN ; в регистре А – содержимое ячейки 0101

Пример: составить программу для вывода «,» на вторую позицию дисплея.01100010 = 62Н

MVI A,62H;OUT РУС;IN DAN; ORI 10000000B ; установить Д7 = 1MOV C,A;MVI A,82H; – 10000010ВOUT РУС ; команда записиMOV A,C;OUT DAN;

Бланкирование – запрещение записи.

При вводе информации данные помещаются в ОЗУ ввода:1. режим опроса портов ввода (можно опрашивать восемь восьмиразрядных портов ввода,

данные из каждого порта помещаются в ОЗУ ввода).

000 Ячейка 0001 Ячейка 1

111 Ячейка 7

7 6 5 4 3 2 1 00 1 0 АI Х А А А

Адрес ячейки ОЗУ ввода

2. режим опроса клавиатуры, (ОЗУ организована по принципу FIFO – прочитать можно только верхушку регистра; при каждом нажатии данные записываются снизу).

0 1 0 Х Х Х Х Х

Пример: прочитать код нажатой клавиши.MVI A,40HOUT РУСIN DAN

140

Page 141: Микропроцессорная техника

Слово состояние контроллера.

Для чтения слово состояния: IN РУС.

7 6 5 4 3 2 1 0DU S/E 0 U F N N N

Количество символов в FIFO (количество заполненных ячеек)

F – флаг: «1» - FIFO заполнено полностью.U – флаг переопустошения: при попытке чтения из пустого FIFO/0 – флаг переполнения FIFO: если FIFO заполнено и поступает новый код.S/E – флаг ошибки многократного нажатия.DU – флаг: ОЗУ дисплея недоступно – вырабатывается после выполнения общих команд (после команды очистки).

Методы ввода данных с клавиатуры.

1. с использованием опроса прерывания.2. с программным опросом слова состояния.

С использованием опроса прерывания.

В контроллере есть вывод (IRQ) на котором установлена «1», при нажатии клавиши – это сигнал для микропроцессора, что надо ввести код нажатой клавиши.При переходе к подпрограмме обслуживания прерывания код читается из FIFO. По команде возврата из подпрограммы, запрос прерывания сбрасывается.

ORG XXXXHVVOD PUSH PSW

MVI A,40HOUT РУС Чтение FIFOIN DAN Чтение кода клавишиCALL OBR Подпрограмма обработки кодаPOP PSWEIRET

VVOD2 IN РУС Ввод слово состоянияANI 00001111B Выделение младшего разрядаJZ VVOD2 Цикл ожиданияMVI A,40HOUT РУС

141

ПККД

IRQ

Модуль процессора

INT

Модуль прерывания

Вектор прерывания

Page 142: Микропроцессорная техника

IN DAN В (А) код нажатой клавиши

Достоинство – отсутствие дополнительных аппаратных затрат.Недостаток – программа зацикливается пока не нажата клавиша.Пример: шести позиционный дисплей, клавиатура из двадцати четырех клавиш.

0 1 2 3 Q1

Q2

4 5 6 7 Q3

Q4

8 9 А В Q5

Q6

С D E F Q7

Q8

A7 A6 A5 A4 A3 A2 A1 A0 HEX Примечание1 1 1 1 1 1 1 0 FE Регистр данных DAN1 1 1 1 1 1 1 1 FF Регистр управляющего слова РУС

Так как на дисплее шесть индикаторов – то режим кодирования, надо подключить дешифратор.

142

5 4 3 2 1 0

HG6 HG1

&

D017

A0CSRDWR

RESETCLK

PCKD

ША А0 А1 А2

А7

ШД Д0 Д1

Д7

ШУ reset F2 ттл

RL0RL1

RL7

“1”

“7”

“8”

“9”

“F”

“Ф2”

“Ф1”

“Ф1”

“0”

0123456

DC012

X

0 1 2 3 4 5 6

SL0SL1SL2SL3

“1”KP1533ИД7

Page 143: Микропроцессорная техника

Код клавиши Название0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 1

… …0 0 0 0 1 0 0 0 8

… …0 0 0 0 1 1 1 1 F0 0 0 1 0 0 0 0 Q10 0 0 1 0 0 0 1 Q2

… …0 0 0 1 0 1 1 1 Q8

Общая характеристика языков программирования.

Существуют две группы:— Машинно-ориентированные (языки низкого уровня).— Алгоритмические.

Ассемблер относится к первой группе.Достоинство:

— Максимальное использование ресурсов МП.— Программы быстрые и короткие.

Недостатки:— Сложность программирования.— Программа не структурирована.

143

0abcdefgh

0abcdefgh

D001234567

RGDI01234567

STBOE

DSPB0DSPB1DSPB2DSPB3

DSPA0DSPA1DSPA2DSPA3

IRQ “1”

KP580ИР83

R7

R14

12345678

12345678

HG2HG1

1

+5 B

R2

0

+5 B

R1

Page 144: Микропроцессорная техника

Алгоритмические языки не зависят от типа микропроцессора:— Фортран (FORTRAN) для математических вычислений.— Алгон (ALGON).— Кобол (COBOL) – для обработки экономической информации.— Бейсик (BASIC) – для начинающих.— Фокал (FOCAL).— Паскаль (PASCAL) – для учебных целей, профессионального програмирования.— СИ (C) – автор Денис Ричи для любых МП.

Бьярн Строуструн – перемоделировал язык Си в Си++ (объектно-ориентированное программирование). С-Builder – модернизация С++ (построитель).В настоящее время выпускаются программные пакеты. Для языка Си используются программные пакеты двух фирм:Microsoft и Borland International.Программные пакеты:

— Turbo C— Turbo C++— Borland C++

Все языки высокого уровня делятся на два класса:— Интерпретирующие;— Компилирующие;

Basic – интерпретирующий язык: после запуска программа выполняется построчно. Интерпретатор переводит программу в машинный код.Достоинство – интерпретатор занимает мало памяти.При работе компиляторов программа просматривает весь текст и переводит в машинные коды, после этого программа выполняется.Достоинство – программы выполняются быстро.Недостаток – сложность программ компиляторов.Borland C++ включает:

1. интегрированная среда разработки (IDE).2. компилятор.3. компоновщик (редактор связи).4. библиотеки заголовочных файлов.5. библиотеки функций.6. программы – утилиты.

Turbo C 3.1. – работает под MS DOS, процессор i80386, 1Мб ОЗУ, 10 Мб дисковой памяти.Интегрирующая среда:

— редактор теста;— программа работы с файлами;— компиляция, компоновка, отладка.

Расширение программ:— для Си это .с— для Си++ это .ссp.

Компилятор: bc.exeЕсли компиляция прошла успешно, то создается объектный файл с расширением .obj.Компоновщик: link.exe.Он связывает объектный файл с библиотечными, результатом является файл с расширением .ехе являющийся исполнительным файлом.

Структура простейшей программы на языке Си.144

Page 145: Микропроцессорная техника

/* Программа приветствия hello.cpp*/#include <stdio.h>main ( )puts (“Hello, programmer”); // вывод на экранreturn 0;

1. Комментарий: /* */ для Си многострочных// для С++ однострочные2. Главная функция: main ( ) – в скобках параметры.3. Функция puts ( ) выводит данные на экран дисплея. Данные ограничиваются “ ”; - конец каждого оператора (строки программы).4. Функции ввода вывода находящиеся в библиотеках, чтобы обратится к библиотеке надо

компилятору сообщить заголовочный файл (.h); для этого в начале программы имеется директива include/ признак директивы #.

Stdio.h – файлы ввода – вывода.5. return 0 – в конце программы (нормальное выполнение).6. - начало и конец функции.

По умолчанию функция возвращает целое число.Если функция ничего не возвращает (void main), то оператор return не нужен.

Представление информации в языке Си.

— Константы;— Переменные.

Константы – значения не могут быть изменены.Все константы могут быть строковыми, символьными, целыми, вещественными.Константа Формат ПримерСимвольная Символ, заключенный в апостроф. `A`, `!`Строковая Последовательность символов, заключенных в двоичные

кавычки.“Hello”

Целая — Десятичная последовательность цифр не начинающаяся с 0.

— Восьмеричная последовательность цифр, начинающаяся с 0.

— Шестнадцатеричная последовательность шестнадцатеричных цифр, начинающихся с 0х (0Х)

25, 56

0750xfe0XFE

Вещественная — Десятичный [цифра].[цифра].— Экспоненциальный [цифра]Ее+-[цифра]

15., 15.254e7, 5.1E-8

Два метода задания констант:1. использующий макроопределение (макросы).2. типизированный.

1. #define имя константы, значение.#define DAYS_IN_WEEK 7#define CHARACTER `A`#define PHONE “77-25-45”

145

Page 146: Микропроцессорная техника

2. const тип_данных имя_константы = значение;

const int DAYS_IN_WEEK = 7;

Типы данных.

1. Целые – int.2. Символьные – char.3. Вещественные – float (одинарной точности).4. Вещественные с двоичной точностью.

Int i char по умолчанию со знаком.Unsigned int (char) – без знака.Занимает в памяти от 1 до 10 байт.

Форматы:Тип данных Размер, байт Диапазон

Char 1 -128…127Unsigned char 1 0…255

Int 2 -32768…32767Unsigned int 2 0…65535

Long 4 -2147483648…2147483647Unsigned long 4 0…4294967295

Float 4 3.4*10-38…3.4*1038

Unsigned float 8 1.7*10-308…1.7*10308

Long double 10 3.4*10-4932…3.4*104932

Переменные.Выделение памяти происходит автоматически.

Int i; // Определение целой.Float x;Int i1, i2, i3;Int i1,i2=45, i3=1245;

Имена переменных состоят из последовательности символов (букв и цифр), начинается с буквы или знака подчеркивание, внутри имени допускается только знаки подчеркивания. Заглавные и строчные буквы различаются, количество символов в имени – 32.Принято имена переменных писать строчными буквами.Запрещено в качестве имен использовать ключевые слова – это:

Auto Do For Short VoidBreak Double Goto Signed VolatileCase Else If Sizeof UnionChar Enum Int StaticConst Entry Long Struct

Continue Extern Register SwitchDefault Float Return Typedef

Строковые переменные и константы.146

Page 147: Микропроцессорная техника

Для работы со строками Си использует одномерные массивы (один элемент – один символ), признак конца строки \0 (он занимает один байт).

Char client [10];Char client [ ] = “Иванов”;

Char client [5] = “Иванов”;

Строковые константы можно определять:1. С помощью константы макроопределения #define:

#define client “Иванов”;2. С помощью типизированной константы:

Const char client = “Иванов”;

Escape последовательности.

Чтобы использовать клавиши в программе, то есть еscape символ, а за ним escape код.

Escape символ \

Escape последовательности:Последовательность Название Функция

\а Звонок Звук\f Перевод страницы Начало нового экрана\n Новая строка Начало новой строки\t Табуляция Переход к следующей позиции табуляции\’ Апостроф\” Кавычки

147

Иванов\0

Иван\0

Page 148: Микропроцессорная техника

Элементарный ввод вывод в Си.

Особенность Си – отсутствие в языке операторов ввода – вывода, вместо них используют библиотечные функции.Устройства ввода – вывода это клавиатура и дисплей (консоль).Бывает:

— Неформатированный— Форматированный.

Функции неформатированного ввода – вывода:1. функции ввода – вывода символов:

putchar ( ) - не переводит строку.Getchar ( )

/*putgetch.cpp Иллюстрация ввода – вывода */#include <stdio.h>#define initial ‘H’main ( )char letter = ‘G’;char in_letter;putchar (initial);putchar (letter);putchar (‘\a’);putchar (‘\n’);in _letter = getchar ( );putchar (in_letter);putchar (‘n’);return 0;

putgetch.exeHG звонок_X_

2. функции ввода – вывода строки:puts ( ) – выводит строку с переходом на новую строку.Gets ( ) – вводит строку, символы которой набираются с клавиатуры, ввод заканчивает ENTER.

/* getsputs.cpp Имитация ввода – вывода */#include <stdio.h>main ( )char name [20];char full_name [80];puts (‘Введите ваше имя’);gets (name);puts (“Ввод подтверждается”);puts (name);puts (“Введите ваше ФИО”);gets (full_name);puts (“Ввод подтверждается”);puts (full_name);

148

Page 149: Микропроцессорная техника

return 0;

3. Функции форматированного ввода – вывода позволяет обрабатывать несколько переменных, выполнять преобразование данных;

Printf ( ) – выводит данные на экран.Scanf ( ) – принимает данные с клавиатуры.

Функция printf ( ) выводит на экран строку символов до знака %ХХХ.ХХХ – тип выводимых данных (спецификация)%d – целое число.%f – вещественное число.%c – символ.%s – строка.

Printf ( ) – не переводит строку.

/*print.cpp Имитация вывода*/#include <stdio.h>main ( )int a=5, b=7, c;c=a+b;printf (“Сумма равна %d \n”,c);return 0;

При выводе вещественных чисел по умолчанию выводится шесть знаков после запятой:

…float a=1.2, b=1.44, c;c=a+b;printf (“Сумма равна %d \n”,c);…

на экране будет: сумма равна 2.639999

Чтобы изменить:Printf (“Сумма равна %2f \n”,c);Тогда будет только 2 знака после запятой.

/*inout2.cpp Программа ввода – вывода */#include <stdio.h>main ( )int a,b,c;printf (“Введите два целых числа:”);scanf (“%d %d”,&a, &b);c=a+b;printf (“Результат равен %d \n”, c);return 0;

149

Page 150: Микропроцессорная техника

Если в программе используется несколько функций scanf, то во входном буфере остается символ перевода строки и каждый раз при выполнении последующей функции scanf этот символ считывается и программа работает неправильно. Поэтому надо очищать входной буфер.Fflush (stdin) – функция, очищающая буфер, ее надо ставить перед функцией scanf.Gets ( ) – вводит данные в виде строки.Atoi ( ) – преобразует строку в данные типа int.Atof ( ) – преобразует строку в данные типа вещественные.

Они в заголовочном файле stdlib.h

/*inout3.cpp */#include <stdio.h>#include <stdlib.h>main ( )char name [80]; age_str [80]; weight_str [80];int age;float weight;printf (“Введите ваше имя:”);gets (name);printf (“Привет %s! \n” name);printf (“Какой ваш возраст?”);gets (age_str);age=atoi (age_str);printf (“А какой у вас вес?”);gets (weight_str);weight = atof (weight_str);printf (“Подтверждаю ввод, возраст - %d, вес - %2f \n”, age, weight);return 0;

gethch ( ) – вводит символ с клавиатуры и не отображает его на экране, нажатие ENTER не надо, это функция возвращает тип char.Часто это функция используется для ввода значений, например из какого та списка.puts (”для продолжения нажмите ENTER”);Getch ( ) – находится в заголовочном файле conio.h.

Операция и выражения в языке Си.

Выражение – это последовательность операций операндов и разделительных символов.Операнды – переменные, константы и более сложные выражения.Два вида:

— Унарные (1 операнд).— Бинарные (2 операнда).

По виду действий:— Арифметические;— Поразрядно логические;— Сдвига;— Логические;— Отношения.

150

Page 151: Микропроцессорная техника

Арифметические операции: +, -, /, *, %, ++, --% - определение остатка от деления.

Int a=5, b=2, c;C=a%b; //c=1 – остаток от деленияC=b%a; //c=2

++ - инкремент (+1)-- - декремент (-1)

формы операций:— Префиксная – операнд располагается справа от знака операции: ++i.— Постфиксная - операнд располагается слева от знака операции: i++.

Для инкремента: в префиксной форме сначала операнд увеличивается на 1, а затем вычисляется выражение. В постфиксной форме выражения операнд подставляется в выражение, производится вычисление и только потом значение увеличивается на 1.

Int a=0, b=1, c, d;C=a++; // c=0, a=1;D=++b; // b=2, d=2;

Поразрядные логические операции.& - логическое И (AND) - логическое ИЛИ (OR)^ - логическое исключающее ИЛИ (XOR)~ - логическое НЕ (NOT)

все эти операции поразрядные.

Операции сдвига:<< - сдвиг влево на число разрядов справа от операнда (выдвигаемые разряды теряются).>> - сдвиг вправо (выдвигаемые разряды теряются).

Используются:— Для быстрого умножения и деления.— Для преобразования форматов.

Логические операции и операции отношения, используются для формирования логических выражений.TRUE -1 и FALSE – 0.= = - равно.!= - не равно.< – меньше.> - больше.<= - меньше или равно.>= - больше или равно.&& - логическое И. - логическое ИЛИ.! – логическое НЕ.

…var1=15, var2=0;!var1; //’=0!var2; //=1

151

Page 152: Микропроцессорная техника

var1var2; //=1var1&&var2; //=0

Преобразование типов в выражении.

Операнды могут быть различных типов, компилятор преобразует данные к одному типу перед вычислением.Порядок преобразований: операции приводятся к старшему (более длинному) типу:

Long doubledoubleFloat

Unsigned longLong

Unsigned intInt

CharМожно самим указать тип переменной: (type).

Int a=8, b=5;Float var1, var2;Var1 = a/b; // var1=10Var2 = (float)a/(float)b; // var2=1,6

Приоритет операции и порядок их выполнения: необходимо ставить круглые скобки.В компиляторе используется ускоренное вычисление логических выражений: вычисление прекращается тогда, когда результат уже ясен.Выражение_1&&(выражение_2 выражение_3); если Выражение_1=0, то результат = 0.

Операции управления вычислительным процессом.

— Ветвление;— Циклическое повторение;— Передача управления в определенное место программ.

Оператор if . If (выражение)Оператор_1;ElseОператор_2;

Если (выражение) истинно выполняется оператор_1, если ложно оператор_2.

If (выражение)оператор_1;оператор_12;else

152

Page 153: Микропроцессорная техника

оператор_13;

/*ifelse.cpp */#include <stdio.h>#include <conio.h>main ( )char ch;puts (“Будите продолжать? Введите y/n”);if ((ch=getch ( ) = = ‘n’)puts (“Конец работы”);elseputs (“Работа продолжается”);return 0;

Оператор switch . Switch (целое_выражение)case константа_1: оператор_1;break;case константа_2: оператор_2;break;…break;default: оператор_(n+1)

/*switch.cpp*/#include <stdio.h>main ( )int k;printf (“Введите целое число в пределах от1 до 4 для выбора”);scanf (“%d”,&k);switch (k)case 1: printf (“Выбор 1\n”);break;case 2: printf (“Выбор 2\n”);break;case 3: printf (“Выбор 3\n”);break;case 4: printf (“Выбор 4\n”);break;default: printf (“Вводи значение правильно \a\n”);return 0;

Оператор цикла.

While ...Do ... while

While позволяет организовать цикл с предусловием:

153

Page 154: Микропроцессорная техника

While (условие) оператор;

Проверяется условие, и если оно истинно, то выполняется оператор, если неистинно, то оператор игнорируется.

While (условие)оператор_1;оператор_n;

/*while.cpp*/#include <stdio.h>main ( )int dlina=0;puts (“Введите произвольную строку, затем нажмите Enter”);while (getchar ( )!=’\n’)dlina ++;printf (“Длина строки равна %d\n”, dlina);return 0;

do ... while – оператор цикла с постусловием:

doоператор;while (условие);

Сначала выполняется оператор, затем проверяется условие, если оно истинно, то оператор выполняется ещё раз (до тех пор, пока условие не будет ложным).

Doоператор_1;оператор_n;while (условие);

#include <stdio.h>#include <conio.h> // Описание функции getch ( )#define ESC 27 // Код символа ESCmain ( )float a, b, res;doputs (“Введите два числа”);scanf (“%f%f”, &a, &b);res=a*b;printf (“Произведение a*b равно %f \n”, res);puts (“Нажатие клавиши ESC завершить работу”);while (getch ( )!=ESC);

154

Page 155: Микропроцессорная техника

return 0;

пример программы, которая зацикливается:int i=0;while (i<60);printf (“i=%d \n”);i++;

Оператор цикла FOR .

Позволяет организовать определённое число повторений циклов.For (выражение_1; выражение_2; выражение_3)Оператор;

Выражение_1 определяет начальное значение параметра цикла.Выражение_2 это условие окончания цикла.Выражение_3 заданное изменение параметра цикла.

оператор_1;оператор_n;

#include <stdio.h>main ( )int repeat;for (repeat=1; repeat<=10; repeat++)printf (“%d \n”, repeat);return 0;

Функции языка Си.

Программы на языке Си могут иметь от 1 до нескольких функций. Функция это логически самостоятельная именованная часть программы, которой можно передавать параметры и которая может возвращать какое-то значение.Формат определения функции:Возвращаемый_тип имя_функции (тип параметр_1, … тип параметр_n)описание данных;оператор_1;оператор_n;return (выражение);

Если функция не возвращает ничего, то вместо возвращаемого типа пишется void, тогда в теле функции оператор return не нужен.Если возвращаемый тип не указан, то по умолчанию int.

155

Page 156: Микропроцессорная техника

Имя функции любое, разрешённое в языке Си.В ( ) список параметров или аргументов, через запятую, для каждого параметра указывается тип.Если никакие параметры не передаются, то:Имя_функции (void)Имя_функции ( )

Пример функции:Int mul (int a, int b)return;

void output (float x)printf (“Значение x=%f \n”, x);

int input ( ) //или int input (void)int i;puts (“Введите целое число:”);scanf (“%d”, &i);return i;

Функция должна быть определена раньше, чем она использовалась в программе.Использование прототипов (он указывает тип возвращаемого функцией значение и типы параметров, используемой в функции).Формат прототипа:Возвращаемый_тип имя_функции (тип параметр_1, … тип параметр_n);

Int mul (int a, int b);Void output (float x);Int input ( );

#include <stdio.h>int sqr (int x); // прототипmain ( )int t=10;printf (“Квадрат числа %d равен %d \n”, t, sqr (t));return 0;

int sqr (int x) // определение функцииx=x*x;return x;

x – формальный параметр.t – фактический параметр.

Библиотечные функции.Среда помощи – F1.

156

Page 157: Микропроцессорная техника

Заголовочные файлы - .h (в них содержатся прототипы функций):Stdio.h – для функций ввода вывода.Conio.h – для работы с клавиатурой.Dos.h – функции ОС ДОС.Math.h – математические функции.Sound (unsigned int) – звук, частота которой задается параметром, Гц.Nosaund ( ) – нет звука.Delay (unsigned int) – задержка в мсек.Int kbhit – возвращает 0, если не нажата ни одна из клавиш, если клавиша нажата – возвращает код этой клавиши.

/*sound.cpp*/#include <stdio.h>#include <dos.h> //прототипы функцийsound ( ), nosound ( ), delay#include <conio.h> //прототип функции kbhit ( )main ( )unsigned freq;printf (“Введите значение частоты (целое от 50 до 5000)”);scanf (“%d”, &freq);while (!kbhit ( ))sound (freg);delay (2000);nosound ( );delay (1000);return (0);

Функции для работы с портами ввода вывода.Inportb – ввод байта из порта ввода.Outportb – вывод байта.Inport – ввод слова (два байта).Outport – вывод слова.

Они находятся в dos.h.Unsigned char inportb (unsigned port);

Port – адрес порта ввода (0 … 65535), эта функция возвращает без знаковое символьное значение.Void outportb (unsigned port, unsigned char value);Port – адрес порта вывода.Value – значение, которое выводится.

#include <stdio.h>#include <dos.h>main ( )unsigned char result;unsigned port=0; //адрес портаresult = inport (port);printf (“Принятый байт из порта %d равен0x%x \n”, port, result);return 0;

157

Page 158: Микропроцессорная техника

#include <stdio.h>#include <dos.h>main ( )char value =’C’unsigned port = 0; //адрес портаoutport (port, Value);printf (“Значение %С послано в порт %d \n”, value, port);return 0:

В conio.h содержатся следующие функции:Inp – ввод байта.Outp – вывод байта.Inpw – ввод слова.Outw – вывод слова.

Пример: управление каналом звука.SPEAKER – символ, имя канала звука.

Счетчик СТ2 обеспечивает частоту звука (работает в режиме генератора меандра).По входу GATE можно разрешить (1) или запретить (0) счет.Для работы вентиля (&) на D1 = 1.Адрес СТ2 =42h.Адрес PYC =43h/Д2 … Д7 – менять нельзя!

/*speaker.cpp Программа генерации звука*/#include <stdio.g>#include <dos.h> // Прототипы функций inportb ( ), outportb ( ), delay ( )#include <conio.h> //Прототип функции kbhit ( )#define CTRL_PT 0x43 //регистр РУС#define CTRL_WD 0x66 //управляющее слово для СТ2#define N_LOW 0х26 //младший байт числа N#define N_HIGH 0x11 //старший байт числа N#define CT2 0x42 //адрес СТ2#defineSYST_PRT 0x61 //адрес системного портаmain ( )

158

D00127

RG

Системные функции

Системный порт, адрес 61 h

CLKGATE

CT2

CT1

CT0

OUT2

OUT1

OUT0

f = 1.9318 MГц&

Таймер i8254

ВА

Page 159: Микропроцессорная техника

unsigned char ch1, ch2;outportb (CTRL_PT, CTRL_WD); //Вывод УС с РУСoutportb (CT2, N_LOW); //загрузка младшего байта числа в СТ2outportb (CT2, N_HIGH); //загрузка старшего байтаch1=inportb (SYST_PRT);ch2=ch1; //создание копииch2=ch2 0x3 //Установить D0=1,D1=1while (!kbhit ( ))outportb (SYST_PRT, ch2); //есть звукdelay (1000); //задержка на 1 секундуch2=ch2&0xfd; // 0xfd = 1111 1101outportb (SYST_PRT, ch2); //звук нетdelay (1000);ch2 = ch20x2; // установка D1=1outport (SYST_PRT, ch1);return 0;

Звук заканчивается когда нажимается любая клавиша.Программа не меняет Д1 … Д7.

Для формирования звука надо сформировать меандр:

Счетчик должен работать в режиме 3 (генератор прямоугольных импульсов).Fзв = 440 Гц (нота Ля первой октавы)N=fвх/fзв = 1931800 / 440 = 4390,45 1126hФормат управляющего слова: счетчик двоичный, загрузить два байта.01110110b = B6h.

Видимость переменных.

Важное значение имеет место в программе, где происходит описание переменных. От этого места зависит доступ к переменной.Переменные:

— Глобальные.— Локальные.

К глобальным относятся те переменные, доступ к которым возможен из любого места программы (переменная «видна» из любого места программы).К локальным переменным доступ может осуществляться в пределах одной части программы, которая называется блоком видимости переменной.Глобальные переменные объявляются вне любых функций. Локальные могут объявляться только сразу после левой фигурной скобки () – это соглашение относится и к функциям и к любым ветвлениям в программе.

Int global;

159

Page 160: Микропроцессорная техника

Void second ( ) unsigned lokal_2;...void first ( )long lokal_1;...char lokal_3;...

Локальные переменные не занимают постоянно память.Компилятор языка Си разделяет переменные в свободной ОЗУ.

ОЗУСвободная часть.

Heep (куча)Системные программы.

Классы хранения переменных.

По способу хранения переменных в памяти они делятся на классы:1. Автоматические – переменные, для которых память выделяется по мере

необходимости. Они присутствуют лишь в том блоке, где объявлены.2. Регистровые – переменные хранятся во внутренних регистрах микропроцессора

(сверхоперативная память), используются только внутри блока.3. Статические – переменные, для которых память выделяется один раз и они

существуют на протяжении всей программы.4. Внешние – переменные, к которым требуется доступ, но они объявлены как

статические в других функциях (возможно в другом модуле) или как глобальные (в другом модуле программы).

Модули можно компилировать по отдельности: упрощается написание и отладка программы (прочитать текст модулей после компиляции нельзя).Auto – для автоматических переменных.Regicter – для регистровых переменных.Static – для статических переменных.Extern – для внешних переменных.

Формат: класс тип имя.По умолчанию локальные переменные – с классом auto, глобальные переменные – static, если указан класс переменной, но не указан тип, то по умолчанию int.Размещение переменных в регистрах позволяет получить максимальную скорость программы, но при этом нарушается работа компиляторов.

Пример:Static int a;Double z;Static b;Auto int c; //ошибкаFunc ( )

160

Page 161: Микропроцессорная техника

int d;auto char e;static double i;

Файл first.c Файл second.cInt a;Void F1 (void)Static int b;...Void F2 (void)Extern int b;...

Extern int b;Int c;Void F3 (void)Extern int a...Void F4 (void)...

Переменная F1 F2 F3 F4A Доступна Доступна Доступна Недоступна B Доступна Доступна Доступна ДоступнаC Недоступна Недоступна Доступна Доступна

Операции присвоения.

1. Простое присваивание.Е1=Е2Е1 – переменная.Е2 – выражение любого типа.Пример: i = 3. 2. Составные операции присваивания.Х = х + 3У = у * 3

Формат Применение Описание+ = E1+ =E2 Присвоить сумму

Е1=Е1 + Е2- = E1- =E2 Присвоить разницу

Е1=Е1 - Е2/ = E1/ =E2 Присвоить частное

Е1=Е1/Е2* = E1* =E2 Присвоить произведение

Е1=Е1 * Е2

161

Page 162: Микропроцессорная техника

% = E1% = E2 Присвоение остаткаЕ1=Е1 % Е2

<<= E1<<=E2 Присвоение результата сдвига влевоЕ1=Е1 << Е2 (Е2 число сдвигов)

>>= E1>>=E2 Присвоение результата сдвига вправоЕ1=Е1 >> Е2

= E1 =E2 Присвоение результата поразрядного ИЛИЕ1=Е1 Е2

& = E1& =E2 Присвоение результата поразрядного ИЕ1=Е1 & Е2

^ = E1^ =E2 Присвоение результата поразрядного исключающего ИЛИЕ1=Е1 ^ Е2

Условная операция.

Е1 ? Е1 : Е2;Е1 – выражение целого или вещественного типа.Е2, Е3 – должны совпадать по типам (могут быть любого типа). Выполнение данной операции зависит от Е1:

— Если Е1 истинно (отличное от 0), то выполняется Е2.— Если Е1=0, (ложно) то выполняется Е3.

Пример:Int a=4, b=3, c;C = c>b?a*a+b*b:0;

C = a*a+b*b = 25

Операция sizeof (определение размера).

Результатом является размер (в байтах) типа или переменной в памяти.Если применяется к массиву, то эта операция возвращает размер массива в байтах, который он занимает в памяти.

Пример:Int i,r;Char ch;Long double ff;r = sizeof int; //r=2r = sizeof i; //r=2r = sizeof long double; //r=10

Указатели.

Являются очень сложными.Объявление переменной, выделяет в памяти ячейки. Можно определить в какую ячейку компилятор займет данные:Int i;I = 35;&iprintf (“Адрес %d \n”, &i);

162

Page 163: Микропроцессорная техника

Указатели – это особый вид переменной которая хранит адрес переменной какого либо типа (то есть номер ячейки памяти, где находятся данные)Указатели объявляются: тип*имя_указателя.Тип – тип переменной, на которую указывает указатель.

Пример: int *iptr;Float *fptr;

Если переменная определенна, она должна на что то указывать: Int *iptr;Int i;Iptr = &i;

Пример:#include <stdio.h>main ( )int i=35;int *iptr;iptr = &i;printf (“Значение переменной”, i);

Массивы Это располож. вплотную друг за другом в памяти эл-ми одного типа.Тип имя_массива[кол-во] Целочисленное беззнаковоеInt array [40]

Св-ва массива:1.Все эл-ты имеют один тип2.Все эл-ты расположены в памяти друг за другом; индекс первого эл-та=0.3.Имя массива явл. Указателем-константой=адресу начала массива( т.е. мл.б. первого эл-та массива ) При описании массива мл.б. выполнена инициализация его эл-ов:1.Инициализация по умолчанию( производится компилятором только для статических или внешних массивов ) – все эл-ты массива заменяются нулями.2.Явная инициализация эл-ов( после описания массива помещается список нач. знач. Эл-ов заключенный в {}) Сущ. 2 формы явной инициализации:1.Явное указание числа эл-ов массива и список нач. знач.( возможно с меньшим числом эл-ов ):int array [10] = { 1,2,3,4,5 }; array [0] = 1; array [1] = 2; ….. array [4] = 5;а) Для статич. и внешн. массивов:array [5] = 0;…..array [9] = 0;б) Для автомат. массивов знач. неиниц-их эл-ов будет случайным:array [5] = ?;…..

163

Page 164: Микропроцессорная техника

array [9] = ?; Если число эл-ов массива меньше, чем в описке иниц-ии, то, компилятор выдаст ошибку. 2. Только , со списком нач. значений( компилятор сам определяет кол-во эл-ов по списку иниц-ии)char array []= { ‘A’, ‘B’, ‘C’, ‘D’}; Доступ к отдельным эл-ам массива мл. б. 2 способами:1.С помощ. индекса2.Спомощ. указателя 1 Для ссылки на эл-т указывается его порядковый номер в массиве.Main () {int a[] = { 1,2,3,4,5 };int index = 0, first, last, bad;first = a [ index ]; // first = 1;last = a [ index+4 ]; // last = 5;bad = a [ index+6 ]; // bad – случайное В языке CI отсутствует контроль за границами массива. Этот контроль можно делать специально в программе, например, с помощью sizeof. В случае применения к массиву рез-т – число байт, кот. занимает массив в памяти. Int array [] = { 1,2,3,4,5,6,7 }; Int members;Members = sizeof ( array ) / sizeof ( int ); Рез-т = 7 эл-ов.

2 Т.к. имя массива – это указатель на мл. б. 1-го эл-та, то используя операцию * можно выполнить доступ к любому из эл-ов массиваarray [ i ] и *( array+i )array = & array [ 0 ];# include < stdio.h ># define num 10main () {int array [ num ];int index; // прим. Индексации к мас.For ( index = 0 ; index < num >; index ++)Array [ index ] = index*10; // Применение арифметики указателей;for ( index = 0, index < num >; index++)printf ( “ Эл-ты %d = %d \ n ”, index, *(array+index)); // Применение индексации к указ.Int * iptr;Iptr = array;For ( index = 0; index < num >; index++)Printf( эл-нт %d = %d\n”, index, iptr [ index ]);Return 0; } Язык CI поддерживает многомерные массивы. Размерность массива dimension – это число индексов, использ. Для ссылки на конкретный эл-т массиваInt array [10] [20];

Столбцы СтрокиInt array [3] [3] = {00,01,02, 10,11,12,

164

Page 165: Микропроцессорная техника

20,21,22 };int array [3] [3] = {{ 00,01,02 } { 10,11,12} { 20,21,22 };

Массивы и функции

Массив мл.б. передан целиком из одной ф-ии в др. , но процессы передачи отличаются от передачи простых. Передаются нач. адрес массива ( указатель на нач. эл-т массива, а не сами эл-ты). Программа не контролирует целостность массива ( знач. могут меняться ). Пример: определить номер min эл-та массива – случайные.

Int rand () – генерирует случ. число целого типа.Находится в < stdlib.h ># include < stdio.h > # include < stdlib.h ># define DLINA 10int min_index ( int sp[ ], int ras ) {int i, miniindex = 0; m;m = sp [ miniindex ];for ( i=1; i<ras; i++ )if ( sp[ i ] < m )

{m = sp [ i ];miniindex = i; }return miniindex; }main () {int k, list [ DLINA ];for ( k=0; k<DLINA; k++ ) {list [ k ] = rand ();printf ( “ Элемент %d=%d\n”, k, list[ k ]); }k = miniindex ( list, DLINA ),printf ( “ Минимальный элемент %d = %d \ n ”, k, list [ k ]);return 0; }

Строки Строкой наз. массив символов. При описании строк вводится понятие “ строковый литерал ” – это послед – ть любых символов заключенных в двойные ковычки. Строк. литерал в яз. CI размещ. в памяти как массив эл-ов типа char, в конце кот. помещается символ ‘ \ 0 ’ ( терминатор-конец строки )‘ Адам ’

165

‘ \ о ’

‘ м ’

‘ а ’

‘ д’

‘а’

Page 166: Микропроцессорная техника

Т.к. в кач-ве символов использ. коды ASCII – их называют строки в формат ASCIIZ Адрес, первого символа строков. литерала может использоваться по-разному:Char array [ ] = “ Слово ”;Char array [ 6 ] = “ Слово ”;Char array [ 6 ] = { ‘ c ’, ‘ n ’, ‘ o ’, ‘ в ’, ‘ o ’, ‘ \ o ’ }Char *string = “ Слово ”;Char *string 1;String 1 = “ Литерал ”

Операции со строками- поиск строки, символа- сравнение символов- перестановка Функции для работы со строками нах. в < string.h >

Ф - цияОписание

Strcat()

Strcmp ()Strcmp ()

Strcpy ()

Strdup ()Strlen ()

Добавляет символы из одной строки в конец другойСравнивает две строкиСравнивает две строки без учета регистров символов.Копирует одну (или строк, литерал ) в другую строку.Дублирует строку.Определяет длину строки.

Определение длины строки: Strlen ()

# include < stdio.h ># include < string.h >main () {char name [ 40 ];int count;puts ( “ Введите ваше имя: ”);gets “( name );count = strlen (name);printf ( “ Строка % s содержит % d символов \ n ”, name, count );return 0; }Сравнение двух строк:Strcmp () – сравнивает 2 строки, кот. явл. аргументами этой ф-ии и возвращает 0, если строки равны и не 0, если строки неравны.

166

Page 167: Микропроцессорная техника

….If ( strcmp ( name1, name2) == 0 )Puts ( “ Строки равны ”);ElsePuts ( “ Строки не равны ” );….Присваивание строк:

…..char name [ 20 ]…..strcpy () – копирует строку, либо строк. литерал:strcpy ( name, “ СЭМ ”);…..strcpy ( name 1, name 2 );

Слияние строк:

Символы, содержащиеся в одной строке, добавляются в конец другой, при этом сдвигается первый символ ‘ \ o ’ в конец объединенной строки.Strcat () В ф-ции 2 аргумента# include < stdio.h ># include < string.h >main () {char name 1 [ 40 ], name 2 [ 20 ];

strcpy ( name 1, “ Адам ” );strcpy ( name 2, “ и Ева ”);strcat ( name 1, name 2);puts ( name 1 );return 0; }Рез-т: Адам и Ева.

Массивы строк.

Организуются также как и массивы др. типа.Char name [ 10 ] [ 20 ];

строки Max число симв. в строке

Язык CI позволяет вводить и выводить строки целиком:

Gets () – ВводPuts () – Вывод# include < stdio.h >main () {char name [ 10 ] [ 20 ];int index;for ( index = 0; index<10; index++);gets ( name [ index ] );

167

Page 168: Микропроцессорная техника

for ( index = 0; index<10; index++)puts ( name [ index ] );return 0; }

Массивы – указатели.

Массивы могут иметь любой тип, в т. ч. они м. б. указателями ( для компактного располож. в памяти строк и структур – удобны для динамич. выделения памяти) Массив – указатель д. б. описан ( при описании может выполняться иниц – ия его эл-ов )Char *messages [ 10 ]; Указатель из массива содержит адрес первого эл-та строки. Часто массивы иниц-ся:Char *messages [] = { “ Не открыт файл ”, “ Ошибка диска ”, ” Ошибка ввода ”, ” Тайм – аут ” };

Типы, определяемые пользователем.

Переименование типов:

Typedef – ключ. слово позволяет присвоить базовому типу новое имя.Typedef тип новое_имя_типа;Байт – 8 бит – unsigned charСлово – 16 бит – 32 бита – unsigned long…..typedef unsigned char BYTE;typedef unsigned int WORD;typedef unsigned long DWORD;

….BYTE b1,b2, b3;…..WORD w1, w2;

Структуры:

Структурой или структ. переменной наз. объединение одной или более переменных, возможно разных типов, имеющей одно имя, отдельные составные части структ. переменной наз. полями.1. Обозначается место в памяти, где распологаются инф-ция – это место наз. структ. переменной.2. Правило формирования структ. переменной, кот. используется компилятором для выделения области в памяти и организации обращения к ее памяти: это наз. шаблонами. Структ. переменная д. б. описана: 1.Задание шаблона структуры.2.Собственно описание структ. переменной. Синтаксис задания шаблона:Struct имя_шаблона {тип 1 имя_поля;тпп 2 имя_поля;….Тип n имя_поля; };struct BOOK { char name [ 20 ]; // ФИО автора

168

Page 169: Микропроцессорная техника

char title [ 44] ; // Названиеint gear; // Год изданияfloat price; // Цена }; Указание шаблона не приводит к выделению памяти.для выдел. памяти надо определить структ. переменную ( тип определяется шаблоном )Struct BOOK dog_book;20+44+2+4=70 байтsizeof ( struct BOOT ) – возвратит результат 70 байт. Доступ к памяти структуры производится с помощью операции ‘ .’Сначала указ. Имя структ. переменная . имя поляDog_book . gear = 1998;Strcpy ( dog_book . title, “ Белый Бим Черное ухо” ); Разрешается выполнять иниц-ию структурной переменной.Struct BOOK dog_book = { “ Траепольский Г.Н. ”,” Белый Бим Черное Ухо”, 1980,2,78};Typedef struct { ;char name [ 20 ];char name [ 44 ];int gear;float price; }BOOKS;BOOKS dog_book; child_book;

Указатели на структурную переменную.

Typedef struct {char name [ 20 ];char title [ 44 ];int gear;float price; }BOOKS;main () {BOOKS first_book, *ptr;Ptr = & first_book;First_book = gear = 1992;Strcpy ( first_book = name, “ Толстый Л.Н. ”)ж….

Массивы структурных переменных.

Typedef struct {char name [ 20 ];char title [ 44 ];int gear;float prite; }BOOKS;BOOKS library [ 50 ];Int index;Library [ index ]. Gear = 1990;BOOKS *ptr;Ptr = & library;

169

Page 170: Микропроцессорная техника

( ptr + index ) – gear = 1992;

Использование структур в функциях.

1.Передача по значению при вызове ф-ии пар-ры записываются в стек, при выходе из ф-ции – пар-ры восстанавливаются. 2.По ссылке ( использование указателей ) в ф-цию, передается только адрес структуры. Недостаток – ф-ция может изменить данные. Достоинство – быстрая работа.2. # include < stdio.h > # include < string.h > typedef struct {…. }BOOKS;void example ( BOOKS *first );main () {BOOKS ret;Example ( & ret );Printf ( “ % -20s % -40; Год издания % d, Цена -%2а”, ret – name, ret – title, ret – gear, ret – price );Return 0; } void example ( BOOKS * first ) {strcpy ( first – name, “ Толстой Л.Н. ” );strcpy ( first – title, “ Крайцерова соната ” );first – year = 1990;first – price = 5.25; На экране: Толстой Л.Н. Крайцерова соната год издания 1990 цена 5,25

Операции с файлами.

Файл – порция данных, имеющая уникальное имя. При работе с файлами используют понятие “ потока ”. Т.е. язык CI рассматривает данные в виде потока, поступающ. Последовательно друг за другом. Буфер – участок памяти, кот. использ. при обмене данные между файлами и программой.Stdin – входной поток ( с клавиатуры )Stdout – стандартный поток вывода ( дисплей )Stderr – станд. Поток сообщения об ошибках ( дисплей )Stdprn – вывод на принтерStdaux – станд. поток вспомогательного устройства. При операции с файлами использ. понятие “ файловая структура ”, FILE. В ней несколько полей кот. определяют все действия с файлами. Чтобы использовать файлов. Структуру на неё надо создать.FILE * имя_указателя;FILE * fp;FILE * fin, * fout;Fopen () – открытие файла в < stdio.h >Int fopen ( “ имя_файла ”,” режим_доступа ” ) R – файл только для чтения W – для записи ( все имеющиеся данные стираются ) A – для добавления данных

170

Page 171: Микропроцессорная техника

R+} для чтения и для записи W+} T – текстовый режим доступа к файлу B – двоичный режим доступа к файлу Ф-ция fopen () возвращает значение: если произошла ошибка, то возвращает null – файл не открытFILE * fp;Fp = fopen ( “ Мой_файл ”, “ W ” );Fp = fopen ( “ a: \ myfiledat ”, “ W ” );If (( fp = fopen ( “ myfile ”, “ W ”)) = NUUL ) {puts ( “ Не возможно открыть файл ” );return 1; } Закрытие файла осуществляется ф-цией:Fclose ( имя_указателя );FILE *fp;….Fclose ( fp );Fcloseall () – закрывает все открытые файлы При чтении или записи в файл использ. спец. указатель чтение_записи.

0 1 2 3 4 5 6 7 + + +Начало Конец

Указатель определяет номер байта при чтении или записи, при достижении конца файла возвращается символ EOF, поэтому программа должна контролировать появление этого символа. При записи система автоматически определяет конец файла.

Обмен инф-ции с файлами.

Приём инф-ции с файла – чтение ( ввод ), передача инф-ции в файл – запись (вывод ).Все операции чтение – записи делят. на 4 группы.1. Операции посимвольного ввода – вывода.2. построеового ввода – вывода.3. Форматированного ввода – вывода.4. Блокового ввода – вывода.1. производят запись или приём одного символа.Fgetc () – чтение из файлаFputc () – запись в файлInt fputc ( символ, указатель_на_файл ); Эта ф-ция возвращает код символа, а если ошибка – EOF Пример:# include < stdio.h >main () { FILE *fp;Char letter;If (( fp = fopen ( “ myfile ”,” W ” )) == NULL ); {puts ( “ Невозможно открыть файл ” );return 1; }

171

Page 172: Микропроцессорная техника

do }letter = getchar (); }fputc ( letter, fp );while ( letter ! = ‘ \ n ’ );fclose ( fp );return 0; }int fgetc ( указатель_на_файл );ф-ция извлекает из файла символ и возвращает его, если ошибка возвращает – EOF Пример:# include < stdio.h >main () {FILE *fp;Char better;If (( fp = fopen ( “ myfilo ”, “ r ” ) / == NULL ) {puts ( “ Невозможно открыть файл ” );return 1; }while ( better = fgetc ( fp ) ! = EOF )printf ( “ % c ”, better);fclose ( fp );return 0; }int feof ( указатель_на_файл )возвращает не 0, если конец файла достигнут и 0 в противном случае.Fputc.cppA: \ fputc.cpp Пример: копирование# include < stdio.h >main () {File *in, *out;If (( in = fopen ( “ fputc.cpp ”, “ r ” )) ==NULL ) {puts ( “ Невозможно открыть файл fputc.cpp” );return 1; }if // out = fopen ( “ a: \ fputc.cpp ” )) = NULL ) {puts ( “ Невозможно открыть файл a: \ fputc.cpp ” );return 1; } while ( ! feot ( in ))fputc ( fgetc ( in ), out );fclose ( out );return 0; }2 .fputs () – запись в файл строкиfgets () – чтение из файла строки.Int fputs ( строка указатель_на_файл );

172

Page 173: Микропроцессорная техника

Записывает в файл строку до тех пор, пока не будет ‘ \ o ’ ( сам этот символ в строку не вносится). Если при записи был достигнут конец файла, то эта ф-ция возвращает NULL. Пример: / *fputs.cpp * /# include < stdio.h ># include < string.h >main () {FILE *fp;Char name [ 40 ];If (( = fopen ( “ myfile ”, ” W ” )) == NUUL ) { puts ( “ Невозможно открыть файл ” );return 1; } printf ( “ Введите имя ” )gets ( name);while ( strlen ( name ) > 0 ) { fputs ( name, fp );fputs ( “ \ n ”, fp );printf ( “ Введите имя : ” );gets ( name ); }/ * для выхода – нажать Enter * / fclose ( fp);return 0; }int fgets ( строка, длина_строки, указатель_на_файл ); Длина_строки – число символов, кот. надо считать Ф-ция возвращает символы строки и возвращает NULL в случае, когда достигнут конец файла или прочитано указанное число символов. Пример: / *fgets.cpp * /# include < stdio.h >main () {FILE * fp;Char name [ 40 ];If (( fp = fopen ( “ myfilo ”, ” r ” )) ==NUUL ) {puts ( “ Невозможно открыть файл ” );return 1; }while ( name, 40, fp ) ==NUUL )gets ( name );fclose ( fp );return 0; }3 Ф-ции форматированного ввода-вывода;fprintf () – ф-ция формат. записи аысфта () – ф-ция формат. чтенияште азкштеа ( указатель_но_файл, форматная строка, список_аргументов )форматн. строка – текст и идентификаторы В случае неуспешной записи в файл возвращает EOF

173

Page 174: Микропроцессорная техника

Int fscanf ( указатель_на_файл, форматная_строка, список_аргументов ) Пример: / * fprintf.cpp * /# include < stdio.h ># include < string.h >main () {FILE * fp;Char filename [ 15 ];Char product [ 20 ];Float cost;Int quantity;Printf ( “ Введите имя файла, которой хотите создать: ” );Gets ( name );If (( fp = fopen ( name, “ W ” )) ==NUUL )) {printf ( “ Невозм. Откр. Файл %s \ n”, name );return 1; }printf ( “ Введите назв. товара ” ); gets ( product );while ( strlen ( product ) > 0 ) {printf ( “ Введите стоимость товара: ” );fflush ( stain );scanf ( “ % f ”, & cost );printf ( “ Введите кол-во товара: ” );fflust ( stdin );scanf ( “ % d ”, & quantity );fprintf ( fp, “ % s % f % d “, product, cost, quantity );printf ( “ Введите название товара: ” );fflust ( stdin );gets ( product ); }fclose ( fp );return 0; }/ * fscant.cpp * / # include < stdio.h >main () {FILE * fp;Char name [ 15 ];Char product [ 40 ];Float cost;Int quantity;Printf ( “ Введите имя файла: ” );Gets ( name );If (( fp = fopen ( name, “ r ” )) ==NUUL ) {printf ( “ Невозм. открыт. файла % s \ n ”, name );return 1; }while ( fscanf ( fp, “ % s % f % d ”, product, & cost, & quantity )=(EOF) {printf ( “ Название товара: % s \ n ” , product );

174

Page 175: Микропроцессорная техника

printf ( “ Стоимость % 2 f \ n ”, cost );printf ( “ Кол-во % d \ n ”, quantity ); }fclose ( fp );return 0; }fscanf () не позволяет читать строки с пробелами. При вводе или выводе файла в формате, несоотв. спецификатору, эти ф-ции выдают ошибки.

Часть 3

Разработать МК для управления насосом напорной башни.

Двигатель включ. и выключ. магнитным пускателем, катушка кот. питается от сети 380 В и 50 mA. Датчиком уровня воды явл. попловковый датчик. Двигатель имеет датчик темп-ры, кот. сбрасывает при достижении определённой темпер. обмоток статора. МК должен отключать двигатель от сети при перегреве и подавать сигнал ~ 1 Гц МП – КР1821М85А ПЗУ – КР573РФ5 ОЗУ – КР573РУ10 Порты – регистры серии КР15331.Разработка структурной схемы МК:

175

Квч

насос

Кнч

Кт

Км

380 В

Модульпроцессора

опторазвязка

Датчик температур Кт

ПЗУ2 кбайта

ОЗУ 2 кбайта

Порт ввода

опторазвязка

опторазвязка

Датчик Кнч

Датчик Кву

Порт вывода

опторазвязка

опторазвязка

Ус-ль

Динамик

Системная шина ( ША, ШУ, ШД )TRAP

Page 176: Микропроцессорная техника

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

2.2. Модуль памяти

При А 11 = 0 – ПЗУ

А 11 = 1 – ОЗУ

176

TRAP

RST 7.5RST 6.5RST 5.5INTRHOLD

1

X1

X2

READY

RESIN

TRAP

ZQ1

R2+ 5В

ША

А0

А1

А15

ШД

Д0

Д1

….

…..

Д7

MEMR

IOW

ШУ

Кт

-Uп2

R1

C1+Uп2

+5В

V1

CPU

А ROM01…10

CS DD1

А RAM01…10

CS DD21

КР573РФ5 КР573РУ10ШАША

А11

ПЗУ

ОЗУ

00002Кбайта

2Кбайта

07FF

0800

0FFF

Page 177: Микропроцессорная техника

2.3. Модуль ввода

177

+Uп2

ДI RG Д0

0 01 12 ….…7 7

C

OE ДД5

1

1 11

+5B КР1533ИР33

ШД

Д0

Д1

…..

Д7+5ВКну

-Uп2+5В

+Uп2ДД3

ДД4А0

IOW

Кву

-Uп2

Page 178: Микропроцессорная техника

Адрес порта ввода 0000,0001 = 01 H

2.4. Модуль вывода

Адрес порта ввода 0000,0010 = 02H Выходы порта: Д 0 = 1 – пускатель включён

Д 1 = 1 – включ. лампа Д 2 = 1 – включ. звук

2.5. Выбор блока питания

178

ДI RG Д0

0 01 12 2… ….7 7

C

OE ДД5

11

1

1

&

11

КР8533ИР33 ~380В

V1ДД4

ШД

Д0+5В

КМ1

ДД5 Д7ДД2

ДД3

А1 VL1 ~220B

ВА1

Uп3 +5В

IOW

Page 179: Микропроцессорная техника

Разработка ПО МК

179

ALARM

Выключить двигатель

Вывод прерыв. звуков и свеиов.

сигнала

+Uп3

+5В

ДА1К142ЕН5АSA1

FU1

+ ++ +

C10C3...

C2C1~220B

ДА2К142ЕН8Е+Uп2

-Uп2

Ввод сигна- лов от датчика уровня

PUMP

Кну зам.

Включ. насос

Ввод датчиков от сигналов уровней

Кну зам.

Отключить насос

Да

Нет

Да

Нет

Page 180: Микропроцессорная техника

Детальная блок – схема главной программы работы МК: Детальная блок – схема п.п прерывания

Детальная блок – схема п.п прерывания

180

ALARM

Вывод нулей в OPORT

Вывод 03H в OPORT

Задержка на 500 мс

Вывод нулей в OPORT

Задержка на 500 мс

ПУСК

Инициализация: загрузить SP,Вывести нули в порт OPORT

Ввод из IPORT

Д0=1

Задержка на 50 мс

Вывод 01H в OPORT

Ввод из порта IPORT

Д1=1

Задержка на 50 мс

Вывод нулей в OPORT

Нет

Да

Нет

Да

Page 181: Микропроцессорная техника

; Программа работы МК IPORT EQU; Адрес порта вводаOPORT EQU 02H; Адрес порта выводаSTACK EQU 0FFFH; Адрес вершины стека ORG 0000HPUMP: JMP INIT ORG 0024H; вектор прерыв. по TRAP JMP ALARM ORG 0100HINIT: LXI SP, STACK; загруз. указ. стека XRA A; OUT OPORTWAIT1: IN IPORT ANI 00000001B; выделить Д0 JZ WAIT1; если Д0 = 0 CALL DEL50MS; вызов п.п задержки MVI A, 01H OUT OPORT; включить насосWAIT2: IN IPORT ANI 00000010B; выделить Д1 JZ WAIT2; если Д1 = 0CALL DEL50MSXRA AOUT OPORT; выключить насос JMP WAIT1; зацикливание ; обработчик прерыванияALARM: XRA A OUT OPORT; выключить насос MVI A, 03H; OUT OPORT CALL DEL500MS; XRA A OUT OPORT CALL DEL500MS JMP MEANDER ; п.п. задержки на 50 мс.DEL50MS: LXI B, 3125 LOOP: NOP NOP NOP NOP

181

Page 182: Микропроцессорная техника

DCX B MOV A, C ORA B JNZ LOOP; Если ( BC ) не равно 0 RET; п.п. заднржки на 500 мс – это ; 10 раз вызывать п.п. задержки; на 50 мсDEL500MS: MVI E, 10 CYCLE: CALL DEL50MS DCR E JNZ CYCLE RET END; конец программыPUMP. ASM – асемблерный файлPUMP. OBJ – объектныйPUMP. TSK – выполняемый3. Описание принципиальной схемы МК:

Интерфейс МПС.

Интерфейс – совокупность линий и шин, сигналов электрон. схем, алгоритмов и программ, обеспеч. обмен инф-ции между процессором, памятью и внешними устр-ми:1. Логическая среда интерфейса – правила и алгоритмы обмена данными ( протоколы обмена )2. Физическая среда – вид и пар-ры сигналов.3. Конструктивная среда – электронной схемы, электрич. разьёмы.Стандартный интерфейс – это сов-сть унифицированных аппаратных, программных и конструктивных ср-в.По ф-циям интерфейсы бывают:1.системные для связи устр-в внутри систем. или микро ЭВМ.2. внешних уст-в для связи систем с внешн. устр-ми.Системные интерфейсы должны обеспечить max скорость передачи данных.Число линий – велико, но их длина небольшая ( до 1 м. ) Интерфейсы при последовательном формате имеют меньшую скорость передачи, но длина соединит. линии намного больше.Интерфейсы ввода – вывода.1. Вид связи:а) Дуплексная 1 б) Полудупликсная

в) симпликсная 2. Пропускная способность, т. е. скорость передачи данных, [ бит./ сек. ]3. Max допустимое расстояние между устр-ми, [ м ]4. Величина задержки при организации передачи ( из-за длины л.с. )

Организация интерфейсов.

182

1 2

линия связи

2 1

линия связи

Page 183: Микропроцессорная техника

1. Послед. интерфейс.2. Парал. интерфейс.1. С синхронной передачей.2. С асинхронной передачей. В последов. интерфейсе данные передаются по одной сигнальной линии в послед. формате. Т.к. кол-во проводников небольшая, то, удобно при передаче на большие расстояния. В парал. – данные передаются квантами в парал. формате. Расстояние небольшое. При асинхронной передаче каждая посылка заключается в рамку из старт-бита и стоп-бита:

Достоинства: высок. надёжность, малые требов. к стабильности генераторов.Недостаток: малая скорость передачи.Синхронная передача: А) С помощью спец. синхросигналов, кот. посылаются в линию связи и синхронизируют генераторы передатчика и приёмника.

Достоинство – высок. скорость перед.Недостаток – высок требования к стабильности генерат.Б) Использ. отдельных линий подачи синхроимпульсов Данные Данные

Достоинство – высокая надёжн. В парал интерф. часто использ. асинхронную передачу вида “ запрос-ответ ”, при этом использ. дополнит. сигналы, кот. использ. приёмник и передатчик:

8

183

Старт бит данные стоп бит

Данные Данные …..

SYN

SYN1 SYN2 Данные Данные …..

ПРМ

ПРД Данные

STR

ACK

Данные

Этот вид передачи с квитированиемSTR

ACK

Page 184: Микропроцессорная техника

Структура интерфейса:

1. Радиальный. 2. Магистральный.3. Смешанный интерфейс.

К – коммутаторYi – переферийные устройстваРгА – регистр адресаРгз – регистр запроса

Достоинство – простота алгоритма работыНедостаток – большое кол-во линий связи.

184

1

УЦ

К

Рг.АРг.З

Ун

АнА2

У2

А1

У1

УцУУ

Формирователь адреса Yi

Схема анализа запроса

RQШина адреса данных

AnRQA1RQ

…………..

YnY1

2

Page 185: Микропроцессорная техника

RQ – линия запросовДостоинство – высокая скорость передачи данныхНедостаток – длина линии связи малая

Организация линий интерфейса.

Линии: - однонаправленные- двунаправленные

Направленность определяет число передатчиков, кот. может присоединяться к линии.

1. Схемы с ОК на выходе.

185

Линия связи

ПРМПРД

ПРДПРМ

Линия связи

ПРМПРД

+Uип

Rлс

VT2VT1

ПРД2ПРД1

Page 186: Микропроцессорная техника

Достоинство – простота схем.Недостаток – малая част. передачи

2. Схема с эл-ми, имеющими три состояния на выходе.

OE – управляет выход. буфером:OE = 1 – выходы в Z – состоян.OE = 0 – выходы имеют 0 или 1

Достоинство – высокое быстрод.Недостаток – большая стоимость.

Передача по однонаправленным линиям связи.

Еп – ЭДС помехиUпрд1 = Uпрм1-( Еп+Uаb )Uпрд0 = Uпрм0+( Еп+Uab )Uпрм1 – Uпрм0 > Uдоп – чтобы передача была надёжнойДля ТТЛ: U доп > 0.4 В

186

ПРД1 ПРД2

ОЕОЕ 11

~EпПРМUпрмUпрд

ПРД

bA Линия связи

Uab

Page 187: Микропроцессорная техника

0

Передача по двухпроводной линии.

Для уменьшения ёмкости между проводами провода скручивают.

3.

Схемы подключения: А) использование небалансного усилителя – передатчика и диф. усилителя приёмника.Б) использование балансного усилителя – передатчика диф. усилителя – приёмника.

2

U1 = Uпрд + ЕпU2 = EпUпрм = U1 – U2 = Uпрд

187

ПРМПРД5,0

5,0Uдоп

Uпрм12,0

2,4Uдоп

Uпрд1

Uпрм00,8

0,4

Uпрд0

00

Обратный (общий)

Прямой проводСигнальный

Пр.

Обр.

1.Витая пара

Пр.

Обр.

Пр.

Обр.

ПРМПРДА) ~Еп1

~ЕпUпрд

Uпрм1Uпрм2

Синфазные помехи

Page 188: Микропроцессорная техника

Увеличение в несколько раз л.с.

Интерфейс ИРПР ( BS – 4421 )

Интерфейс радиальный, паралельный, служит для связи внеш. устройств с микро ЭВМ, а также для связи микро ЭВМ м.д. собой.

Основные технич. хар-ки ИРПР:Число взаимодействующих устр-в - 2.

Формат, передачи данных – параллельный асинхронныйДанные от 1 до 16 битУровни сигналов в линии – ТТЛ мех. Расстояние 15 м.

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

Направл.УсловноеРусск.

ОбозначениеАнгл.

ЭкранНуль ( общий )Готовность приёмникаГотовность источникаСтроб ист-каЗапрос приёмникаДанные

И ----П

П ---- И

И ---П И --- ПИ --- П

ЭОВГП

ГИ

СТРЗПД0 – Д7

SZSO

A0

SCACД0 – Д7

188

ПРМБ) ПРД1Еп~А

2Еп~Б

ПИ

Источник приёмник

ПИ

ИП

И П

ДанныеД0

ГПД1

ГИД7

ЗП

СТР

Д0…Д7

ГИ

ГП

СТР

ЗП

Page 189: Микропроцессорная техника

Инвертор с открытым коллектором:

легко контролировать целостность соединит. линий.

189

1 1

+5В

ПИ R1Д1Л.с.Д1

Н уровень‘0’

1

1

ЗП

+5В

RЛ.с.

ЗП

ГИ

ГП

ЗП

СТР

Д0…Д7

Page 190: Микропроцессорная техника

Устройство сопряж. , преобраз. сигналы интерфейса, должно обеспечивать логику работы интерфейса.

Пример подключения ППА КР580ВВ55А.

Драйвер – программа, управляющая вводом – выводом.Драйверы обмена ОИРПР.

Строка 1: INIT 1 – инициализация CHECK 1 – проверка сигнала ГП OUTPUT 1 – передача байта из рег. С. Строка 2: INIT 2 – инициализация CHECK 2 – проверка сигнала ГИ INPUT 2 – приём в рег. С. РА – вывод РВ – ввод РСL – ввод РСH - вывод

190

ППА

Вывод

Ввод

Выв.

РА 0 7

РВ 0 7

РС 0 1

4 5 6

ППА

Ввод

Вывод

Ввод

РВ 0 7

РА 0 7

РС 4 5

0 1 2

Односторонняяпередача

Строка 2Строка 1

ПРИЁМНИК

ИСТОЧНИК

ЗП

ГП

СТР

ГИ

ОВ

0 0 0 0

0 сброс

1 установка

РС0 0 0 0

РС1 0 0 1

……………….

РС7 1 1 1

Page 191: Микропроцессорная техника

УС: 1000 0011 В = 83HУС: 0000 1101 = ОДН

INIT 1: MVI A, 83H OUT PYC MVI A, 0DH OUT PYC

RET

INIT 2: MVI A, 83H OUT PYC MVI A, 0FH OUT PYC

RET

CHECK 1: IN PC CMA ANI 0000 1000 RET

Если в РС3 = 1 след. готов приёмник, то Д3 = 0 и z = 1.

191

INIT 1

Загруз. УС в ППА

Выдать сигнал ГИ ( РСb 1 )

Возврат

INIT 2

Загрузка УС в ППА

Выдать сигнал ГП ( РС7 1 )

Возврат

CHECK 1

Ввод из РС

Инверт. ( А )

Выделить Д3

Возврат

Page 192: Микропроцессорная техника

CHECK 2: IN PC CMA ANI 0000 0100 RET

OUTPUT 1: IN PC ANI 02H JZ OUTPUT 1 ; вывод данных MOV A, C OUT PA MVI A, 09H OUT PYC WAIT 1: IN PC ANI 02H JNZ WAIT 1 MVI A, 08H OUT PYC XRA A OUT PA RET

INPUT 2: MVI A, OBH OUT PYC WAIT 2: IN PC ANI 01H

192

CHECK 2

Ввод из РС

Инверт.

Выделить Д2

Возврат

OUTPUT 1

Ввод из РС

Выделить Д1

Д1=1

Выдать ( С ) в РА

Вывести РС4 1

Ввод из РС

Выделить Д1

Д1 =0

Вывести РС4 0

Вывести 00Н в РА

Возврат

Нет

Да

Да

Нет

INPUT 2

Установить РС5 1

Ввод из РС

Выделить Д0

Д0 = 1

1

Нет

Да

Page 193: Микропроцессорная техника

JZ WAIT 2 IN PB MOV C, A MVI A, OA OUT PYC WAIT 3: IN PC ANI 01H JNZ WAIT 3 RET

ИРПР – М – Centronics

Последовательный интерфейс.

В них использ. некотор. кол – во проводников для связи ( min = 2 )1. RS – 232 C2. Токовая петля.

1. Аналог стык С2 позволяет связать м / д собой 2 устройства( компьютеры, МК )

2 вида уст – в:1. Терминальное ДТЕ ( 00Д ) может выдавать и принимать сигналы.2. Связное ДСЕ ( АПД ) - модем

193

1

Ввод из РВ

Переслать из А в С

Вывести РС5 0

Ввод из РС

Выделить Д0

Д0 = 0

Возврат

Нет

Да

Page 194: Микропроцессорная техника

Разъемы кабелей:1. ДВ25;2. ДВ9.

Разъемы состоят из двух составных частей: вилка (male – папа) и розетка (female – мама).

Сигнал НазначениеPG Защитное заземление.SG Сигнальная земля (общий).

TxD Передаваемые данные.RxD Принимаемые данные.RTS Выход сигнала запроса передачи данных.CTS Вход сигнала разрешения передачи данных

(выключено – запрещает передачу данных).DSR Вход сигнала готовности (от модема).DTR Выход сигнала готовности терминала к обмену

данными. DCD Вход сигнала обнаружения несущей телефонной линии.

RI Вход сигнала индикатора вызова (звонка).

Логический ноль обеспечивается сигналами +3 …+12 В.Логическая единица обеспечивается сигналами -3 …-12 В.

194

OOD(DTE)

AПD(DCE)

Микро ЭВМ

КабельRS-232 OOD

(DTE)AПD

(DCE)

Микро ЭВМ

КабельRS-232

Телефоннаялиния

1 13

14 25

DB25P

1 5

6 9

DB9P

Page 195: Микропроцессорная техника

Для передатчика:

Для приемника:

Uп ≤ 2 В.DB9 DB25

TxD 3 2RxD 2 3DTR 4 20DSR 6 6RTS 7 4CTS 8 5DCD 1 8

RI 9 22SG 5 7

XON =11H – сторона 1 передает данные.XOFF = 13H – сторона 2 не принимает данные.

195

Логический 0

Логическая 1

U, B

+15

+50

-5

-15

Логический 0

Логическая 1

U, B

+25

+30

-3

-25

TxDRxDDTRDSRDCRRTSCTSSG

TxDRxDDTRDSRDCRRTSCTSSG

DTE-1 DTE-2

Page 196: Микропроцессорная техника

Квитирование:

DTR – готовность.RTS – разрешить передачу символа.CTS – подтверждение приема.

ВМ80/ВМ85. КР580ВВ51А: ПСА – УСАПП.

Частота передачи: 300, 600, 1200, 2400, 4800, 9600 бит/с.Кдел = 1Кдел = 16Кдел = 64Пусть: fп = 4800 бит/с.Кдел.внут = 16fс = 4800*16 = 76800 Гц.

Для работы адаптера необходимо: DSR = 0 и CTS = 0.

Драйверы для работы интерфейса.

Режим асинхронный: Кдел = 16.Контроль паритета – нет.Два стоп бита.

УС: 0100 0000 = 40H – инструкция режима.196

TxDRxDDTRDSRDCRRTSCTSSG

TxDRxDDTRDSRDCRRTSCTSSG

TxDRxDDTRDSRRTSCTSTxCRxC

SIO

C

TxDRxDDTRDSRRTSCTSTxCRxC

SIOTTЛ/RS

TTЛ/RSRS/TTЛ

RS/TTЛ

Делительчастоты

Делительчастоты

F2ттл

fc

л.с.

INIT1

Программный сброс

Возврат

Вывод в РУС инстр. реж.

Ввод в РУС инстр.ком.

Page 197: Микропроцессорная техника

УС: 0000 0001 = 01H – инструкция команды.

INIT MVI A,40HOUT РУС Программный сбросMVI A, XXOUT РУС Инструкция режимаMVI A,01HOUT РУС Разрешить передачуRET

Инструкция команды:D7 D6 D5 D4 D3 D2 D1 D0D0 – 1 – передача разрешена D1 – 1 – DTR = 0D2 – 1 – прием разрешенD5 – 1 – DTS = 0D6 – 1 – программный сброс

Слово состояние:D7 D6 D5 D4 D3 D2 D1 D0 DSR =1 1 (TxRDY) готов

1 (RxRDY) готов

В регистре С – передаваемый символ.OUTPUT 1 IN РУС Ввод слово состояния

ANI 01H Выделить Д0JZ OUTPUT1 Если TxRDY = 0MOV A,COUT DAN Вывод в УСАППRET

197

OUTPUT1

Ввод слова сост. УСАПП

TxRDY = 1

Возврат

ДаВвод символа в УСАПП

Нет

INPUT1

Ввод слова сост. УСАПП

RxRDY = 1

Возврат

ДаВвод из DAN

Нет

Page 198: Микропроцессорная техника

INPUT 2 IN РУСANI 02HJZ INPUT2IN C,AMOV A,CRET

Недостаток – отсутствие контроля за передачей символа.

Аппаратное квитирование передачи данных.

Сигналы: DTR и DSR; RTS и CTS.

INPUT1_1 IN РУСANI 80HJZ INPUT1_1CALL INPUT1RET

198

TxDRxDDTRDSRRTSCTSTxCRxC

SIOTxDRxDDTRDSRRTSCTSTxCRxC

SIO

TTЛ/RSRS/TTЛ

Сторона 1Сторона 2

INPUT1.1

Ввод слова сост. УСАПП

D7 = 1

Возврат

ДаВызов INPUT1

Нет

(DSR=0)

Page 199: Микропроцессорная техника

OUTPUT2_1 MVI A,03HOUT РУСCALL OUTPUT2RET

Инициатором передачи может быть любая сторона.

Используется система прерываний.

199

OUTPUT2_1

Вывести Д1 = 1 в РУС

Возврат

Вызов OUTPUT2

Сторона 1

DTRDSR

Сторона 2

DTRDSR

Рукопожатие

Сторона 1

RTSCTS

Сторона 2

RTSCTS

TxDRxDDTRDSRRTSCTSTxCRxC

SIOTxDRxDDTRDSRRTSCTSTxCRxC

SIO

TTЛ/RS

RS/TTЛ

Сторона 1Сторона 2

CPUINT1

Page 200: Микропроцессорная техника

Передатчик К170АП2:

Приемник К170УП2:

ИРПС – токовая петля.При передаче данных используются импульсы тока.I = 20 mAI = 40 mA.Сигналы управления передаются непрерывно, скорость до 9600 бит/с.В качестве сигнала квитирования выступает сигнал готовности приемника.

Лог1 ток в 20 мА, а лог 0 отсутствие тока.

200

&

&

TTЛ

1

TTЛ

2

3

Uттл1

4

7

6

5 8-12 В +12 В

RS-232

RS-232

342516

147

8

10

11

12

1315 10+5 B +12 B

ПД ПР

RS-232

ПД ПР

RS-423A

ПД ПРRS-422A

L = 12 m., V = 10 MБт/сL = 1200 m., V = 100 КБт/с

L = 9 m., V = 100 КБт/сL = 1200 m., V = 1 КБт/с

ПД ПР

Готовность приемника

л.с.

л.с.

+ПД

-ПД

+ПрД

-ПрД

+ГПр

-ГПр

Page 201: Микропроцессорная техника

При отсутствии передачи – постоянно течет ток 20 мА, это позволяет контролировать целостность линии.

201

+12 B

VT1KT361

390

3k

33

VD1

VT20KT361ТТЛ

Выход (+ПД)

Вход (-ПД)

Передатчик

+ПрД

-ПрД

Вход

Выход

330

VD1

43k

1k

+5 B

КР1533ТЛ2

VT1АОТ128

Приемник

ТТЛ

К Е

Rогр

ПД ПР

П

Iпр

Iобр

л.с.

Схема с активным передатчиком и пассивным приемником

RпRппRоог

EсIл

2..

К Е

Rогр

ПД ПР

П

Iпр

Iобр

л.с.

Page 202: Микропроцессорная техника

Недостаток: интерфейс не стандартизован.В качестве устройства сопряжения используется УСАПП КР580ВВ51А. необходимо преобразование уровней ТТЛ в ток и наоборот.

Программы аналогичны.

Достоинство: простота организации, большая дальность передачи, высокая помехозащищенность, дешевизна.Недостаток: малая скорость передачи, не унифицированность.

Интерфейс КОП (канал общего пользования).

HPIB – интерфейсная шина.GPIB.IEEE – 488 русский аналог КОП.IEC 625-1.

Основные характеристики: — скорость передачи информации до 1 МБт/с— длина шины до 20 м.— число линий интерфейса = 16— способ обмена информации – параллельный— режим обмена – полудуплексный— число подключаемых устройств до 15— уровень сигналов – ТТЛ.

В интерфейсе КОП имеется 16 линий трех видов:— 8 линий ввода – вывода данных— 3 линии управления передачей— 3 линии управления интерфейсом.

202

TxDRxDDSRDTRRTSCTSTxCRxC

SIO RxDTxDDTRDSRRTSCTSTxCRxC

SIOTTЛ/RS

TTЛ/RSRS/TTЛ

RS/TTЛ

л.с.

Направление передачи

л.с.

Направление передачи

Page 203: Микропроцессорная техника

Три вида:— устройства, которые передают данные, это передатчики— устройства, которые только принимают данные, это приемники— устройства управления интерфейсом, это контроллер.

В интерфейсе используется инверсная логика, то есть логический 0 это Н-уровень, а логическая 1 это L-уровень.

Линии и сигналы интерфейса:DIO1 – DIO8 – шина данных. Данные и команды передаются параллельным кодом. В команде содержится адрес устройства и приказ стать приемником или передатчиком. Адреса: Первичные (15) и вторичные (до 32). Линии управления передачей:DAV – данные доступны (действительны). Активный уровень показывает, что данные могут быть прочитаны (вырабатывает передатчик).

203

розетка

вилка

Соединение в цепочку

Контроллер передатчик –

приемник

Передатчик – приемник Приемник Передатчик

DI1 – DI8

DANNRFDNDACATNIFCSRQRENEOI

Шина данных

начало конец

+5 В

Это позволяет легко подключать много устройств параллельно

Page 204: Микропроцессорная техника

NRFD – не готов к приему данных. Его вырабатывает приемник – используется для синхронизации работы приемников, помогает согласовать медленные и быстрые устройства.NDAC – данные не приняты (вырабатывает приемник).

Эти три сигнала используются при всех передачах данных.

Сигналы управления интерфейсом:ATN – внимание, подает контроллер когда передает команду.IFC – сброс (очистка) интерфейса, подает контроллер для сброса всех устройств.SRQ – запрос обслуживания, подает устройство когда они требуют обслуживания.REN – разрешение дистанционного управления – подает контроллер.EOI – конец идентификации.

Передача данных: каждый байт данных (команды) сопровождается тремя байтами квитирования.Протокол обмена интерфейса:

Сигналом DAV управляет передатчик, а NRFD и NDAC приемник. Низкий уровень DAV и данные на шине установлены и действительны.Пусть контроллер установил передатчики и приемники, тогда все приемники формируют Н-уровень, NRFD – готов к приему (1). Передатчик выдает на шину данных данные, когда они стабильны выдается L-уровень на DAN (2). Приемники начинают принимать эти данные и вырабатывают NRFD = L-уровень (3). Во время приема данных каждый из приемников вырабатывает NDAC = L-уровень (4). Когда самый медленный приемник примет данные он освобождает линию и вырабатывает NDAC = Н-уровень, то есть все приемники приняли данные. Получив Н-уровень NDAC передатчик вырабатывает DAV = Н-уровень (5). Это значит, что данные на линии уже не доступны. После этого приемник вырабатывает L-уровень NDAC (6) и Н-уровень NRFD (7), то есть система готова к приему новых данных.

Команды интерфейса КОП.

Команды передает контроллер, ATN = L-уровень.B8 B7 B6 B5 B4 B3 B2 B1

Для команды.

Вид команды определяется: B7, B6, B5.B7 B6 B5 Тип команды0 0 0 Адресуемая0 0 1 Универсальная0 1 Х Приема1 0 Х Передачи1 1 Х Вторичная

Контроллер имеет возможность программировать устройство на прием или передачу.Команда приема: адреса передаются младшими битами: 0000 …1110 – 30 адресов.

204

DIODAV

NRFDNDAC

Данные на шине

12

3

4

5

6

7

Page 205: Микропроцессорная техника

Каждое устройство, подключаемое к интерфейсу имеет свой адрес, если этот адрес совпадает с выставленным, то устройство настраивается на прием.1111 – UNT (конец передачи команды приема).Аналогично при передачи:UNL – конец команды передачи.Вторичная – для передачи информации вторичным устройствам (со своими адресами).Универсальные:LLO – блокировка автономного управления.PCL – сброс.PPOSPESPD

Схемная реализация интерфейса:I8291 – 1 – приемопередатчик.I8292 – 1 – контроллер шины.I8293 – 2 – шинный приемопередатчик.

Транспортная передача данных.

При передаче данных используются специальные коды:МТК – 5 битный.ASCII – 7 битный.КОИ-7 – 7 битный.КОИ-8 – 8 битный.

Символ Код ASCII0 30H1 31H 9 39H+ 23H= 3DH

SOM 01H Начало сообщенияEOM 03H Конец сообщенияEOT 04H Конец передачиNUL 00H Ожидание

Байт БайтSOM … EOM NUL NUL SOM EOM EOT

Данные

Метод транспарантной передачи: берется код (любой) DLE, управляющие символы будут в виде двух байтов:DLE STX – начало транспарантного текста.DLE ETB – конец текстового блока.DLE ETX – конец транспарантного текста.

205

Д АЦП

t

Uвх

0 … 255

код

0 000000001 00000001255 11111111

Page 206: Микропроцессорная техника

DLE SOH – качало транспарантного заголовка.DLE DLE – передача данных, совпадающих с DLE.

DLE – 55hSTX – 76hETB – 85h

Пример: контроллер поставляет данные о температуре печей. Количество печей и зон произвольно и может меняться.

DLE SOH DLE STX DLE ETX DLE SOH DLE STX …заголовок Данные по темп. заголовок Данные

DLE STX DLE ETBКонец блока

Сопряжение устройств управления и контроля с ПК.

IBM PC – 1981 г.1. через системную шину.2. через параллельный порт (порт принтера).3. через последовательный порт.

РС/ХТ, структурная схема:

206

Процессор ОЗУ ПЗУ Контролер регенерации

Контролер ПДП

Контролер прерываний

Системные устройства

ввода - вывода

Плата расширения 8

Плата расширения 8

Системная шина

A0 – A19D0 – D7

IRQ2 – IRQ7DRQ1 – DRQ3

DACK0 – DACK3MEMR, MEMW, IOR, IOW

AENRESET DRV

ALECLKOSCT/C

IO CH SKIO CH RDY

Системная плата

Плата расширения

Ещё 8 линий питания: GND,5 B, 12 B

20

86

34

4

11

11

111

1

Page 207: Микропроцессорная техника

Описание линий:А0 …А19 – шина адреса (1 Мбайт).Д0…Д7 – линии данных.IRQ2…IRQ7 – запросы прерываний.ДАСК0…ДАСК3 – подтверждение прямого доступа к памяти.DRQ1…DRQ3 – запрос прямого доступа к памяти.MEMR, MEMW, IOR, IOW – стробы.AEN – разрешение адреса.AEN = H-уровень – работа с прямым доступом к памяти.AEN = L-уровень – порты ввода – вывода.RESET DRW – начальная установка внешних устройств.ALE – разрешение фиксации адреса.CLK – сигнал тактовой частоты fт = 4,77 МГц.OSC – сигнал частоты fosc = 14,31818 МГц, для работы монитора и для последовательного порта.T/C – завершение передачи.IO CH SK – проверка канала ввода вывода.IO CH RDY – готовность канала ввода – вывода.

PC/AT – модернизировала системную шину в ISA.

207

A31 A1B31 B1

A31 A1Микропроцессор

SRAM (КЭШ) Мост Host - PCI DRAM (системная память)

Устройства PCI Платы расширения

Мост PCI - ISA

Платы расширения

Платы расширения

Host BusСистемная шина

PCIЛокальная шина

ISAЛокальная шина

Плата ATX:

CPU

Слоты ISAСлоты PCI

Память

дисководыПитание

Page 208: Микропроцессорная техника

1. через шину ISA.2. через Centronics.3. через RS-232 C.

ISA Centronics RS-232 CСкорость обмена До 2 Мб (высокая) До 100 Кб (средняя) До 5 Кб (низкая)Длина и тип связи Встроенные УС (линии

связи отсутствуют)До 2 метров

(многожильный кабель)

До 15 метров (двухпроводный кабель)

Внешний источник питания

Нет Нужен Нужен

Формат и разрядность данных

Параллельный, 8 и 16 разрядный

Параллельный,8 разрядный

Последовательный,

Количество устройств сопряжений

3 – 6 1 1

Сигналы шины ISA.

SA0 … SA15 – линии адреса (для обращения к устройствам ввода – вывода).SD0 … SD15 – разряды данных.Два режима работы УВВ:

1. 16 – разрядный обмен.2. 8 – разрядный обмен.

I/O CS16 – выбор цикла обмена:= 1, то 8 - разрядный обмен (по умолчанию).= 0, то 16 - разрядный обмен.

- строб чтения. - строб записи.

SYSCLK – системный сигнал (меандр с fclк = 8 МГц) – задает темп обмена с внешними устройствами.I/O CH RDY – готовность канала = 1, тогда УВВ успевает за процессом обмена; =0, тогда цикл обмена задерживается на Т=1/fclк.Tздмах ≤ 15 мкс.Нет задержки – это синхронный обмен.

208

Page 209: Микропроцессорная техника

RESET DRY – сброс драйвера – сигнал начальной установки внешних устройств (при включении питания или при сбое в питании).

AEN – разрешение адреса, используется в режиме прямого доступа к памяти, = 1 – все платы расширения отключены от системной шины.

Питание устройств расширения:Напряжение Ток, А

+5В До 4,5-5В До 1,5

+12В До 1,5-12В До 1,5

Мощность источника 200 Вт.Напряжение Допустимый ток нагрузки, А

+5В 7…20-5В 0…0,3

+12В 2,5…7,5-12В 0…0,3

Чтобы что-то присоединить к шине, надо:Нагрузка

Устройство, котороедает сигнал на

шину.Сн ≤ 20 пФ

Длинна проводника < 65 мм.

Цикл чтения:

1. Интерфейсная часть УС.

209

RESETDRV

>1 mc

T

Адрес УВВ

>91нс >176 нс >13 нс

<110 нс <62 нс

<32 нс

SYSCLK

SA0 – SA15

SD0 – SD15

Задержка строба не менее 91 нс.

Длительность строба 176 нс.

Задержка между фронтом строба и появлением данных не более 110 нс.

Page 210: Микропроцессорная техника

2. Операционная часть УС.

Интерфейсная часть УС.

Функции:1. буферизирование всех сигналов шины.2. селекция адреса.

К580ВА86 – двунаправленный шинный формирователь.КР1533АП6 – двунаправленный шинный формирователь.Iвых0 ≤ 32 мА.Iвых1 ≤ 5 мА.

КР580ИР82 – однонаправленный регистр.КР1533ИР33 – однонаправленный регистр.

КР1533АП6 – двунаправленный шинный формирователь.

210

RG

DD1

D001234567

DI01234567C

OE

KP1533ИР33

BA0

BA0

+5 BSA7

SA0

RG

DD2

D001234567

DI01234567C

OE

BA8

BA0+5 B

SA8

BA9BAENBIORBIOWB RESET DRVB SYS CLK

SA9AEN

IORIOWRESET DRV

SYS CLK

BF B01234567

A01234567

EAB

OE

BD0

BD0

BIORSA7

SA0

SEL

Page 211: Микропроцессорная техника

Еав = 1 – направление передачи А В.Еав = 0 – направление передачи В А.

= 1 – выходы в Z состоянии.SA0 – SA9 – адреса, которые надо декодировать.300Н – 31FH – адреса для плат расширения.300Н – 307Н – адреса, которые будет иметь устройство сопряжения.

А9 А8 А7 А6 А5 А4 А3 А2 А1 А01 1 0 0 0 0 0 0 0 0

Декодирует дешифратор

1 1 0 0 0 0 0 1 1 1Декодируется лог. элементами.

АЕN – разрешение адреса.АЕN = 1 – прямой доступ к памяти, поэтому нужно чтобы АЕN = 0.

Набор лампочек и кнопочек:КР580ВВ55А – адаптер.

А1 А6 Адрес0 0 Порт РА 300Н0 1 Порт РВ 301Н1 0 Порт РС 302Н1 1 РУС 303Н

211

A012

&

DC 01234567

КР1533ИД7

HSEL300HSEL301

HSEL307

Адреса портов

“1”

BA0BA1BA2

SEL

На буфер ШД

&

К1533ЛА2

111111

BA9BA8

BA7BA6BA5BA4BA3AEN

D0127

A0A1CSRDWR

RESET

PIO PAO127

PB0127

11

1

&

&

&

BD0BD1BD2

BD7BA0BA1

BRESET DRV

SA1

SA8

+5B

R1 R8 4,7k

VD1

VD7

R9

R16

Page 212: Микропроцессорная техника

РА – на ввод.РВ – на вывод.РС – на вывод.

УС: 10010000 = 90Н

Если разомкнут – не горит, если замкнут – горит.

/*svet.cpp*/# include <stdio.h># include <dos.h># include <conio.h># define PA 0x300# define PB 0x301# define RUS 0x303# define CW 0x90main ( )unsigned char input;outportb (RUS, CW); //Инициализация ППАwhile (!kbhit( ))input = inportb (PA); //Ввод переключателя SAoutportb (PB,~input);return 0;

K1113ПВ1 – 10-разрядный АЦП.В/ - вход запуска.

212

SVET

Ввод SA

Вывод на VD

Инициализация адаптера

Клавиша нажата

Выход

Да Нет

2мкс

В/AI

AGDG

Л/# D0019

DR

В/

RG

DD2

DI01234567C

OE

DO01234567

RG

DD3

DI01234567C

OE

DO01234567

BD0BD1BD2BD3BD4BD5BD6BD7

BD0BD1BD2BD3BD4BD5BD6BD7

Л/#

DD1

B/

AI

DO0123456789

DR

1

1“1”

“1”

“1”

BIOR“1”

BIOR

Uвх

ABR

G1 QC

R/C

K555AГ31

+5B4.7k

1500

9.1k

Page 213: Микропроцессорная техника

Адрес порта запуска .DD2 – порт ввода младшего байта (адрес ).DD3 – порт ввода старшего байта (адрес ).

0…+10,24В напряжение.0…3FFH адреса.0…1024 разряды.

/*adconv.cpp*/# include <stdio.h># include <dos.h># include <conio.h># define START 0x304 //адрес порта запуска# define ADRL 0x305 //адрес порта младшего байта кода# define ADRH 0x306 // адрес порта старшего байта кодаmain ( )while (!kbhit ( ))

213

ADC

Ввод Мл.Б. кода

Ввод Ст.Б. кода

Преобразование данных

Клавиша нажата

Выход

Да Нет

Вывод на дисплей

Запуск АЦП

Данные готовы

Да

Нет

Page 214: Микропроцессорная техника

unsigned code_ADC = 0; //код на выходе АЦПunsigned char code_L;unsigned char code_H;float U; //напряжение на входе.Outportb (START, 0);While (((code_H = inportb (ADRH))&0x80)!=0);Code_L = inportb (ADRL); //ввод младшего байтаCode_Н = inportb (ADRH); //ввод старшего байтаCode_ADC = (code_H&0x03)<<8 + code_L;U = (float) code_ADC*10.24/1024;Printf (“Код АЦП = % х, Напряжение = %4.2f \n”, code_ADC, U);return 0;

Подключение устройств к порту принтера.

Centronics – интерфейс.ИРПР-М – русский аналог.Сигналы управления:D0 – D7 – данные.

- сигнал стробирования данных.BUSY – занятость принтера.

- готовность принтера.

Сигналы: - автоподача (посылает компьютер), переводится строка.

РЕ – конец бумаги.SLCT – готовность принтера.

- могут передаваться данные (подает компьютер). - сброс принтера.

Для подключения принтера используется стандартный разъем:

Контакт разъема ПК. Цепь I/O1 02 D0 03 D1 0

214

D0 – D7

BUSY

>2500

>500>500 >500

1 13

14 25

DB25P

Page 215: Микропроцессорная техника

9 D8 010 I11 BUSY I12 PE I13 SLCT I14 015 ERROR I16 017 0

18…25 GND -

Сигналы – ТТЛ уровня.Нагрузочная способность ≤ 2 мА.Длинна кабеля ≤ 2 метра.

Порты: LPT1 – 378НLPT2 LPT3Каждый характеризуется базовым адресом.Базовый адрес +1 – это регистр состояния (порт ввода).Базовый адрес +2 – регистр управления (порт вывода).Достоинства Centronics:

1. не нужно вскрывать компьютер и подключатся к шине.2. высокая скорость передачи (100 кбайт/сек).

Недостатки:1. сигналов управления мало (ограничена сложность ВУ).2. небольшая длина соединительного кабеля.3. отсутствует источник питания.

Регистр данных (BASE) D7 D6 D5 D4 D3 D2 D1 D0Порт вывода

Регистр состояния (BASE+1)

BUSY ACKNLG PE SLCT ERROR - - -

Порт вводаИнверсный, остальные прямые.

Регистр управления (BASE+2)

- - - - SLCT IN

INIT AUTO FD

STROBE

Прямой, остальные инверсные.

Набор лампочек и кнопок: 8 светодиодов и 8 переключателей.

215

DI017CR

RG Д00123…7

1

1

К155ЛН3

+5 В

330

330

KP1533ИР25

STROBEINIT

Page 216: Микропроцессорная техника

- на выходе регистра шум и VD погаснут (INIT = 0 – гашение VD0).С = 1 – разрешается запись данных в регистр (STROBE = 1 – запись разрешена).С = 0 – защелкивание (запоминание информации, STROBE =0).При S = 0 – работает верхняя секция, то есть Y=A.S = 1 – Y = B.SLCT IN – переключает секции мультиплексора.

# include <stdio.h># include <dos.h># include <conio.h># define BASE 0x378 # define STROBE 0x01# define INIT 0x04# define SLCT_IN 0x08# define MASK 0x0Fvoid control_drv (unsigned char control)outportb (BASE+2, control^0x0B); //драйвер вывода.//драйвер ввода из регистра состоит:unsigned char status_drv ( )return ((inportb (BASE+1)>>3)^0x10);//функция вывода в регистр светодиодовvoid write_VD (unsigned char data)outportb (BASE, data); //вывод данныхcontrol_drv (STROBE\INIT); //строб С=1control_drv (INIT); //строб С=0//функция чтения состояния переключателяunsigned char read_SA ( )unsigned char data;data = status_drv ( )&MASK;//чтение младшей тетрады SA0…SA3control_drv (SLCT_IN INIT); //выбор SA4…SA7data+=(status_drv&MASK)<<4;return data;

216

A0A1A2A3B0B1B2B3S

OE

MS

Y0Y1Y2Y3

ERRORSLCTPEACKNLG

SLCT IN

+5 B

KP1533KП11

Page 217: Микропроцессорная техника

main ( )control_drv (0); //гашение светодиодовcontrol_drv (INIT); //разрешить прием данныхwhile (!kbhit ( ))write_VD (read_sa ( ));return 0;}

INIT AUTO FD STROBE0 0 00 0 1 1 1 1

Подключение устройств сопряжения к компьютеру через последовательный порт.

RS-232C – интерфейс.Если длинна соединенных линий составляет десятки метров, устройство сопряжения должно преобразовывать последовательный код в параллельный и наоборот.

Преобразователь уровней преобразует ТТЛ уровни в уровни кабеля RS-232С.IFC1488 – МС передатчик.КР559ИП19.

217

012&

DC 01234567

KP1533ИД7STROBEAUTO FD

INITSLCT IN

Датчики

Исполнительные устройства

Порты ввода

Порты вывода

Преобразователь кода

Преобразователь уровня

ПК

Системная шина МК МК

КабельRS-232c

&

&

&

&

ТТЛ RS-232C

3

6

8

11

3

459101213

+5 B

DIP141 -12 B14 +12 B7 общий

Page 218: Микропроцессорная техника

Микросхема приемник IFC1489 (КР559ИП20).

Преобразователь кода преобразуют:Параллельный в последовательный.Последовательный в параллельный.I8251 (КР580ВВ51А)I8250 (КР1847ВВ2)TL16C450TL16C550Последовательные порты в компьютере:СОМ1 3F8H – 3FFH (адреса) IRQ4 (прерывание)COM2 2F8H – 2FFH (адреса) IRQ3 (прерывание)COM3 3E8H – 3EFH (адреса) IRQ10 (прерывание)COM4 2E8H – 2EFH (адреса) IRQ12 (прерывание)

Разъем:

Внутренняя структура портов:УАПП: i8250, TL16C450.

218

&

&

&

&

ТТЛRS-232C

3

6

8

11

12451091312

DIP14

14 +5 B7 общий

входы g позволяют изменять гистерезис (можно оставлять свободными)

g1

g2

g3

g4

1 13

14 25

DB25P

1 5

6 9

DB9P

УАПП

Адресный селектор

Генератор 1,8432 МГц

Приемник

Разъем

передатчик RSTTЛTTЛRS

CS

ШД

ША

Прерывание

Page 219: Микропроцессорная техника

В состав УАПП входят 8 регистров, но используются только 6 адресов.Каждый порт имеет базовый адрес (BASE):COM1: BASE=3F8HCOM2:BASE=2F8HРегистры по адресу BASE – два регистра:Их выбирают с помощью специального управляющего бита, который записывается в седьмой разряд RG адреса BASE+3:

1. при нулевом значении этого бита по адресу BASE расположен регистр для записи передаваемого байта и чтения принимающего.

2. если управляющий бит =1, то по адресу BASE будет RG для записи младшего байта делителя частоты тактового генератора.

НЕХ - код частоты Скорость передачи, бит/с НЕХ - код

Скорость

0410 110 0018 48000300 150 000С 96000180 300 0006 1920000С0 600 0003 384000060 1200 0002 578000030 2400 0001 115200

Регистры по адресу BASE+1 (тоже 2 регистра с одинаковым адресом). Управляющий бит – седьмой разряд RG по адресу BASE+3.

1. при нулевом значении этого бита по адресу BASE+1 находится регистр управления прерываниями.

2. при единичном значении регистр старший разряд кода делителя частоты.Регистры по адресу BASE+2 (идентификации прерываний, содержимое указывает на причину прерывания).

Регистр по адресу BASE+3 (регистр управления УАПП).Номер бита Назначение

0,1 Количество бит передаваемых данных:00 – 5 бит01 – 7 бит10 – 6 бит11 – 8 бит

2 Количество стоповых битов:0 – 1 бит1 – 2 бита

3,4 Контроль паритета:0Х – контроля нет10 – контроль на нечет11 – контроль на четность

5 Задание контрольного бита:1 – контрольный бит = 0 (нечетный паритет)1 – контрольный бит = 1 (четный паритет)

219

Page 220: Микропроцессорная техника

Микросхема сама вычисляет паритет.6 1 – постоянная передача

0 – нормальная передача символов.7 Управляющий бит для выбора назначения регистров BASE и

BASE+1

Регистр по адресу BASE+4 (для управления модемом).Номер бита Назначение

0 Состояние линии DTR1 Состояние линии RTS

2,3 Состояние выходов УАПП(OUT1 и OUT2)4 Режим работы УАПП:

0 – рабочий1 – диагностический

5,6,7 Не используется

Регистр по адресу BASE+5 (регистр состояния (статуса) УАПП) позволяет контролировать ошибки при приеме.

Бит Назначение0 1 – данные получены и готовы для чтения1 1 – ошибка переполнения при приеме2 1 – ошибка паритета при приеме3 1 – ошибка формата (не приняты стоповые

сигналы)4 1 – обнаружен запрос на прерывание передачи5 1 – буферный регистр передатчика пуст6 1 – регистр сдвига передатчика пуст.7 1 – TIME OUT

Регистр по адресу BASE+6 – регистр состояния модема.Бит Назначение0 Линия CTS изменила состояние1 Линия DSR изменила состояние2 Линия RI изменила состояние3 Линия DCD изменила состояние4 Состояние линии CTS5 Состояние линии DSR6 Состояние линии RI7 Состояние линии DCD

Перед использованием УАПП нужно инициализировать:1. записать по адресу BASE+3 управляющий байт с 1 в седьмом бите.2. записать код делителя частоты по адресу BASE и BASE+1.3. записать по адресу BASE+3 управляющий байт с 0 в седьмом бите и требуемыми

значениями остальных битов.4. записать управляющий байт по адресу BASE+1 (если прерывания не используются, то 0).5. записать управляющий байт по адресу BASE+4.

Заголовочный файл (для констант) – serial.h.//Определение адресов регистров int BASE//#define OUT_REG BASE //регистр передачи данных.#define IN_REG BASE //регистр приема данных#define LOW_DIV BASE //адрес регистра младшего байта делителя#define HIGH_DIV BASE+1 //адрес регистра старшего байта делителя

220

Page 221: Микропроцессорная техника

#define INT_REG BASE+1 //регистр разрешения прерывания#define INT_ID_REG BASE+2 //регистр идентификации прерывания#define CONTROL BASE+3 //регистр управления#define MODEM BASE+4 //регистр управления модемом#define STATUS BASE+5 //регистр состояния УАПП#define M_STATUS BASE+6 //регистр состояния управляющих сигналов.

// Основные константы# define B_4800 24# define B_9200# defineDEVISOR 0x80 //бит управления доступа к регистрам делителя# define BIT_8 0x03 //длина посылки 8 бит# define STOP_2 0x04 //2 стоповых бита# define NOPARITY 0x00 //нет паритета# define DTR 0x01 //бит управления линией DTR# define RTS 0x02 //бит управления линией RTS# define LOOPBACK 0x10 //бит управления тестовым регистром УАПП# define DATA_IN 0x01 //маска бита «данные приняты»# define DATA_OUT 0x80 //маска «бита готов к передаче»# define OVERRUN 0x02 //маска бита «переполнение»# define FRAME_ERR 0x08 //ошибка формата# define CTS 0x10 //маска бита состояния линии CTS# define DSR 0x20 // маска бита состояния линии DSR

//Прототипы функцийvoid init ( ); //функция инициализации портаvoid out_sym (int symbol); //функция вывода символаint in_sym ( ); //функция ввода символа

Программа тестирования последовательного порта:/*test.cpp*/# include <stdio.h># include <dos.h># include <conio.h># include “serial.h”#define ESC 27main ( )BASE = 0x3F8;Int symbol, symbol2;Init ( ); //инициализация УАППOutportb (MODEM, LOOPBACK); //перевод порта в тестовый режимWhile (1)symbol = getch ( );if (symbol = = ESC)return;out_sym (symbol); //вывод в портsymbol2 = in_sym ( ); //ввод из портаprintf (“Передано: %х, принято: %х \n”, symbol, symbol2);return 0;

void init ( )

221

Page 222: Микропроцессорная техника

outportb (CONTROL, DIVISOR);outportb (LOW_DIV, B_9200);outportb (HIGH_DIV, B_9600>>8);outportb (CONTROL, BIT_8 NOPARITY STOP_2);outportb (INT_REG,0); //запрет прерывания

void out_sum (int symbol)while (inportb (STATUS) & DATA_IN) = = 0);outportb (out_REG, symbol);

int in_sym ( )int sym;while (inportb (STATUS) & DATA_IN) = = 0); //ожидание готовности к приемуif (intportb ((STATUS) & (FRAME_ERR OVERRUN))!=0);printf (“Ошибка приема \n”);return;sym = inportb (IN_REG);return sym;

1. Прием и передача без квитирования:

2. С квитированием:а) с программным квитированием XON/XOFF.

Если приемник готов к вводу данных, он передает XON=11h, получив этот код передатчик передает 1 байт. Когда приемник не готов принять данные – он выдает XOFF = 13h и передатчик перестает передачу данных.Недостаток – низкая скорость передачи

б) с аппаратным квитированием:

222

2

3

5

2

3

5

ПК МК

ТхD

RxD

SG

ТхD

RxD

SG

Трудно избежать ошибок, по этому не применяется

2

3

5

2

3

5

ПК МК

ТхD

RxD

SG

ТхD

RxD

SG

2

3

5

2

3

5

ПК МК

ТхD

RxD

SG

RTS

CTS

DTR

DSR

2

3

2

3

2

3

2

3

ТхD

RxD

SG

RTS

CTS

DTR

DSR

Page 223: Микропроцессорная техника

1. RTS и CTS2. DTR и DSR3. RTS и CTS; DTR и DSR

Интерфейсная шина I2C.

3 вида устройств:1. Интеллектуальный узел – осуществляет управление; микроконтроллеры; однокристальные

ЭВМ.2. Блоки общего назначения (дисплей, порты ввода – вывода, устройства памяти, АЦП, ЦАП).3. Специализированные устройства, характерные для отдельных приложений: блоки

настройки, коммутации.

Phillips разработала простую двухпроводную, двунаправленную шину для межсхемного соединения: intel IC (IIC, I2C). С её помощью можно строить все устройства и реализовать все их функции.Используются только две линии:SDA – линия данных (последовательная передача)SCL – линия синхронизации.

Стандартная скорость – до 100 кбит/с.Быстрый режим – до 400 кбит/с.Суммарная емкостная нагрузка не должна превышать 400 пФ.Существует множество микросхем, которые имеют встроенный интерфейс: КМОП, n-МОП, ТТЛ, ЭСЛ.Достоинство: I) для конструкторов:1) Блоки на функциональной схеме реализуются отдельными МС.2) Нет необходимости разрабатывать интерфейс (схема присоединения к шине).3) Одни и теже микросхемы могут использоваться в различных приложениях.4) Отдельные микросхемы легко могут быть добавлены или убраны, не влияя на систему.5) Упращается отладка и настройка системы для изготовителя.

II) для изготовителя:1) Для соединения микросхемы требуется всего 2 линии, следовательно упрощается разводка и

следовательно уменьшается стоимость и габариты плат.2) Возможность наличия на линии нескольких ведущих.

Общие концепции шины I2C: применяется в системе с восьмиразрядным микропроцессором.Для связи кроме самих линий нужен протокол обмена, чтобы не было потери данных.Две группы устройств:

223

Page 224: Микропроцессорная техника

1) Типа Master (хозяин, ведущий).2) Типа Slave (раб, ведомый).

В качестве ведущего используется микроконтроллер.Возможно несколько ведущих на шине.Ведущий генерирует импульсы синхронизации.Устройства:1) Передатчик.2) Приемник.

Каждое устройство имеет свой уникальный адрес. Ведущий перед началом работы выдает на шину адрес ведомого. Ведущий задает направление передачи. Ведомое устройство, обнаружив свой адрес, посылает сигнал подтверждения и выполняет указанную функцию.Все устройства присоединяются к шине, присоединяются по методу «монтажного ИЛИ»: выходы устройств должны иметь выходы с открытым стоком (коллектором).

Все устройства подключаются параллельно к линии.Rр – подтягивающие резисторы.Uип = 3 …15 В. (чаще всего 5 В).Пересылка каждого бита сопровождается синхроимпульсом по линии SCL.Действительность данных:

Состояние (условие) START и STOP – это состояние шины, вырабатывает выдущий.

224

START

STOP

SDA

SCL

SDA

SCL

В начале передачи по интерфейсу, после чего интерфейс занят

При окончании передачи по интерфейсу, после него интерфейс свободен

SDA

SCLДанные не изменены (действительны) при высоком уровне

При низком уровне данные изменяются (недействительны)

SCL-1IN

ВходSCL-1OUT

Выход

DATA-1IN

ВходDATA-1

OUT

Устройство 1

SCLSDA

+Uип

Rр Rр

Может быть ещё и другие устройства(устройство 2 и др)

Page 225: Микропроцессорная техника

Формат передаваемого байта: число передаваемых байт не ограничено; данные передаются со старшего разряда.

Девятый импульс:ведомый должен выдать сигнал подтверждения. АСК: проверяется сохранность данных.Для прекращения передачи ведомый выставляет на линию синхронизации низкий уровень и ведущий прекращает передачю данных.Адресация устройств на шине, можно использовать два формата:

1. семибитный (27=128)2. десытибитный.

Передача адреса всегда следует за условием START.

START A6 A5 A4 A3 A2 A1 A0 R/ : 7 - битный адрес Бит направления

Байт (передает ведущий)

R/ =1, чтение (ведомый – передатчик)R/ =0, запись (ведомый – приемник).

Десятибитный:

START 1 1 1 1 0 A9 A8 R/ A7 A6 A5 A4 A3 A2 A1 A0

Из 7 разрядов выделяется две части:1. фиксированное.2. программируемая.

Фиксированная часть устанавливается в комиссии по шине I2C (это 4 разряда). Программная часть может менять пользователь (обычно перемычками).

225

STOPSTART

SDA

SCL1 2 8 9 1 2 8 9

ACK ведомый не принимает(передает) данные

ACK