Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ПУТЕЙ СООБЩЕНИЯ

(Воронежский филиал МИИТ)

ОСНОВЫ

МИКРОПРОЦЕССОРНОЙ ТЕХНИКИ

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

с методическими указаниями

для студентов II курса очной формы обучения

специальности

190402 Автоматика, телемеханика и связь

на железнодорожном транспорте (АТС)

Воронеж - 2010

ВВЕДЕНИЕ

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

Наибольшее распространение получили микропроцессорные системы, реализованные на однокристальных микроконтроллерах, что позволяет сократить объем аппаратурных затрат и их габаритные размеры.

В настоящей лабораторной работе студенты должны познакомиться с принципами построения и работой отечественных микроконтроллеров семейства МК48 типа КМ1816ВЕ48.

Следует отметить, что в пределах семейства МК48 существует шесть разновидностей микроконтроллеров, но все микросхемы имеют одинаковую структурную организацию, систему команд, разводку выводов и полностью совместимы между собой.

Студентам перед выполнением задания рекомендуется познакомиться со структурной схемой и системой команд микроконтроллера КМ1816ВЕ48 по [1, гл.6].

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

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

ЗАДАНИЕ

1.  Составить программу преобразования одного вида 8-ми разрядного кода в другой, используя стартстопный (асинхронный) режим обмена данными между микропроцессором и выходным портом при выводе данных из микроконтроллера КМ1816ВЕ48.

2.  Определить время выполнения программы преобразования кодов.

3.  Ответить на контрольные вопросы.

Вариант задачи выбирается из таблицы 1 следующим образом:

·  а) вид преобразования - по последней цифре шифра студента в зависимости от ее четности или нечетности;

·  б) номер разряда буферного регистра порта, через который осуществляется передача байта в последовательном коде – предпоследняя цифра шифра студента;

·  в) номер порта микроконтроллера при передаче байта - в зависимости от четности и нечетности предпоследней цифры шифра студента;

·  г) основная частота синхронизации – по цифре шифра студента, предшествующей предпоследней цифре;

·  д) вход микроконтроллера для преобразования последовательного кода в параллельный определяется в зависимости от четности или нечетности цифры шифра студента по варианту (г);

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

·  ж) время выдержки логических уровней сигнала – по последней цифре шифра студента.

·  з) два контрольных вопроса выбираются в соответствии с последней и предпоследней цифрой шифра студента.

Таблица 1

Цифра шифра

0

1

2

3

4

5

6

7

8

9

а

Вид преобразования

б

Номер разряда порта

-

4

-

6

-

0

-

4

-

6

в

Номер порта

Р2

Р1

Р2

Р1

Р2

Р1

Р2

Р1

Р2

Р1

г

Основная частота синхронизации, МГц

6.0

4.5

3.0

1.5

3.0

4.5

6

4.5

3.0

1.5

д

Вход микроконтроллера

Т1

-

Т0

-

Т1

-

Т0

-

Т1

-

е

Номер регистра памяти данных

R9

R5

R8

R6

R4

R7

R6

R8

R5

R9

ж

Время выдержки сигнала на МК

120

100

80

120

100

80

120

100

80

120

Примечание:

·  - преобразование последовательного кода в параллельный;

·  - преобразование параллельного кода в последовательный.

МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ВЫПОЛНЕНИЮ

ЛАБОРАТОРНОЙ РАБОТЫ № 1

На практике при обмене информацией между микроконтроллером и внешними устройствами часто возникает задача преобразования параллельного кода в последовательный и обратно. Задача преобразования, например, параллельного кода в последовательный возникает в случае передачи информации по каналу связи к удаленному объекту. Решать задачу обратного преобразования требуется при обработке информации. Часто встречаются ситуации, когда установка дополнительных аппаратных преобразователей типа мультиплексоров или демультиплексоров неоправданна. В этом случае задачи преобразования кодов может выполнять и сам микроконтроллер.

В рамках данной лабораторной

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

НЕ нашли? Не то? Что вы ищете?

Важно заметить, что в случае преобразования параллельного кода в последовательный исходный параллельный байт считывается из внутренней памяти данных по адресу регистра, указанного в задании, и передается в последовательном виде разрядом одного из портов. В случае преобразования последовательного кода в параллельный исходный последовательный код поступает на один из входов счета внешних событий (Т0 или Т1) и после преобразования записывается во внутреннюю память данных по адресу регистра, указанного в задании.

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

Формат данных при передаче и приеме в последовательном коде представлен на рисунке 1, формат данных в параллельном коде представлен на рис.2.

Как следует из рисунка 1, передача байта в последовательном коде осуществляется следующим образом. Сначала передается сигнал уровня «лог.0», который является стартовым битом. После передачи стартового бита начинает передаваться последовательный байт. Когда все 8 бит последовательного байта переданы, осуществляется передача сигнала «лог.1», который является стоповым битом. Каждый бит последовательного кода передается в течение времени .

Считывание битов осуществляется в середине их передачи, поэтому когда начинается передача стартового бита осуществляется выдержка времени . Считывание последующих битов осуществляется через каждые .

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

Рассмотрим способ преобразования формата данных.

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

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

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

Сдвиг данных регистр-аккумулятор может осуществлять вправо и влево. Кроме того, возможен циклический сдвиг данных вправо и влево через триггер переноса (смотри табл.4 и рис.3). Что касается триггера переноса , то его состояние можно программно анализировать, а также изменять.

Преобразование кодов в микроконтроллере можно организовать следующими способами:

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

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

Преобразование кодов в обоих случаях будет занимать число циклов, равное разрядности аккумулятора.

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

(1)

Условие (1) является ограничением минимального времени выдержки сигнала на портах микроконтроллера.

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

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

Время выполнения отдельной операции микроконтроллером К1816ВЕ48 фиксировано и зависит от длительности синхронизирующего сигнала. Поэтому необходимую задержку времени можно обеспечить программным путем. Наиболее распространенный способ программной задержки, основан на задании в теле программы локальных циклов, заполненных пустыми операциями, либо операциями, выполняемыми за максимальное число циклов.

Примерный вид локального цикла представлен на рисунке 4. Цифрами 1 и 11 обозначены метки начала и окончания цикла, цифрой 3 обозначена метка условного перехода.

Работает цикл следующим образом. Запуск цикла происходит в тот момент, когда микроконтроллер считывает команду, размещенную в памяти программ в ячейке, соответствующей началу цикла (1). Далее из памяти данных считывается начальный индекс цикла (2). После этого осуществляется проверка превышения числом уже выполненных циклов заданного числа 0 (счет выполненных циклов осуществляется в обратном порядке). Так как начальный индекс цикла больше заданного числа 0, то по ветке «нет» начинается последовательное выполнение () команды, обеспечивающих заданное время выполнения цикла. Предпоследней командой, выполняемой в ветке «нет», (9) производится декрементирование индекса цикла (уменьшение индекса на единицу). После этого следует команда безусловного перехода по метке (3). Снова производится проверка превышения уже выполненным числом циклов заданного числа , и выполнение команд из ветки «нет» (5)-(10). Так продолжается до тех пор, пока очередная проверка (4) не обнаружит, что условие стало истинным. В этом случае происходит условный переход по метке конца локального цикла.

Приведенный на рисунке 4 алгоритм цикла изображен в общем виде, тогда как при написании программного кода число операций, в течение которых выполняется отдельный элемент алгоритма, может быть более одной. Это происходит потому, что помимо операций преобразования данных микроконтроллер выполняет также ряд вспомогательных операций, например, таких как операции пересылки данных между узлами, операции «очистки» регистров и т. д (число операций зависит от микроконтроллера). Как следует из анализа системы команд (см. табл.4) большинство операций преобразования данных, таких как присвоение значений переменным, декрементирование, инкрементирование выполняется в регистре-аккумуляторе. Так как в процессе выполнения программы регистр-аккумулятор должен хранить различные данные, которые зависят от операции, выполняемой АЛУ, то большинство переменных, хранится в регистрах памяти данных. Значит для выполнения, например операции условного перехода, требуется предварительно переслать в аккумулятор из памяти данных анализируемое число (команда MOV A, Rn), и только затем произвести сравнение содержимого аккумулятора с нулем и осуществить переход по метке (команда JZ add).

С учетом вспомогательных операций подробный алгоритм цикла задержки имеет вид, представленный на рисунке 5. Как видно из приведенного алгоритма один раз в начале цикла выполняются операции (2)-(4), затем раз операции (6)-(13) и при выходе из цикла еще раз команды (6), (7). Само тело цикла заполнено пустыми операциями NOP. Формула для определения длительности указанного цикла имеет вид:

, мкс

где - число команд, расположенных вне цикла;

- число циклов;

* - число команд в цикле.

Если известно необходимое время задержки , число f, n и время выполнения команд цикла , тогда число циклов может быть определено по формуле:

.

В примере, приведенном на рисунке 5 число циклов определяется с учетом того, что:

·  требуемое время задержки составляет ;

·  - команды (2)-(4), (6), (7);

·  * - команды (6)-(13).

Поэтому формула для данного цикла имеет вид:

.

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

Из за большого объема этот материал размещен на нескольких страницах:
1 2