Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по АТ89С51 изд.вариант 2010-54.doc
Скачиваний:
86
Добавлен:
19.11.2019
Размер:
865.22 Кб
Скачать
    1. Приём данных по протоколу 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:

Контрольные вопросы

  1. Каким образом может быть использован интерфейс Centronics в микроконтроллерных устройствах?

  1. Какие сигналы интерфейса являются входными для микроконтроллерного устройства, подключенного к ПК?

  2. Опишите временные диаграммы цикла передачи по интерфейсу Centronics.