- •Содержание
- •Список сокращений
- •Введение
- •Структура микроконтроллера
- •Процессор микроконтроллера
- •Адресное пространство микроконтроллера
- •Подключение erom и eram к микроконтроллеру
- •Периферийные устройства микроконтроллера
- •Параллельные порты ввода-вывода
- •Таймер-счетчик т/с0
- •Таймер-счетчик т/с1
- •Последовательный порт
- •Контроллер прерываний
- •Система команд микроконтроллера
- •Общие сведения о языке Ассемблер для микроконтроллеров стандарта mcs-51 и о программном пакете фирмы 2500 a.D.
- •Синтаксис языка Ассемблер
- •Определители основания системы счисления
- •Макроопределения
- •Сообщения о некоторых ошибках ассемблирования
- •Рекомендуемая процедура инициализации микроконтроллера
- •Типичные применения микроконтроллеров
- •Ввод информации с датчиков
- •Опрос двоичного датчика
- •Ожидание события
- •Ожидание импульсного сигнала
- •Устранение дребезга контактов
- •Подсчет числа импульсов
- •Подсчет числа импульсов за интервал времени между двумя событиями
- •Подсчет числа импульсов за заданный промежуток времени
- •Опрос группы двоичных датчиков
- •Ввод информации с матричной клавиатуры
- •Вывод управляющих сигналов из микроконтроллера
- •Формирование статических сигналов
- •Формирование импульсных сигналов
- •Генерация меандра
- •Формирование сигнала с заданной скважностью
- •Вывод и отображение информации
- •Динамический вывод информации на дисплей из семисегментных индикаторов
- •Реализация функций реального времени
- •Программное формирование временной задержки
- •Формирование временной задержки с использованием таймеров
- •Измерение временных интервалов
- •Преобразование кодов
- •Преобразование унитарного кода в двоичный позиционный
- •Преобразование двоичного позиционного кода в унитарный
- •Преобразование кодов из одной системы счисления в другую
- •Преобразование данных из параллельного кода в последовательный и обратно
- •Цифро-аналоговое преобразование
- •Аналого-цифровое преобразование
- •Метод последовательного приближения
- •Метод двойного интегрирования
- •Операции с памятью
- •Тестирование озу
- •Программа тестирования пзу
- •Обмен данными по шине i2с
- •Общие положения и введение в логику работы шины i2с
- •Пример обмена данными по шине i2c
- •Приём данных по протоколу Centronics
- •Литература
Приём данных по протоколу Centronics
Основным назначением интерфейса Centronics является подключение к компьютеру принтеров. Поэтому распределение контактов разъёма, назначение сигналов, программные средства управления интерфейсом ориентированы именно на это использование. В то же время с помощью данного интерфейса можно подключать к компьютеру специально разработанные устройства сопряжения.
В таблице 4.1 перечислены все сигналы интерфейса Centronics и их назначение. Однако в минимальном варианте при передаче данных можно использовать только одиннадцать линий:
Data[0:7], Strobe#, Busy, Ack#.
Таблица 4.1 – Сигналы интерфейса Centronics
Сигнал |
I/O |
Контакт |
Назначение |
Strobe# |
I |
1 |
Строб данных. Данные фиксируются по низкому уровню сигнала |
Data [0:7] |
I |
2–9 |
Линии данных. Data 0 (контакт 2) – младший бит |
Ack# |
О |
10 |
Acknowledge – импульс подтверждения приема байта (запрос на прием следующего). Может использоваться для формирования запроса прерывания |
Busy |
О |
11 |
Занято. Прием данных возможен только при низком уровне сигнала |
PaperEnd |
О |
12 |
Высокий уровень сигнализирует о конце бумаги |
Select |
О |
13 |
Сигнализирует о включении принтера (обычно в принтере соединяется резистором с цепью +5 В) |
Auto LF# |
I |
14 |
Автоматический перевод строки. При низком уровне принтер, получив символ CR (Carriage Return – возврат каретки), автоматически выполняет и функцию LF (Line Feed – перевод строки) |
Error# |
О |
32 |
Ошибка: конец бумаги, состояние OFF-Line или внутренняя ошибка принтера |
Init# |
I |
31 |
Инициализация (сброс в режим параметров умолчания, возврат к началу строки) |
Slct In# |
I |
36 |
Выбор принтера (низким уровнем). При высоком уровне принтер не воспринимает остальные сигналы интерфейса |
GND |
– |
19–30, 33 |
Общий провод интерфейса |
Временные диаграммы цикла передачи данных приведены на рисунке 4.33.
Рисунок 4.33 – Временные диаграммы цикла передачи данных
I/O задает направление (вход/выход) применительно к внешнему устройству.
Перед началом цикла передачи данных компьютер должен убедиться, что сняты сигналы Busy и Ack#. После этого выставляются данные, формируется сигнал стробирования на линии Strobe#.
При получении строба, устройство сопряжения формирует сигнал Busy, а после окончания обработки данных выставляет сигнал Ack#, снимает Busy и снимает Ack#. Затем цикл повторяется.
На рисунке 4.34 приведён вариант подключения микропроцессорного устройств к LPT порту.
Рисунок 4.34 – Подключение микропроцессорного устройства к LPT порту
Листинг 4.42 содержит текст программы, выполняющей прием данных по протоколу Centronics и их сохранение в ОЗУ.
Листинг 4.42 – Прием данных по протоколу Centronics |
||
STRB: BUSY: ACK: DATA: |
.REG P3.2 .REG P3.3 .REG P3.4 .REG P1 |
; Строб ; Готовность ; Подтверждение/запрос ; Данные |
|
.ORG 0000H |
; Адрес начала программы |
|
MOV DPTR, #0000H
|
; В DPTR заносится адрес, по ; которому необходимо ; записать байт |
NEXT:
|
CALL READ
JC NODATA |
; Вызов подпрограммы чтения ; байта с LPT порта ; Проверка получения данных |
|
INC DPTR |
; Инкрементирование ; адреса |
|
MOV A, DPH CJNE A, #08H, NEXT |
; Проверка предела записи ; памяти и переход на начало ; цикла, если память заполнена ; не полностью |
READ:
|
SETB DATA SETB STRB
CLR BUSY SETB ACK
|
; Настройка порта P1 на ввод ; Настройка разряда 2 порта P3 ; на ввод ; Разрешение передачи данных ; Установка линии ; подтверждения в исходное ; состояние |
LAB0: LAB1: LAB2:
|
MOV R0, #07F MOV R1, #FFH MOV R2, #FFH
JNB STRB, RADY DJNZ R2, LAB2 DJNZ R1, LAB1 DJNZ R0, LAB0 SETB C RET |
; Цикл ожидания строба ; Если строб не приходит, т.е. ; данные не посылаются, ; выполняется установка флага ;переноса и выход из ; подпрограммы; |
RADY:
|
MOV A, DATA |
; Чтение данных из порта |
|
SETB BUSY
|
; При приходе строба ; устанавливается сигнал ;«Занято» |
|
MOVX @DPTR, A |
; Запись байта в ОЗУ |
|
CLR BUSY |
; Сброс сигнала «Занято» |
|
JNB STRB, $
|
; Ожидание логической единицы ; на линии стробирования |
|
CLR ACK SETB ACK |
; Формирование подтверждения ; приёма байта |
|
CLR C RET |
; Сброс флага переноса ; Выход из подпрограммы |
NODATA: |
… |
|
Контрольные вопросы
Каким образом может быть использован интерфейс Centronics в микроконтроллерных устройствах?
Какие сигналы интерфейса являются входными для микроконтроллерного устройства, подключенного к ПК?
Опишите временные диаграммы цикла передачи по интерфейсу Centronics.