Скачиваний:
19
Добавлен:
01.05.2014
Размер:
383.49 Кб
Скачать

Прием символа

Оценка бита 3 в регистре состояния определяет, получен ли символ. Если этот бит есть 1, то символ был получен. Биты 0..2 регистра состояния указывают, есть ли в принятой посылке ошибка (ошибки четности, превышения темпа или кадровой синхронизации). Если установлен один из указанных ошибочных битов, полученный символ содержит ошибку. Однако необходимо прочитать регистр данных в случае ошибки, поскольку это может помочь при определении природы возникновения ошибки.

LDAB STATUS регистр состояния

BITB # % 00001000 символ получен?

BEQ NO ветвление, если не получен

LDAA DATA регистр данных

BITB # % 00000111 ошибка передачи?

BNE FAIL переход на процедуру оценки ошибки передачи полученного символа

FAIL : процедура оценки ошибки передачи полученного символа

Задание на выполнение лабораторной работы

Соедините два ПЛК шлейфом асинхронного последовательного канала. Составьте две программы для осуществления односторонней передачи данных между ними. ПЛК - передатчик, получая данные через цифровые входы, упаковывает их в байты и пересылает их ПЛК - приемнику, который осуществляет распаковку полученной информации и передает ее на цифровые выходы. Обратите внимание на поддерживаемый интерфейс (RS 232 или TTY) и возможность аппаратного квитирования.

Содержание отчета

  1. Цель работы.

  2. Текст программы с комментариями.

  3. Выводы по работе.

Лабораторная работа №5

Цель работы

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

Справочные данные

Таблицы данных. Редактор TAB

Таблицы данных — это записи данных, к которым может иметь доступ любая часть прикладной программы. Ввод данных производится с помощью удобного в работе редактора таблиц данных. В одной таблице (и даже в пределах одной строки таблицы) можно комбинировать различные форматы чисел: десятичный (специальная характеристика перед числом отсутствует); шестнадцатеричный ($); двоичный (%); ASCI-строка должна быть заключена в кавычки.

Между отдельными величинами необходимо ставить запятые.

Таблицы являются компонентами прикладной программы и хранятся в защищенном от сбоев электропитания ЗУ прикладной программы.

Вызов редактора TAB: [F5 TAB] <TNAME> [Enter].

С определением имени:

На экран выводится существующая или вновь определенная таблица данных.

Без определения имени:

Вызывается последняя обработанная TAB или выдается сообщение об ошибке, если имя по умолчанию не определено.

Команды для работы с индексным регистром

Х-16 битовый регистр, используется в качестве указателя на любую ячейку памяти.

LDX#

MX

Загрузить константу в Х, т.е. поместить указатель на определенной позиции в памяти. Иначе, загрузить Х адресом М.

LDX

(M:M+1)X

Загрузить содержимое памяти в Х

LDXL

MX

Загрузить в Х метку с адресом M

STX

X(M:M+1)

Сохранить содержимое Х в памяти

XGDX

DX

Обмен данными между аккумулятором D и индексным регистром Х

ABX

B+XX

В Х записывается значение Х, увеличенное на величину В

INX

X+1X

Увеличение Х на 1

DEX

X-1X

Уменьшение Х на 1

CPX#

X-M

Сравнение X с адресом ячейки памяти

CPX

X-(M:M+1)

Сравнение X с содержимым ячейки памяти

Доступ к данным возможен с использованием индексной адресации:

Например:

LDX# R 0150 установить индексный регистр на ячейку памяти R0150

LDAA X 000 загрузить содержимое R0150 в А

LDAA X 002 загрузить содержимое R0152 в А

Значения 000 и 002, стоящие после предварительного выбора адреса X, – это константы смещения, которые добавляются к индексному регистру перед выполнением команды. Максимальное смещение равно 255.

Применение индексного регистра дает большое преимущество при обработке расположенных последовательно адресных областей.

Вызов таблицы осуществляется как вызов процедуры:

Например:

JSR T NAME Инициализировать таблицу с именем NAME,

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

Если число элементов таблицы не превышает 240, то размером таблицы данных загружается аккумулятор В, в противном случае - аккумулятор D.

Команду ABX удобно использовать для выборочного считывания определенного символа из таблицы данных.

Например, необходимо прочитать 5-й символ из таблицы и записать его в R100:

JSR TEXT Индексный регистр установится на начало таблицы

(аккумулятор В будет загружен числом элементов таблицы)

LDAB # 004 Загрузка В константой 4

ABX Добавить В к Х и сохранить в Х

LDAA X 000 Загрузить в А 5-й элемент

STAA R 100 Сохранить символ в R100

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

Обнаружение положительного фронта:

LDAA N I xxx Загрузить в аккумулятор сигнал

PRS F 010 Установить флаг 010, если младший бит А=1

EORA F 010 Если был фронт, то А=1

RST F 010 Сбросить флаг 010, если младший бит А=1

Обнаружение отрицательного фронта:

LDAA I xxx Загрузить в аккумулятор сигнал

PRS F 010 Установить флаг 010, если младший бит А=1

EORA F 010 Если был фронт, то А=1

RST F 010 Сбросить флаг 010, если младший бит А=1

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

Задание на выполнение лабораторной работы

Создать в редакторе TAB таблицу, которая моделирует переходный процесс произвольно взятого объекта (взять примерно 30 точек). Каждому следующему элементу таблицы соответствует значение на выходе моделируемого объекта.

По оси Х отложено время, по другой оси – значение выхода объекта.

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

Содержание отчета

  1. Цель работы.

  2. Рисунок переходного процесса.

  3. Таблица данных.

  4. Объяснить принцип обнаружения фронтов.

  5. Текст программы с комментариями.

  6. Выводы по работе.