Бродин В. Б., Шагурин И. И. Микроконтроллеры (1999) (1095894), страница 12
Текст из файла (страница 12)
Для выбора необходимого блока управляющих данных каждый запрос РТЯ0..14 обращается к своему вектору, который расположен на странице ОГРН памяти по фиксированному адресу, указанному в табл. 1.14. Данный вектор % служит адресом младшего байта из блока управляющих данных на странице ООН (в регистровом файле). Каждый блок занимает восемь 8- разрядных регистров, поэтому вектор блока должен быть 16-разрядным числом, кратным восьми. Содержимое регистров зависит от выполняемой процедуры (рис. ! .10). Вид выполняемой процедуры определяется содержимым РТЯ СОХ, имеющего адрес (Ъ'!+1). Формат содержимого РТЯ СОХ показан на рис.
1.11а, б. миюоконттсллзим кихитестг пнзпттмминовьниа инте ряс 54 Одиночная пересылка Пересылка блока Ч! РТЗ СО()ХТ РТБ СО()ХТ не использ. не использ. РТЗ СОХ Ч!+1 РТЗ СОХ РТЗ СОХ РТБ СОХ РТБ РТК ! (Н) РТБ ЗКС (1.) РТЗ РТК 1 (1.) Ч!+2 РТБЗКС(1.) РТЗ СОХЗТ 1 (Н) РТЗ ВБТ (Р) РТЗ СОХЗТ 1 (Н) Ч!+5 РТБ ВЗТ(Н) РТЗ В1.О С К РТЗ СОМБТ 2 (1.) Ч3+6 не использ.
не использ. РТЗ СОХБТ 2 (Н) Ч!+7 не использ. не использ. не нспольз. Рис. 1.! О. Содержимое регистров блока управляющих данных ° зависимости от выполняемой процедуры Три старших разряда (поле РТБ МОРЕ) определяют процедуру специа- лизированного обслуживания: (РТБ МОРЕ) - 100 — одиночная пересылка; (РТБ МОРЕ) - 000 — пересылка блока; (РТБ МОВЕ) - 010 — генерация импульсов. Значения остальных разрядов РТБ СОХ зависят от выполняемой проце- дуры: пересылка или генерация импульсов. 7 6 5 4 3 2 ! 0 РТЗ МОВЕ В% З(1 В(1 Я В1 а) РТЗ СОМ, пересылка (одиночная, блочная) 7 6 5 4 3 2 РТЗ МОВЕ ТМОВ ТВ1Т резерв б) РТЗ СОМ, генерация импульсов (обычная, модифицированная) Рис, 1.11. Формат регистра РТЗ СОМ в зависимости от выполняемой процедуры Чт+3 РТБ ЗКС(Н) Ч!+4 РТБ ВЗТ (1.) РТБ БКС (Н) РТБ ВЗТ (1.) Генерация импульсов РТЗ РТК1 (Н) РТЗ СОХБТ 1 (1.) Модифицированная генерация РТБ РТК 1 (Е) РТБ СОХЗТ ! (1.) МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА МСЕ-РВ 55 Одиночная пересылка производит перемещение байта или слова из одной позиции памяти, 16-разрядный адрес которой задается содержимым регистра РТБ БКС, в другую позицию, адресуемую содержимым регистра РТБ 1)БТ.
Разряд ВЖ (бит 4) в регистре РТБ СОХ определяет разрядность пересылаемых данных: байт при ВЖ - 1, слово при В тЧ - О. Количество пересылок (до 255) задается содержимым регистра РТБ СО!!ХТ. После каждой пересылки содержимое регистра РТБ БЕС либо увеличивается на 1 (при ВтЧ = 1) или на 2 (при В!Ч = О), если в регистре РТБ СОХ установлено значение разряда Б! = 1, либо сохраняется неизменным, если установлено Б! = О.
Аналогичным образом содержимое регистра РТБ !)БТ может увеличиваться на 1 или 2 при значениях разряда Г)! - 1, или не изменяться при !Э! - О, Таким образом, данный режим позволяет, кроме пересылок отдельных байтов или слов, производить передачу массивов объемом до 255 байтов или слов, либо заполнять массив значениями какого-либо байта или слова из ячейки, адресуемой содержимым регистра РТБ БКС.
Значения разрядов Б(), 1)(! при одиночной передаче устанавливаются равными соответствующим разрядам 51, ГА1: Б(! - Б1, !)!) = Г)!. Пересылка блоков позволяет производить размножение массивов, пересылку массивов большого объема (до 32 Кбайт). При этом содержимое регистра РТБ СО!)ХТ задает число пересылаемых блоков (количество циклов передач), а содержимое регистра РТБ В1.ОСК вЂ” число байтов (при ВЪЧ - 1) или слов (при ВЪЧ = О) в блоке. Значения разрядов 51, !)! - 1 в регистре РТБ СОХ обеспечиватот инкремент содержимого регистров РТБ БКС, РТБ 0БТ на 1 или 2 (при В)Ч = 1 или О) после каждой пересылки, значения 51, 1)1 - 0 сохраняют содержимое РТБ БКС, РТБ 1АБТ неизменным.
Значения разрядов Б!1, П() 1 сохраняют содержимое регистров РТБ БКС, РТБ Г)БТ, установившееся после пересылки очередного блока (цикла передачи), значения Б(1, ГИ3 - 0 возвращают исходное содержимое этих регистров, установленое перед началом пересылок. Прн использовании ПСР для генерации импульсов (РТБ МОРЕ = 010) разряд ТМОГ) определяет тип генерации: обычная при значении ТМО!) - 1, модифицированная при ТМО!) = 0, Генерация импульсов производится с помощью ПРС, который содержит два таймера и четыре отдельных модуля, формирующих последовательности импульсов заданной частоты и скважности. Работа ПРС подробно рассмотрена в разделе 1.6. Каждый модуль ПРС имеет 16-разрядный регистр ЕРАхТ1МЕ, задающий длительность интервалов времени, и регистр управления ЕРАхСОХ, определяющий режим функционирования х-го модуля, где номер х - О, 1, 2 или 3.
При выполнении обычной генерации любой из четырех модулей ПВИ может использоваться для формирования последовательности импульсов на соответствующем выводе ЕРАх порта Р1, программируемого для реализа- микРОкОнтРОллеРы. АРкитектуРА пРОГРАммиРОВАние, интеРФеЙс ции специальных функций. При программировании в разряде х - О, 1, 2 или 3 регистра Р1 О1К устанавливается «0» (вывод данных), в разряде х регистра Р1 МОРЕ устанавливается «1» (выполнение специальных функций), в разряде х регистра Р1 КЕО устанавливается «0» или «1» в зависимости от требуемого начального уровня сигнала на выходе ЕРАх.
В регистр управления модуля ЕРАх СОХ вводится число, разряды которого определяют режим его работы (см. раздел 1.6, рис. 1.22); КМ = О, ТВ = 0 или 1 в зависимости от используемого таймера, СЕ = 1, МОРЕ = 11. Для формирования непрерывной последовательности импульсов устанавливается значение разряда КЕ = 1, лри КЕ = 0 на выходе ЕРАх формируется одиночный импульс.
Значения разрядов КОТ, ОХ / КТ обычно устанавливаются равными КОТ - О, КТ - 1. Блок управляющих данных ПРС (рис. 1.10), кроме содержимого регистра управления РТЗ СОХ, задает 16-разрядный адрес регистра ЕРАх Т1МЕ используемого модуля (см. табл. 1А), и две 16-разрядные временные константы РТЗ СОХЗТ1, РТЗ СОХЗТ2. Регистр РТЗ СОХ при выполнении данной процедуры должен содержать число 43Н (РТЗ МОРЕ = 010, ТМО0 - 1, ТВ1Т - 1). Адрес ЕРАх Т1МЕ должен быть записал в байтах РТЗ РКТ1 блока управляющих данных. Константа РТЗ СОХЗТ1 задает длительность Т1 первой фазы периода формируемых импульсов, константа РТЗ СОХЗТ2 — длительность (Т2..Т1) второй фазы (см. рис.
1.12). При этом единицей времени служит длительность периода синхросигналов выбранного таймера (см. раздел 1.6). Таким образом значения РТЗ СОХЗТ1, РТЗ СОХЗТ2 определяют частоту Ря = 1/Т2 и скважность Яй - (Т1/Т2)«100% генерируемых на выходе ЕРАх импульсов. Рио. 1.12. Фазы формируемых импульеоа е режиме обычной ганерации При выполнении модифицированной генерации два модуля ПРС используются для формирования импульсов на одном выводе порта Р1: модули 0 и 1 формирутот импульсы на выходе ЕРА1, модули 2 и 3 — на выходе ЕРАЗ. Для примера рассмотрим случай использования модулей 0 и 1. Каждый из модулей обслуживается своим блоком управляющих данных, содержимое которых приведено на рис. 1.10. При этом оба блока должны задавать одинаковое содержимое управляющего регистра РТЗ СОХ, в котором значение поля РТЗ МОРЕ = 010, ТМОРЕ - О, значение ТВ1Т может мук»окант»оллв ы семейства мсз-м 57 быть любым.
В качестве временной константы РТЯ СОХЯТ1 оба блока должны указывать длительность периода генерируемых импульсов Т2. Байты РТЗ РТВ1 для модуля 0 должны содержать адрес регистра ЕРАО Т1МЕ (1Р82Н), для модуля 1 — адрес регистра ЕРА1 Т(МЕ ( 1Г86Н ). Перед началом генерации необходимо запрограммировать вывод ЕРА1 порта Р1 для вгяполнения специальных функций, установить его начальный уровень («О» или «1»), загрузить управляющие регистры модулей ЕРАО СОХ, ЕРА1 СОХ и установить начальное содержимое регистров ЕРАО Т1МЕ, ЕРА1 Т1МЕ.
Содержимое ЕРАО Т1МЕ задает время первого срабатывания модуля О, содержимое ЕРА1 Т1МŠ— время первого срабатывания модуля 1. Разность этих времен определяет длительность формируемых импульсов. Если содержимое ЕРАО Т1МЕ равно О, а содержимое ЕРА1 Т1МЕ равно Т1, то формируемые импульсы будут иметь длительность Т1. В обоих регистрах управления ЕРАО СОХ, ЕРА1 СОХ должен быть указан один и тот же таймер (одинаковые значения разряда ТВ), и установлено значение СЕ - 1. Значения разрядов ВЕ также должны быть одинаковыми; КЕ - 0 для генерации одиночного импульса, КЕ 1 для генерации последовательности импульсов. Разряды поля МО?)Е должны иметь противоположные значения: если срабатывание модуля 0 устанавливает «1» на выходе ЕРА1 (в регистре ЕРАО СОХ разряды М1МО = 10), то срабатывание модуля 1 должно устанавливать «0» на этом выходе (в регистре ЕРА1 СОХ следует указать М1МО - 01). Кроме того, в регистре ЕРА1 СОХ следует установить разряд КМ = 1 (в регистре ЕРАОСОХ этот разряд отсутствует, см.
раздел 1.6). Аналогичным образом обеспечивается модифицированный вариант генера- ции импульсов с использованием модулей 2, 3 и вывода ЕРАЗ. 1.5. Организация ввода — вывода Для обмена информацией между микроконтроллером и внешними устройствами предусмотрены возможности параллельного обмена через порты Р1..Р4 и дополнительный порт ЕРОКТ и последовательного обмена через специальный блок БПО с использованием двух выводов порта Р2 в режиме выполнения специальных функций (см.
раздел 1.1). Параллельный ввод-вывод осуществляется с помощью 8-разрядных двунаправленных портов Р1, Р2, РЗ, Р4 (в порте Р4 к внешним выводам Р4.0, 1, 2, 3 подключены только четыре младших разряда) и 4-разрядного порта ЕРОКТ, который можно испольэовать при работе микроконтроллера в режиме 64К. Схема подключения портов к выводам микроконтроллера показана на рис. 1.13. МИКРОКОНТРОЛЛЕРЫ: АРХИТЕКТУРА ЛРОГРАММИРОЕАНИ ИНТЕРФЕЙС 58 Внутренняя мягистряяь Рис. 1.13. Схема подключения портов к выводам микроконтроллера Каждый порт Р1, 2, 3, 4 содержит четыре 8-разрядных регистра: два управляющих регистра Р! В1К, Р! МОВЕ и два регистра данных Р! КЕО, Р! РПТ1, где т = 1, 2, 3 или 4 — номер соответствующего порта.
Содержимое этих регистров имеет одинаковый формат (рис. 1.14): каждый разряд определяет режим функционирования или бит передаваемой информации для соответствующего вывода порта. 2 1 7 6 5 Р!.7 Р!.6 Р!.5 Р!.4 Р!.3 Р!.2 Р!.1 Р!.0 Р! КЕО, Р! В1К, Р! МОВЕ, Р! Р!!я Рис. 1.14. Формат регистров управления портами Управляющий регистр Р! МОВЕ задает режим использования каждого вывода 1-го порта. Если установлено значение «О» в 1-ом разряде регистра, то соответствующий вывод Рц используется портом Р! для параллельного ввода-вывода, если установлена «1», то этот вывод служит для выполнения специальных функций, перечисленных в разделе 1.1.