Разработка контроллера управления последовательным портом
Последовательный связной интерфейс, скорость передачи данных. Интерфейс и его сигналы. Программная эмуляция SCI. Оборудование, особенности микросхемы. Структурная схема контроллера управления последовательным портом. Описание программного обеспечения.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 23.06.2012 |
Размер файла | 670,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ФАКУЛЬТЕТ ПРИКЛАДНОЙ МАТЕМАТИКИ И ТЕЛЕКОММУНИКАЦИЙ
КАФЕДРА РАДИОЭЛЕКТРОННЫХ СРЕДСТВ
Курсовая работа
Разработка контроллера управления последовательным портом
Разработал студент
Панфилова К.В.
Введение
По определению интерфейс представляет собой совокупность унифицированных аппаратных, программных, конструктивных средств, необходимых для реализации алгоритмов взаимодействия различных функциональных блоков микропроцессорных систем, а также функциональных блоков, входящих в состав автоматизированных систем управления.
Стандартизации в интерфейсе подлежат состав и тип линий связи, электрические и временные параметры сигналов, форматы передаваемой информации, команды и состояния, алгоритмы функционирования, конструктивное исполнение соединений.
По режиму обмена информацией интерфейсы подразделяют на симплексные, полудуплексные, дуплексные и мультиплексные. В интерфейсах с симплексным режимом обмена информации возможна лишь однонаправленная передача информации от одного абонента к другому. В интерфейсах с полудуплексным режимом обмена в произвольный момент времени может производиться либо только прием, либо только передача данных между двумя абонентами. В интерфейсах с дуплексным режимом обмена в любой момент времени может производиться одновременный прием и передача данных между двумя абонентами. В интерфейсах с мультиплексным режимом обмена в каждый момент времени может осуществляться прием или передача данных между парой абонентов сети.
По способу передачи информации интерфейсы подразделяются на параллельные и последовательные. В параллельном интерфейсе все биты передаваемого слова (обычно байта) выставляются и передаются по соответствующим параллельно идущим проводам одновременно. В последовательном интерфейсе биты передаются друг за другом, обычно по одной (возможно, и двухпроводной) линии. Последовательная передача данных может осуществляться в синхронном и асинхронном режимах.
Среди различных типов встроенных контроллеров последовательного обмена, которые входят в состав микроконтроллеров (МК), сложился стандарт «де-факто» - модуль UART (Universal Asynchronous Receiver and Transmitter). В переводе с английского UART - универсальный асинхронный приемопередатчик.
Не все производители МК используют термин UART для обозначения типа модуля контроллера последовательного обмена. Так, в МК фирмы Motorola модуль асинхронной приемопередачи, который поддерживает те же режимы асинхронного обмена, что и UART, принято называть SCI (Serial Communication Interface).
1. Теоретические аспекты последовательной передачи данных
1.1 Последовательный связной интерфейс
Последовательный связной интерфейс (SCI) является подсистемой последовательного ввода / вывода, доступной во многих микроконтроллерах производства фирмы Motorola. Контроллер последовательного асинхронного интерфейса SCI по функциональному назначению можно отнести к модулям типа UART.
Модуль SCI обеспечивает полнодуплексный асинхронный режим обмена, при котором прием и передача данных могут происходить одновременно.
Линии приема и передачи физически разделены. Модуль состоит из двух независимых подсистем: приемника (Transmitter) и передатчика (Receiver). Каждое из устройств имеет свой бит разрешения работы: TE и RE соответственно. Основу каждой подсистемы составляет сдвиговый регистр и параллельный регистр буфера данных.
Модуль SCI допускает различные скорости приема и передачи данных. Скорость передачи данных определяется генератором модуля SCI. Этот генератор состоит из общего для приемника и передатчика предварительного делителя частоты тактирования межмодульных магистралей и двух независимых делителей частоты приемника и передатчика. Вследствие этого, скорости передачи и приема данных могут различаться. Скорость передачи данных следует определить по формуле:
, где
NP-коэффициент деления предварительного делителя, NP=1,3,4,13;
NT-коэффициент деления делителя передатчика, NT=1,2,4,8,16,32,64,128.
Значения коэффициентов NP и NT определяются установкой соответствующих разрядов в регистре скорости передачи BAUD.
Обеспечивает два стандартных кадра обмена в асинхронном режиме: 10-битный и 11-битный. На рис. 1.1 представлена временная диаграмма 10-битного кадра: 8 бит данных передаются вслед за стартовым битом, начиная с младшего D0; завершает передачу стоповый бит. Логические уровни для передачи стартового бита (низкий) и стопового бита (высокий) формируются аппаратными средствами передатчика. Приемник распознает начало передачи нового кадра по изменению уровня сигнала на входе RXD с высокого, который может длиться сколь угодно долго, на низкий.
Рисунок 1.1 - Временная диаграмма 10-битного кадра
Передаваемая в кадре полезная информация длиною в один байт кодируется с использованием без возвращения к нулю (БВН) кода.
Рисунок 1.2 - Пример представления двоичной последовательности в коде БВН
Код без возвращения к нулю отображает последовательность двоичных битов последовательностью уровней напряжения, постоянных на интервале каждого передаваемого двоичного разряда (рис. 1.2).
Однако может быть использовано решение, при котором информация кодируется семью битам D6…D0, а старший бит D7 используется для контроля правильности приема. С этой целью передающий МК кодирует бит паритета D7 из условия четного (контроль на четность) и нечетного (контроль на нечетность) числа единиц в передаваемом слове, а принимающий МК производит проверку принятого кода. Следует заметить, что не все модули типа UART 8-разрядных МК имеют опцию автоматического формирования бита паритета.
Временная диаграмма 11-битного кадра асинхронного обмена представлена на рис. 1.3: 9 бит данных обрамляются одним стартовым и одним стоповым битом. Старший бит D8 помещается или передается в один из регистров управления модулем. Рассматриваемый формат представления кадра обычно используется для организации протокола обмена верхнего уровня в локальных сетях на основе нескольких МК.
Рисунок 1.3 - Временная диаграмма 11-битного кадра
Аппаратные средства приемника диагностируют три типа ошибок: наличие шума на линии RXD, нарушение формата принимаемого кадра, попытка записи очередного принятого байта в буферный регистр данных приемника, в то время как предыдущие данные из буферного регистра еще не считаны.
Для повышения достоверности приема каждого разряда аппаратные средства модуля SCI считывают уровень сигнала на входе RXD три раза в течение интервала присутствия бита. Значение бита, которое будет занесено в младший разряд сдвигового регистра приемника, определяется мажоритарным способом: по принципу два из трех. Модули SCI сообщают пользователю о наличии шума на линии приема: если не все три значения при приеме любого из битов кадра совпали, то устанавливается флаг NE (Noise Error).
В процессе выполнения подпрограммы обработки прерывания принятый байт данных считывается из регистра данных приемника в память МК. Сразу после копирования байта данных из сдвигового регистра в буфер приемник может начать формирование следующего байта данных, отдельные биты которого продолжают поступать на вход RXD. Однако необходим, чтобы центральный процессор МК успел считать данные из буферного регистра до завершения формирования в сдвиговом регистре следующего принятого байта. Если этого не произошло, то возникает аварийная ситуация. В модулях SCI фирмы Motorola запись следующего байта в буферный регистр данных не производится и устанавливается флаг ошибки OR (Overrun). Этот флаг может генерировать запрос на прерывание от приемника. Стоповому биту соответствует уровень логической единицы. Если оказалось, что на месте стопового бита обнаружен сигнал логического нуля, то произошла ошибка кадра. Наиболее часто ошибки кадра появляются тогда, когда приемник ошибочно синхронизирован с битом 0, который в действительности не является стартовым битом.
1.2 Интерфейс RS-232C
Модули типа UART в асинхронном режиме работы позволяют реализовать протокол обмена для интерфейсов RS-232C, RS-422A, RS-485. Последовательный интерфейс передачи данных RS-232C остается распространенным интерфейсом периферийного оборудования компьютеров. Но на смену ему все активнее внедряется интерфейс USB.
Аббревиатура RS-232C буквально означает: Рекомендуемый Стандарт 232 версия С (Recommended Standard 232 revision C). Он определен стандартом Ассоциации электронной промышленности (ЕIА) и подразумевает наличие оборудования двух видов: терминального (DTE- Data Terminal Equipment) и связного (DCE- Data Communication Equipment). В качестве терминального оборудования может быть использован персональный компьютер, способный производить прием или передачу данных по последовательному интерфейсу. Под связным оборудованием понимаются устройства, которые могут упростить последовательную передачу данных совместно с терминальным оборудованием. Наглядным примером связного оборудования служит модем. Также интерфейс используется в самых различных устройствах, в том числе для обеспечения коммуникаций между компьютером и встраиваемой МП-системой управления.
Обмен данными производится по двум линиям: линия RXD используется для приема данных, линия TXD -- для передачи данных. Линия передачи одного устройства соединяется с линией приема другого, и наоборот (полный дуплекс). Для управления соединенными устройствами используется программное подтверждение (введение в поток передаваемых данных соответствующих управляющих символов). Возможна организация аппаратного подтверждения путем организации дополнительных линий RS-232 для обеспечения функций определения статуса и управления. Максимальная скорость передачи данных по линиям шины RS-232C составляет 115 кбит/с. Максимальная протяженность линии связи, по которым может быть осуществлена передача данных, составляет 15 м.
Большинство систем используют асинхронный режим передачи данных интерфейса RS-232, несмотря на то, что его спецификация предусматривает также синхронный режим. В асинхронном режиме каждый пакет содержит один символ кода ASCII или один байт произвольно закодированной информации. ASCII (American Standard Code for Information Interchange) -- американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов. ASCII представляет собой кодировку для представления десятичных цифр, латинского и национального алфавитов, знаков препинания и управляющих символов. Изначально разработанная как 7-битная, с широким распространением 8-битного байта ASCII стала восприниматься как половина 8-битной. В компьютерах обычно используют расширения ASCII с задействованным 8-м битом и второй половиной кодовой таблицы (например КОИ-8). КОИ-8 (код обмена информацией, 8 битов), KOI8 -- восьмибитовая ASCII-совместимая кодовая страница, разработанная для кодирования букв кириллических алфавитов.
Сигналы интерфейса RS-232C делят на следующие классы:
Последовательные данные (например, TXD, RXD). Интерфейс RS-232C обеспечивает два независимых последовательных канала данных: первичный (главный) и вторичный (вспомогательный). Оба канала могут работать в дуплексном режиме, т.е. одновременно осуществлять передачу и прием информации.
Управляющие сигналы квитирования (например, RTS, CTS). Сигналы квитирования -- это средство, с помощью которого обмен сигналами позволяет DTE начать диалог с DCE до фактических передачи или приема данных по последовательным линиям связи.
Сигналы синхронизации (например, ТС, RC). В синхронном режиме (в отличие от более распространенного асинхронного) между устройствами необходимо передавать сигналы синхронизации, которые осуществляют тактирование принимаемого сигнала в целях его декодирования.
На практике вспомогательный канал RS-232C применяется редко, и в асинхронном режиме из 25 сигнальных линий интерфейса обычно используются только девять, которые приведены в Табл. 1.
Таблица 1.
Номер контакта |
Сигнал |
Выполняемая функция |
|
1 |
FG |
Основная или защитная земля, подключаемая к стойке или шасси оборудования |
|
2 |
TxD |
Последовательные данные, передаваемые от DTE к DCE |
|
3 |
RxD |
Последовательные данные, принимаемые от DTE к DCE |
|
4 |
RTS |
Запрос передачи. Активным уровнем этого сигнала DTE указывает, что оно хочет послать данные в DCE |
|
5 |
CTS |
Сброс передачи. Активным уровнем этого сигнала DCE сообщает, что связь установлена |
|
6 |
DSR |
Готовность модема. Активным уровнем этого сигнала DCE сообщает, что связь установлена |
|
7 |
SG |
Возвратный тракт общего сигнала (сигнальная земля) |
|
8 |
DCD |
Обнаружение несущей данных. Активным уровнем этого сигнала DTE показывает, что оно работает и DCE может подключиться к каналу связи |
|
9 |
- |
Не задействован |
2. Программная эмуляция SCI
Модуль SCI обрабатывает все команды передачи и приема и тем самым освобождает центральный процессор (CPU) от выполнения этих функций. Модуль SCI является программируемым для различных скоростей передачи. Приемник может обнаружить автоматически ошибки формата, такие как кадрирование, шум и переполнение.
Наличие в составе 8-разрядного МК модуля контроллера последовательного ввода/вывода стало настолько обычным явлением, что лишь самые простые, маловыводные МК в корпусах DIP-16 и DIP-20 не имеют портов последовательного обмена, такие как микроконтроллеров MC68HC705J1A. Для выполнения асинхронной последовательной связи используется программная эмуляция SCI. В этом случае процессор будет контролировать контакты портов ввода / вывода, выполняя те же функции, что и линии приема данных (RXD) и передачи данных (TXD) истинного аппаратно-управляемого SCI.
Требования для применения программной эмуляции SCI :
Оптимизация скорости для максимальной скорости передачи;
Минимальный размер кода;
Простота настройки для различных скоростей передачи;
Возможность обнаружения шума и ошибок кадра при получении.
Поскольку процессор не так эффективен, как специализированные аппаратные SCI, программная эмуляция имеет ограничения:
Очень высокая скорость передачи данных не является достижимой;
Программная эмуляция SCI потребляет память и пропускную способность ЦП;
Гибкость и функциональность МК снижаются.
Если перечисленные ограничения являются существенными для приложения, то использование микроконтроллера с модулем SCI было бы более уместно. Однако, многие приложения не требуется производительности и гибкости SCI, и в тех случаях, программная эмуляция является экономически выгодным решением.
При программной эмуляции SCI не возможна реализация полнодуплексного режима. Это программное решение работает только в полудуплексном режиме.
3. Описание используемого оборудования
3.1 Микроконтроллер MC68HC705J1A
MC68HC705J1A относится к семейству МК HC05 производства фирмы Motorola. Год рождения семейства - 1980-й. Количество различных модификаций МК с процессорным ядром HC05 составляет около 180. МК семейства HC05 отличаются очень точной ориентацией на различные сектора рынка массового потребления.
МК семейства HC05 объединены в серии. Каждая серия имеет буквальное обозначение, общее число серий равно 15. MC68HC705J1A относится к серии J. Данная серия включает в себя недорогие 20-выводные МК, содержащие ПЗУ, многофункциональный таймер с функцией прерывания реального времени.
ЦП семейства HC05 имеют CISC-архитектуру с развитой системой команд, на основе которой удобно программировать даже на ассемблере (делается мало ошибок).
Из периферийных устройств HC705J1AT содержит многофункциональный таймер (MFT), сторожевой таймер и 2 двунаправленных параллельных порта. Таймер MFT содержит 15 разрядов и обеспечивает формирование запросов прерывания процессора с заданной периодичностью. Структурная схема микроконтроллера MC68HC705J1A приведена на рис. 3.1.
Он имеет общее количество памяти равное 1240 байтов в стираемом программируемом постоянном запоминающем устройстве (ПЗУ), а также 64 Байт в ОЗУ. MC68HC705J1A состоит из 20 выводов, 14 из которых «ножки» ввода - вывода.
Рисунок 3.1. Структурная схема МК MC68HC705J1A
Назначение выводов контроллера HС705J1AP приведено в таблице.
Таблица 2 - Описание выводов микроконтроллера MC68HC705J1AP
Вывод |
Название |
Назначение |
|
9 |
VDD |
Напряжение питания |
|
10 |
VSS |
Напряжение 0В |
|
20 |
Сброс |
||
19 |
Управление запросом на аппаратное прерывание |
||
3-8 |
PB5-PB0 |
Шестибитный параллельный порт |
|
11-18 |
PA7-PA0 |
Восьмибитный параллельный порт ввода-вывода. |
|
1, 2 |
OSC1, OSC2 |
Р32 - защита от перегрузок по току |
3.2 Микросхема МС145407
MC145407 кремниевая, КМОП - микросхема (КМОП - комплементарная логика на транзисторах металл-оксид-полупроводник). В технологии КМОП используются полевые транзисторы с изолированным затвором с каналами разной проводимости. Отличительной особенностью схем КМОП по сравнению с биполярными технологиями является очень малое энергопотребление в статическом режиме (в большинстве случаев можно считать, что энергия потребляется только во время переключения состояний).
MC145407 - интерфейсный приемопередатчик последовательных данных стандартов EIA/TIA-232E и CCITT V.28 с напряжением питания +5В. Микросхема содержит 3 передатчика и 3 приемника последовательных данных стандарта RS-232.
При разработке интерфейсных микросхем основными критериями являлось минимальное энергопотребление и максимальная экономия места на печатной плате. Поэтому практически сразу же пришлось отказаться от стандартных микросхем приемопередатчиков RS-232, требующих использования трех различных источников питания +5 В и ±12 В.
На первом этапе для питания микросхем стал использоваться один источник питания +5 В. А поскольку для соответствия стандарту RS-232 необходимо обеспечить размах выходного сигнала порядка ±7 В, то в состав микросхемы вошли удвоитель напряжения и инвертор на переключаемых конденсаторах. Теперь для питания микросхемы стало достаточно подвести только +5 В и установить 4 конденсатора номиналом по 1 мкФ.
MC145407 обеспечивает высокую производительность и низкое энергопотребление. На рисунках 3.2, 3.3 и 3.4 изображены схемы основных элементов MC145407. На рисунке 3.5. представлено назначение контактов микросхемы.
Рисунок 3.2. Схема преобразования напряжения питания
Рисунок 3.3. Схема приемника (*Схема защиты)
Рисунок 3.4. Схема передатчика
Рисунок 3.5. Назначение контактов микросхемы MC145407
3.3 Микросхема MC34064
Микросхема MC34064 представляет собой детектор понижения напряжения ниже допустимого уровня. Микросхема предназначена для использования в микропроцессорных системах с 5-ти вольтовым питанием для формирования сигнала Reset во всех случаях, когда напряжение питания снижается до опасного, с точки зрения безошибочной работы системы уровня. Области применения MC34064:
Запоминающие устройства (ОЗУ) с аварийным батарейным питанием;
Средства защиты от неправильного функционирования микропроцессорной системы при включениях/выключениях питания;
Средства защиты от неправильного функционирования микропроцессорной системы в результате случайных перебоев подачи питания.
Как компонент средств установки в исходное состояние микропроцессорного оборудования: персональных компьютеров, принтеров, видеомагнитофонов, автомобильных контролеров и др.
На рисунке 3.6 представлена блок-схема MC34064. Микросхема имеет 3 вывода: 1 - сброс; 2 - вход (подключается к источнику питания); 3 - земля.
Рисунок 3.6. Блок-схема MC34064
Особенности микросхемы:
Компаратор с температурно-компенсированным порогом и гистерезисом, для предотвращения неустойчивости в пороговой зоне;
Порог срабатывания компаратора 4.6+/-0.1В гарантируется в полном рабочем диапазоне температур;
Напряжение гистерезиса 20 мВ;
Нагрузочная способность выхода Reset на втекающий ток не менее 10 мА;
Гарантия правильной работы сигнала Reset при входном напряжении начиная с 1 В;
Внутренний защитный диод для разряда конденсатора задержки;
Низкий ток потребления в режиме ожидания.
4. Анализ работы устройства
4.1 Структурная схема устройства
Структурная схема контроллера управления последовательным портом приведена на рисунке 4.1. Она состоит из 5 основных блоков.
Рисунок 4.1. Структурная схема контроллера
Центральным элементом схемы управления последовательным портом является однократно программируемый контроллер MC68HC705J1A (Motorola). Напрямую контроллер подключать к com-порту, конечно же, нельзя. Для сопряжения используют микросхему MC145407, представляющую собой интерфейсный приемопередатчик последовательных данных стандартов EIA/TIA-232E и CCITT V.28. Сигнальные линии соединяются крест-накрест, то есть RxD МК на TxD ИС, а RxD ИС на TxD МК. Шлейф (Flat Ribbon Cable) соединяет MC145407 с последовательным портом.
Детектор понижения напряжения MC34064 был использован, чтобы показать самую надежную схему сброса. ИС формирует сигнал Reset при понижении напряжения питания до 4.5-4.7В. Это обеспечивает защиту от медленного линейного изменения питания. Когда напряжение питание опускается ниже этого уровня, CPU может начать выполнять некоторые инструкции неправильно. В результате могут происходить не запланированные процессы во внутренней памяти и на линиях управления. Это может привести к повреждению информации в регистрах CPU, I/O регистрах и в памяти данных. Детектор обеспечивает защиту от провалов напряжения ("Brown-Outs" - когда напряжение питания ниже допустимого уровня, или "Black-Outs" - когда на какое-то время оно полностью пропадает).
Кварцевый генератор с частотой 4 МГц тактирует микроконтроллер.
Если присутствует шум или произошла ошибка кадра во время приема символа, горят соответствующие светодиоды (LED1 и LED2), сигнализируя об ошибке.
4.2 Описание программного обеспечения
Блок-схема управления приведена в приложении В, а фактический ассемблерный код - в приложении Г.
Программное обеспечение SCI состоит из двух основных подпрограмм, которые вызываются главной программой. Процедура приема get_char получает один байт данных по линии приема данных (RXD) и помещает его в тип char. Процедура get_char вызывает подпрограмму get_bit, которая фиксирует три значения состояния RXD, из которых получают бит данных и информацию о наличии шума. При выходе из get_char, если не все три значения при приеме любого из битов кадра совпали, то устанавливается флаг наличия шума NE=1; в противном случае он будет обнулен. Если оказалось, что на месте стопового бита обнаружен сигнал логического нуля, то произошла ошибка кадра (FE=1). Если шум или кадр ошибки присутствуют во время приема символа, то загораются соответствующие светодиоды, сигнализируя об ошибке.
Процедура передачи put_char передает последовательно содержание char, используя линию передачи данных (TXD).
Обе процедуры get_char и put_char вызывают delay_13a, подпрограмму, которая производит задержку 13 * ACC + 12 циклов ЦП, где ACC - это значение в накапливающем сумматоре во время вызова подпрограммы delay_13a.
Скорость передачи данных как для приемника, так и для передатчика выбирается путем изменения BAUD_SEL на 4, 8, 16, 32, 64 или 128, который совместно с кварцевым генератором с частотой 4 МГц дает скорость 19200, 9600, 4800, 2400 , 1200 и 600 бод соответственно. Скорость передачи данных для приемника и передатчика будет та же самая. Приложение D определяет допуск приемника и точность передатчика для каждой скорости.
интерфейс микросхема контроллер порт
Заключение
В ходе курсовой работы был детально изучен контроллер управления последовательным портом. Основным элементом, координирующим работу всех узлов схемы, является микроконтроллер МС68HC705J1A. Данный МК не имеет последовательных портов.
Поэтому в устройстве применяется программная эмуляция последовательной передачи данных SCI через выводы параллельных двунаправленных портов. Этот вариант схемы довольно дешёв, поскольку используется самый простой МК фирмы Motorola. Эта особенность позволяет использовать её повсеместно. Программная эмуляция интерфейса SCI предлагают разработчику приложений альтернативу использования аппаратных SCI.
Библиографический список
1. Ремизевич Т.В. Микроконтроллеры для встраиваемых приложений: от общих подходов - к семействам НС05 и НС08 фирмы Motorola/под ред. Кирюхина И.С. ДОДЭКА, 2000. - 272 с.
2. Шагурин И.И. “Микропроцессоры и микроконтроллеры фирмы Motorola”. Справочное пособие. М.: Радио и связь. 1998. 560с.
Приложение А
Приложение Б
Обозначение |
Наименование |
кол |
|
Конденсатор |
|||
С1,С2 |
К50-16 100 Мкф +\- 10% |
2 |
|
Транзисторы |
|||
VT2,VT3 |
КТ315Г |
2 |
|
VT1 |
КТ361Г |
3 |
|
Микросхемы |
|||
U1, |
PIC16F84 |
1 |
|
U1, |
74247 |
1 |
|
U1, |
7401 |
1 |
|
Диод |
|||
VD1, VD2, VD3, VD4 |
КД522 |
4 |
Приложение В
На рисунках В1, В2, В3,В4 представлены блок-схемы основной программы Main, подпрограммы Put_Char , подпрограммы GET_CHAR и подпрограммы GET_BIT соответственно.
Рисунок В1. Блок-схема программы Main
Рисунок В2 - Блок схема программы PUT_CHAR
На рисунке B3 - Блок схема подпрограмма GET_CHAR
На рисунке В4 - схема подпрограммы GET_BIT
Приложение Г
Main Routine SCI_01 - SCI Software Transmit/Receive Routines *
* *
*****************************************************************************
* *
* File Name: SCI_01.RTN Copyright (c) Motorola 1995 *
* *
* Full Functional Description of Routine Design: *
* Program flow: *
* Reset: Call init to initialize port pins *
* Call get_char to receive a byte of data *
* Light frame error LED if frame error occurred *
* Light noise LED if frame error occurred *
* Call put_char to transmit the received byte of data *
* Loop back to get_char call (endless loop) *
* *
*****************************************************************************
* *
* Part Specific Framework Includes Section *
* *
*****************************************************************************
#INCLUDE 'H705J1A.FRK' ; Include the equates for the
; HC705J1A so all labels can
; be found.
MOR Bytes Definitions for the Main Routine *
* *
*****************************************************************************
org MOR
fcb $20
******************************************************************************
* *
* Equates and RAM Storage *
* *
******************************************************************************
*** I/O Pin Equates:
serial_port equ $01 ; port used for serial port
; pins
status_port equ $00 ; port used for driving LED's.
noise equ 4 ; pin # for noise LED
frame equ 5 ; pin # for frame LED
rxd equ 0 ; pin # for receive data pin
txd equ 1 ; pin # for transmit data pin
*** Program Constant Equates: ; Baud rate select table:
BAUD_SEL equ $08 ; BAUD_SEL 4MHz osc 2MHz osc
; $04 19.2k 9600
; $08 9600 4800
; $10 4800 2400
; $20 2400 1200
; $40 1200 600
; $80 600 300
*** RAM variable allocation:
org RAM
char rmb 1 ; data register for sci
count rmb 1 ; temp storage variable* main - example program that continually echoes back received characters. *
* *
* input cond. - reset *
* output cond. - none (infinite loop) *
* stack used - 4 bytes *
* variables used - none *
* ROM used - 28 bytes *
*****************************************************************************
org ROM ; start at the top of ROM
main rsp ; reset the stack pointer
jsr init ; initialize port pins
main_loop jsr get_char ; receive one byte of data
; from rxd pin
bcc no_frame_error ; branch if no noise occured
bclr frame,status_port ; turn on frame LED
bra continue ; don't check for noise --
; it's undefined
no_frame_err bset frame,status_port ; turn off frame LED
bhcs noise_error ; branch if noise occured
bset noise,status_port ; turn off noise LED
bra continue ; skip next line of code
yes_noise_err bclr noise,status_port ; turn on noise LED
continue jsr put_char ; transmit the received byte
bra main_loop ; and prepare for next
; reception.
* init - initialize port pins for sci operation and for driving LEDs; *
* called by main *
* *
* input cond. - none *
* output cond. - TXD = output initialize to 1, RXD = input, noise LED = *
* off, frame LED = off. *
* stack used - 0 bytes *
* variables used - none *
* ROM used - 15 bytes *
******************************************************************************
init bset txd,serial_port ; init txd = 1
bset txd,serial_port+4 ; txd = output
bclr rxd,serial_port+4 ; rxd = input
bset noise,status_port ; noise LED = off
bset noise,status_port+4 ; noise = output
bset frame,status_port ; frame LED = off
bset frame,status_port+4 ; frame = output
rts ; exit (init)
******************************************************************************
* get_char - receive one byte of data from RXD pin; called by main *
* *
* input cond. - RXD pin defined as an input pin * output cond. - char contains received data; X,ACC undefined; *
* half carry = 1 (frame occured) or 0 (no frame error); *
* carry = 1 (noise and/or frame error occured) or 0 *
* (no noise). *
* stack used - 2 bytes *
* variables used - char: storage for received data (1 byte) *
* count: temporary storage (1 byte) *
* ROM used - 63 bytes *
get_char lda #8 ;[2] receiving 8 data bits
sta count ;[4] store value into RAM
clrx ;[3] used to store noise data
get_start_bit brclr rxd,serial_port,* ;[5] wait until rxd=1
brset rxd,serial_port,* ;[5] wait for start bit
lda #BAUD_SEL-3 ;[2] prepare for 1/2 bit delay
bsr delay_13a ;[13a+12] execute delay routine
bsr get_bit ;[39] sample start bit
lsra ;[3] noise bit -> carry;
; acc=filtered start bit
bne get_start_bit ;[3] if false start, start over
tsta ;[3] for timing purposes only
tsta ;[3] for timing purposes only
lda #2*(BAUD_SEL-2) ;[2] prepare for 1 bit delay
bsr delay_13a ;[13a+12] execute delay routine
get_data_bits bsr get_bit ;[39] sample data bit
rora ;[3] noise bit -> carry
rorx ;[3] carry -> noise data reg
rora ;[3] filtered data bit -> carry
ror char ;[5] carry -> char
lda #2*(BAUD_SEL-3) ;[2] prepare for 1 bit delay
bsr delay_13a ;[13a+12] execute delay routine
tsta ;[3] for timing purposes only
dec count ;[5] bit received, dec count
bne get_data_bits ;[3] loop if more bits to get
get_stop_bit bsr get_bit ;[39] sample stop bit
lsra ;[3] noise bit -> carry
; acc=filtered stop bit
sta count ;[4] store stop bit in count
bcc yes_noise ;[3] if noise, then branch
txa ;[2] noise data -> acc
eor char ;[3] XOR noise with char,
beq no_noise ;[3] and if result=0,
; then no noise in data
; reception
yes_noise lda #$08 ;[2] set noise bit (half carry)
add #$08 ;[2] by adding $8 to $8
no_noise lda count ;[3] retrieve stop data bit,
coma ;[3] complement it,
lsra ;[3] and shift it into carry
; for frame error bit
rts ;[6] exit (get_char)
*****************************************************************************
******************************************************************************
* get_bit - receive one bit of filtered data and noise info; called by *
* get_char *
* *
* input cond. - RXD pin defined as an input pin *
* output cond. - ACC = 000000dn, where d = filtered data, n = noise info *
* stack used - 0 bytes *
* variables used - none *
* ROM used - 17 bytes *
******************************************************************************
get_bit clra ;[3] used to add sampled bits
brset rxd,serial_port,samp_1 ;[5] sample 1st bit into carry
samp_1 adc #0 ;[3] add it to acc
brset rxd,serial_port,samp_2 ;[5] sample 2nd bit into carry
samp_2 adc #0 ;[3] add it to acc
brset rxd,serial_port,samp_3 ;[5] sample 3rd bit into carry
samp_3 adc #0 ;[3] add it to acc
rts ;[6] exit (get_bit)
* put_char - transmit data byte in char out onto TXD pin; called by main *
* *
* input cond. - TXD pin defined as an output pin and TXD = 1; *
* char contains byte to be tranmitted. *
* output cond. - X,ACC,char = undefined; *
* stack used - 2 bytes *
* variables used - char: storage for transmitted data (1 byte) *
* ROM used - 31 bytes (35 if sending two stop bits) *
*****************************************************************************
put_char ldx #9 ;[2] be sending 8 data bits
clc ;[2] clear carry for start bit
put_data_bits bcc send_0 ;[3] if carry<>0, then
bset txd,serial_port ;[5] send out a 1
bra jmp_bit ;[3] finished sending a 1
send_0 bclr txd,serial_port ;[5] else send a 0
bra jmp_bit ;[3] finished sending a 0
jmp_bit lda #2*(BAUD_SEL-1)-1 ;[2] prepare for a 1 bit delay
bsr delay_13a ;[13a+12] execute delay routine
tsta ;[3] for timing purposes only
ror char ;[5] get next data bit to send
decx ;[3] one bit sent, so dec count
bne put_data_bits ;[3] loop if more bits to send
put_stop_bit nop ;[2] for timing purposes only
bset txd,serial_port ;[5] send out a one
lda #2*(BAUD_SEL-1) ;[2] prepare for a 1 bit delay
bsr delay_13a ;[13a+12] execute delay routine
* add the next two lines to guarantee sending two stop bits:
* lda #2*(BAUD_SEL-1)+1 ;[2] prepare for a 1 bit delay
* bsr delay_13a ;[13a+12] execute delay routine
rts ;[6] exit (put_char)
* delay_13a - delay for 13*ACC + 12 cycles; called by get_char and put_char *
* *
* input cond. - ACC set to appropriate value (13*ACC + 12 cycles) *
* output cond. - ACC = 0 *
* stack used - 0 bytes *
* variables used - none *
* ROM used - 7 bytes *
******************************************************************************
delay_13a nop ;[2] this is a 13-cycle loop
nop ;[2]
tsta ;[3]
deca ;[3] decrement loop count
bne delay_13a ;[3] loop if count not zero
rts ;[6] exit (delay_13a)
******************************************************************************
* *
* Interrupt and Reset vectors for Main Routine *
* *
******************************************************************************
org RESET
fdb main
Размещено на Allbest.ru
Подобные документы
Разработка контроллера управления цифровой частью системы, перечень выполняемых команд. Описание алгоритма работы устройства, его структурная организация. Синтез принципиальной электрической схемы, особенности аппаратных затрат и потребляемой мощности.
курсовая работа [318,8 K], добавлен 14.06.2011Преобразование релейно-контактной схемы управления механизмом подъема крана с использованием силового магнитного контроллера. Группировка и обозначение сигналов. Механические характеристики магнитного контроллера. Функциональные схемы узлов механизма.
курсовая работа [471,5 K], добавлен 09.04.2012Алгоритм функционирования контроллера имитатора навигационного сигнала, его упрощенная структурная схемы. Спецификация входных и выходных сигналов. Разработка аппаратной части заданного блока контроллера и программного обеспечения. Исходный код программы.
курсовая работа [1,1 M], добавлен 13.10.2017Логическая структура универсального программного контроллера и развитой микропроцессорной системы. Интерфейс микропроцессоров. Информационные магистрали. Формат последовательных информационных сигналов. Локальные системы накопления и обработки информации.
реферат [255,6 K], добавлен 31.05.2012Разработка контроллера прибора, обеспечивающего реализацию функций оцифровки аналоговых данных с выводом результата в виде графического вида сигнала. Выбор контроллера и элементов схемы, их описание. Общий алгоритм работы и листинг программы управления.
курсовая работа [1,1 M], добавлен 26.12.2012Работа приемно-контрольной панели на примере одношлейфного прибора. Стандарт последовательного интерфейса. Выбор контроллера, основные способы адресации. Инициализация и прекращение передачи данных. Описание электронной схемы и ее функционирования.
курсовая работа [1,6 M], добавлен 26.07.2013Разработка микроконтроллера для контроля ритма дыхания больного в реанимационной палате. Структурная и принципиальная схемы микропроцессорного контроллера. Модули процессора, памяти, ввода и вывода, режимы индикации. Описание работы, принципиальная схема.
курсовая работа [197,6 K], добавлен 06.12.2013Исследование особенностей станков с электронными системами программного управления. Характеристика назначения и принципа работы субблока программируемого логического контроллера. Разработка управляющей программы для проверки работоспособности станка.
курсовая работа [1,7 M], добавлен 30.01.2014Характеристика, применение и назначение микроконтроллерных систем управления. Разработка контроллера инверторного сварочного аппарата, обеспечивающего работу манипулятора. Общий алгоритм работы, составление программного обеспечения для данного блока.
курсовая работа [1,6 M], добавлен 26.12.2012Проектирование многоканального тропосферного озонометра. Разработка структурной и электрической принципиальной схемы. Основные характеристики датчиков. Последовательный периферийный интерфейс. Разработка печатной платы. Обоснование класса точности.
курсовая работа [1,9 M], добавлен 10.03.2014