- •Основные понятия и определения мпт
- •Основные характеристики и типы мп
- •Общие принципы построения мпс
- •Основные операции, выполняемые в мпс с 3-мя шинами
- •Прямой доступ к памяти
- •Микропроцессор кр580вм80а (вм80)
- •Программная модель портов ввода-вывода
- •Внутренняя структура
- •Программная модель мпс
- •Программная модель памяти
- •Анализ работы мп вм80
- •Машинные такты и циклы
- •Слово состояния процессора
- •Временные диаграммы сигналов мп
- •Режимы работы мп
- •Построение отдельных модулей мпс
- •Основные параметры мс пзу
- •Принцип построения внутренней памяти мпс
- •Построение модуля пзу
- •Построение модуля озу
- •Построение двухстраничного модуля памяти
- •Модуль ввода-вывода
- •Реализация модуля ввода-вывода при раздельном поле адресов памяти и портов
- •Схемотехника модуля ввода-вывода
- •Порт ввода:
- •Построение модуля прерывания.
- •Микропроцессор вм85.
- •Система прерываний мп вм85.
- •Ввод и вывод последовательных данных.
- •Построение модуля центрального процессора мп вм85.
- •Система команд мп.
- •Язык Ассемблера.
- •Псевдокоманды Ассемблера.
- •Методика разработки программного обеспечения.
- •Процедура обработки данных.
- •Виды программного обеспечения ( по ) мпс.
- •Подпрограммы как средства модульного программирования.
- •Иерархическая организация подпрограмм.
- •Применение таблиц.
- •Программирование цифровых вычислительных устройств.
- •Арифмитические операции с целыми числами без знака.
- •Быстрое умножение и деление двоичных чисел.
- •Сложение десятичных чисел
- •Преобразование двоичных чисел в десятичные и наоборот.
- •Операции с целыми двоичными числами со знаком !
- •Дробные числа.
- •Арифметические операции с числами с пз
- •Бис параллельного интерфейса
- •Бис последовательного интерфейса кр580вв51а
- •Внутренняя структура бис кр580вв51а
- •Программирование бис вв51а
- •Формат инструкции асинхронного режима работы
- •Формат инструкции синхронного режима работы
- •Формат инструкции команды
- •Формат слова состояния
- •Бис программируемого таймера кр580ви53 (i8253)
- •Программирование таймера
- •Применение мп в системах управления и контроля
- •Работа мк с дискретными сигналами
- •Борьба с дребезгом контактов
- •Формирование управляющих сигналов
- •Методы управления отдельными линиями порта ввода
- •Формирование временных задержек
- •Управление дискретными нагрузками от мпс
- •Сопряжение ацп с мпс
- •Интерфейс быстрых ацп с мпс
- •Интерфейс с 10-разрядным ацп
- •Интерфейс медленных ацп с мпс
- •Сопряжение цап с мпс
- •Устройство сбора и распределения данных
- •Организация связи мпс с оператором.
- •Управление индикаторами линейного дисплея.
- •Программа управления дисплеем с использованием таймера.
- •Интерфейс дисплея с клавиатурой.
- •Программируемый контроллер кр580вв79 с клавиатурой и дисплеем.
- •Программирование кр580вв79.
- •Слово состояние контроллера.
- •Методы ввода данных с клавиатуры.
- •Общая характеристика языков программирования.
- •Структура простейшей программы на языке Си.
- •Представление информации в языке Си.
- •Типы данных.
- •Переменные.
- •Строковые переменные и константы.
- •Элементарный ввод вывод в Си.
- •Операция и выражения в языке Си.
- •Преобразование типов в выражении.
- •Операции управления вычислительным процессом.
- •Функции языка Си.
- •Библиотечные функции.
- •Функции для работы с портами ввода вывода.
- •Видимость переменных.
- •Классы хранения переменных.
- •Операции присвоения.
- •Условная операция.
- •Операция sizeof (определение размера).
- •Указатели.
- •Массивы и функции
- •Операции со строками
- •Массивы строк.
- •Массивы – указатели.
- •Типы, определяемые пользователем.
- •Операции с файлами.
- •Обмен инф-ции с файлами.
- •Часть 3 Разработать мк для управления насосом напорной башни.
- •Интерфейс мпс.
- •Организация интерфейсов.
- •Структура интерфейса:
- •Организация линий интерфейса.
- •Передача по однонаправленным линиям связи.
- •Передача по двухпроводной линии.
- •Интерфейс ирпр ( bs – 4421 )
- •Пример подключения ппа кр580вв55а.
- •Драйверы обмена оирпр.
- •Последовательный интерфейс.
- •Драйверы для работы интерфейса.
- •Аппаратное квитирование передачи данных.
- •Интерфейс коп (канал общего пользования).
- •Команды интерфейса коп.
- •Транспортная передача данных.
- •Сопряжение устройств управления и контроля с пк.
- •Интерфейсная часть ус.
- •Подключение устройств к порту принтера.
- •Подключение устройств сопряжения к компьютеру через последовательный порт.
- •Интерфейсная шина i2c.
Подключение устройств сопряжения к компьютеру через последовательный порт.
RS-232C – интерфейс.
Если длинна соединенных линий составляет десятки метров, устройство сопряжения должно преобразовывать последовательный код в параллельный и наоборот.
Преобразователь уровней преобразует ТТЛ уровни в уровни кабеля RS-232С.
IFC1488 – МС передатчик.
КР559ИП19.
Микросхема приемник IFC1489 (КР559ИП20).
Преобразователь кода преобразуют:
Параллельный в последовательный.
Последовательный в параллельный.
I8251 (КР580ВВ51А)
I8250 (КР1847ВВ2)
TL16C450
TL16C550
Последовательные порты в компьютере:
СОМ1 3F8H – 3FFH (адреса) IRQ4 (прерывание)
COM2 2F8H – 2FFH (адреса) IRQ3 (прерывание)
COM3 3E8H – 3EFH (адреса) IRQ10 (прерывание)
COM4 2E8H – 2EFH (адреса) IRQ12 (прерывание)
Р азъем:
Внутренняя структура портов:
УАПП: i8250, TL16C450.
В состав УАПП входят 8 регистров, но используются только 6 адресов.
Каждый порт имеет базовый адрес (BASE):
COM1: BASE=3F8H
COM2:BASE=2F8H
Регистры по адресу BASE – два регистра:
Их выбирают с помощью специального управляющего бита, который записывается в седьмой разряд RG адреса BASE+3:
при нулевом значении этого бита по адресу BASE расположен регистр для записи передаваемого байта и чтения принимающего.
если управляющий бит =1, то по адресу BASE будет RG для записи младшего байта делителя частоты тактового генератора.
НЕХ - код частоты |
Скорость передачи, бит/с |
НЕХ - код |
Скорость |
0410 |
110 |
0018 |
4800 |
0300 |
150 |
000С |
9600 |
0180 |
300 |
0006 |
19200 |
00С0 |
600 |
0003 |
38400 |
0060 |
1200 |
0002 |
57800 |
0030 |
2400 |
0001 |
115200 |
Регистры по адресу BASE+1 (тоже 2 регистра с одинаковым адресом). Управляющий бит – седьмой разряд RG по адресу BASE+3.
при нулевом значении этого бита по адресу BASE+1 находится регистр управления прерываниями.
при единичном значении регистр старший разряд кода делителя частоты.
Регистры по адресу 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 (четный паритет) Микросхема сама вычисляет паритет. |
6 |
1 – постоянная передача 0 – нормальная передача символов. |
7 |
Управляющий бит для выбора назначения регистров BASE и BASE+1 |
Регистр по адресу BASE+4 (для управления модемом).
Номер бита |
Назначение |
0 |
Состояние линии DTR |
1 |
Состояние линии 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 |
Состояние линии CTS |
5 |
Состояние линии DSR |
6 |
Состояние линии RI |
7 |
Состояние линии DCD |
Перед использованием УАПП нужно инициализировать:
записать по адресу BASE+3 управляющий байт с 1 в седьмом бите.
записать код делителя частоты по адресу BASE и BASE+1.
записать по адресу BASE+3 управляющий байт с 0 в седьмом бите и требуемыми значениями остальных битов.
записать управляющий байт по адресу BASE+1 (если прерывания не используются, то 0).
записать управляющий байт по адресу BASE+4.
Заголовочный файл (для констант) – serial.h.
//Определение адресов регистров int BASE//
#define OUT_REG BASE //регистр передачи данных.
#define IN_REG BASE //регистр приема данных
#define LOW_DIV BASE //адрес регистра младшего байта делителя
#define HIGH_DIV BASE+1 //адрес регистра старшего байта делителя
#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 27
main ( )
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 ( )
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.
ПК
МК
ТхD
RxD
SG
ТхD
RxD
SG
Если приемник готов к вводу данных, он передает XON=11h, получив этот код передатчик передает 1 байт. Когда приемник не готов принять данные – он выдает XOFF = 13h и передатчик перестает передачу данных.
Недостаток – низкая скорость передачи
б) с аппаратным квитированием:
1. RTS и CTS
2. DTR и DSR
3. RTS и CTS; DTR и DSR
