Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB6_W95.DOC
Скачиваний:
17
Добавлен:
16.04.2013
Размер:
167.42 Кб
Скачать

6.2. Практическая часть.

6.2.1. Работа с интерфейсом sci.

Последовательный интерфейс связи (SCI) использует две линии порта D (PD0 для получения данных и PD1 для передачи), а также ряд регистров (см. теоретическую часть). Каждая из плат имитатора внешних устройств содержит последовательный интерфейс SCI, выполненный в различных модификациях (токовая петля, RS-232C, RS-423A, RS-422A, RS-485). При выполнении данной лабораторной работы необходимо осуществить соединение между двумя одноименными разъемами коммутируемых рабочих мест, причем это касается модификаций интерфейса: токовая петля, RS-232C, RS-423A, RS-422A. Соединение посредством интерфейса RS-485, предназначенного для многоточечного соединения устройств, должно выполняться иначе и в данной лабораторной работе не рассматривается.

Рассмотрим работу SCI на приведенном ниже примере, состоящем из двух программ. Программа 1 предназначена для передачи данных, а программа 2 - для приема. Для обеспечения связи эти программы должны функционировать на разных машинах.

Программа 1:

200 LDA #$30 Конфигурируем SCI на нужную

STA $D скорость (9600 бод);

LDA #$0 8 битные

STA $E данные;

LDA #$8 настраиваем

STA $F на передачу.

LDA $10 Сбрасываем флаги.

LDA $0 Передаем значение с переключателей

STA $11 по сети.

212 BRA 212 Организуем бесконечный цикл.

Программа 2:

200 LDA #$30 Конфигурируем SCI на нужную

STA $D скорость (9600 бод);

LDA #$0 8 битные

STA $E данные;

LDA #$4 настраиваем

STA $F на прием.

LDA $10 Сбрасываем флаги.

20E BRCLR #5,*$10,$20E Ждем окончания приема.

LDA $11 Загружаем полученные данные в регистр A.

213 BRA $213 Организуем бесконечный цикл.

Программа 1 передает считанный с переключателей байт по последовательному каналу. При этом ОМ-получатель должен выполнять программу 2.

Поставьте точки останова по адресам $212 в программе 1 и $213 в программе 2. Запустите сначала программу 2, затем программу 1 и убедитесь в их правильной совместной работе (в регистрах A обеих ОЭВМ должно оказаться передаваемое число).

Следующий пример - передача информации с распознаванием предназначенности информации тому или иному устройству (с дешифрацией адреса).

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

Получение информации ведомым от ведущего осуществляется по инициативе ведущего следующим образом:

-ведущий посылает в линию номер устройства, которому он хочет передать информацию;

-эта (командная) посылка отличается от остальных (информационных) каким-либо признаком (в данном случае установленным в 1 девятым битом) и должна быть принята ведомым устройством, которое сравнивает полученный номер со своим и, в случае совпадения, производит прием информации с линии.

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

Программа 1 (передатчик):

200 RSP Устанавливаем SP в $FF.

LDA #$2 Конфигурируем порт D

STA $7 (D1 на вывод, остальные линии на ввод).

LDA #$30 Устанавливаем скорость

STA $D передачи данных 9600 бод.

LDA #$50 Устанавливаем длину посылки

9 бит ....

STA $E .... и старший передаваемый бит в 1.

LDA #$8 Разрешаем передачу

STA $F данных.

LDA #$2 Загружаем идентификатор устройства.

213 BRCLR #7,*$10,$213 Ждем установления режима передачи данных (флаг TDRE).

STA $11 Посылаем идентификатор

по сети.

LDА #$10 Задаем количество пакетов равным $10.

21А BRCLR #7,*$10,$21А Ждем окончания передачи очередного пакета (флаг TDRE).

STА $11 Посылаем следующий пакет.

DECА Декрементируем счетчик.

BNE $21А Возврат на передачу пакета, если переданы не все данные.

222 BRA 222 Завершаем программу.

Программа 2 (приемник):

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

200 RSP Устанавливаем SP в $FF.

LDA #$2 Конфигурируем порт D

STA $7 (D1 на вывод, остальные линии на ввод).

LDA #$FF Переключаем порт В

STA $5 на вывод данных.

LDA #$80 Сигнализируем светодиодом

STA $1 о начале работы.

LDA #$30 Устанавливаем скорость

STA $D приема данных 9600 бод.

LDA #$18 Выбираем длину посылки 9 бит и метод

STA $E активизации приемника по единичному биту.

LDA #$26 Разрешаем прерывания по приему

STA $F данных и включаем режим ожидания.

LDA #$10 Устанавливаем счетчик принимаемых

STA $70 пакетов равным $10.

CLR $71 Очищаем вспомогательный флаг.

CLI Разрешаем прерывания.

220 BRA $220 Ждем начала работы приемника.

Подпрограмма обработки прерывания:

800 LDA $10 Сбрасываем флаги

LDA $11 и загружаем полученное значение в регистр А.

LDX $71 Если вспомогательный флаг установлен,

BNE $816 то переход на обработку полученного пакета,

CMP #$2 иначе сравниваем полученный идентификатор с

BEQ $811 установленным для ведомого устройства и в случае совпадения переходим на $811.

LDA #$26 Если идентификатор ошибочен,

STA $F то устанавливаем режим ожидания

810 RTI и возвращаемся из подпрограммы.

811 COM $1 Сигнализируем о получении верного идентификатора,

COM $71 устанавливаем вспомогательный флаг

815 RTI и возвращаемся из подпрограммы.

816 LDX $70 Сохраняем полученный пакет

STA $4F,X по нужному адресу.

DEC $70 Декрементируем счетчик неполученных пакетов.

BEQ $840 Если получен последний пакет, то завершаем

81E RTI программу, иначе возвращаемся из подпрограммы.

Пояснения к программам:

· в программе 2 вспомогательный флаг (ячейка ОЗУ $71) используется подпрограммой обработки прерывания: если флаг сброшен, то принят идентификатор, если флаг установлен, то принят очередной 9-битный пакет;

· если принят неверный идентификатор, то приемник опять переключается в режим ожидания;

· получаемые по каналу данные сохраняются по адресам $50..$5F, что дает возможность проверить отсутствие ошибок при передаче.

Запишите в ячейки $1FF6, $1FF7 адрес подпрограммы обработки прерывания ($800), поставьте точки останова по адресам $222 в программе 1 и $840 в программе 2. Запустите сначала приемник, затем передатчик. После того, как программы закончат свою работу, убедитесь в правильности передачи данных, просмотрев содержимое памяти по адресам $50..$5F.

Соседние файлы в предмете Отладка микроконтроллеров ЭВМ