Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Блок управления и синхронизации





Регистр управления/статуса приемопередатчика SCON

Управление режимом работы приемопередатчика осуществляется через специальный регистр с символическим именем SCON. Этот регистр содержит не только управляющие биты, определяющие режим работы последовательного порта, но и девятый бит принимаемых или передаваемых данных (RB8 и ТВ8) и биты прерывания приемопередатчика (R1 и Т1).

Функциональное назначение бит регистра управления/статуса приемопередатчика SCON.

Символ Позиция Имя и назначение
SM0 SCON.7 Биты управления режимом работы приемопередатчика. Устанавливаются/сбрасываются программно см. примечание 1
SM0 SM1 Режим работы приемопередатчика
    Сдвигающий регистр расширения ввода/вывода
    8 битовый приемопередатчик, изменяемая скорость передачи
    9 битовый приемопередатчик. Фиксированная скорость передачи
    9 битовый приемопередатчик, изменяемая скорость передачи

 

SM1 SCON.6
SM2 SCON.5 Бит управления режимом приемопередатчика. Устанавливается программно для запрета приема сообщения, в котором девятьй бит имеет значение 0
REN SCON.4 Бит разрешения приема. Устанавливается/сбрасывается программно для разрешения/запрета приема последовательных данных
TB8 SCON. 3 Передача бита 8. Устанавливается/сбрасывается программно для задания девятого передаваемого бита в режиме 9-битового передатчика
RB8 SCON.2 Прием бита 8. Устанавливается/сбрасывается аппаратно для фиксации девятого принимаемого бита в режиме 9-битового приемника
TI SCON. 1 Флаг прерывания передатчика. Устанавливается аппаратно при окончании передачи байта. Сбрасывается программно после обслуживания прерывания
RI SCON.0 Флаг прерывания приемника. Устанавливается аппаратно при приеме байта. Сбрасывается программно после обслуживания прерывания

Прикладная программа путем загрузки в старшие биты регистра SCON двухбитного кода определяет режим работы приемопередатчика. Во всех четырех режимах работы передача инициализируется любой командой, в которой буферный регистр SBUF указан как получатель байта. Как уже отмечалось, прием в режиме 0 осуществляется при условии, что R1 = 0 и REN = 1, в остальных режимах - при условии, что REN = 1.

В бите ТВ8 программно устанавливается значение девятого бита данных, который будет передан 8 режиме 2 или 3. В бите RB8 в этих режимах фиксируется девятый принимаемый бит данных. В режиме 1 в бит RB8 заносится стоп-бит. В режиме 0 бит RB8 не используется.

Флаг прерывания передатчика ТI устанавливается аппаратно в конце периода передачи стоп-бита во всех режимах. Соответствующая подпрограмма обслуживания прерывания должна сбрасывать бит TL.

Флаг прерывания приемника RI устанавливается аппаратно в конце периода приема восьмого бита данных в режиме 0 и в середине периода приема стоп-бита в режимах 1, 2 и 3. Подпрограмма обслуживания прерывания должна сбрасывать бит RI.

Скорость приема/передачи информации через последовательный порт

Скорость приема/передачи, т.е. частота работы приемопередатчика в различных режимах, определяется различными способами.

В режиме 0 частота передачи зависит только от резонансной частоты кварцевого резонатора f РЕЗ:

f=fРЕЗ/12.

За машинный цикл последовательный порт передает один бит информации. В режимах 1, 2 и 3 скорость приема/передачи зависит от значения управляющего бита SMOD в регистре специальных функций PCON.

Регистр управления мощностью PCON

Символ Позиция Наименование и функция
SMOD PCON.7 Удвоенная скорость передачи. Если бит установлен в 1, то скорость передачи вдвое больше, чем при SMOD = 0. По сбросу SMOD = 0.
  PCON.6 Не используется
  PCON.5 Не используется
  PCON.4 е используется
GF1 GF0 PCON.3 PCON.2 Флаги, специфицируемые пользователем (флаги общего назначения)
PD PCON.1 Бит пониженной мощности. При установке бита в 1 микро-ЭВМ переходит в режим пониженной потребляемой мощности
IDL PCON.0 Бит холостого хода. Если бит установлен в 1, то микро-ЭВМ переходит в режим холостого хода

Примечание. При одновременной записи 1 в PD и IDL бит PD имеет преимущество. Сброс содержимого PCON выполняется путем загрузки в него кода 0XXX0000.

В режиме 2 частота передачи определяется выражением

f =2SMODfРЕЗ/64.

Иными словами, при SMOD = 0 частота передачи равна 1/64 частоты fРЕЗ, а при SMOD = 1 - 1/32 частоты fРЕЗ.

В режимах 1 и 3 в формировании частоты передачи, кроме управляющего бита SMOD, принимает участие таймер 1. При этом частота передачи f зависит от частоты переполнения f OVLT и определяется следующим образом:

f=2SMODfOVTL1/32

При использовании таймера 1 для тактирования последовательного порта прерывания от этого таймера должны быть запрещены. Таймер может быть использован как в режиме шестнадцатиразрядного таймера, так и в режиме таймера с автозагрузкой. Обычно используется режим таймера с автозагрузкой (старшая тетрада регистра TMOD = 0010В). При этом скорость передачи последовательного порта определяется выражением:

f = 2SMODfРЕЗ/(32х12х(256 -ТН1)).

Предельно низких скоростей приема и передачи по последовательному порту можно достичь при использовании таймера в режиме 1 (старший полубайт TMOD = 0001В). Перезагрузка 16-битного таймера должна осуществляться программным путем. При этом для того, чтобы можно было независимо от передачи выполнять дополнительные задачи, необходимо использовать механизм обработки прерываний и для этого разрешить прерывания от таймера 1.

Настройка таймера 1 для управления скоростью работы последовательного порта.

Частота приема/передачи (BAUD RATE) Частота резонатора МГц Таймер/счетчик 1
SMOD С/Т Режим (MODE) Перезагружаемое число
Режим 0, макс: 1 МГц   X X X X
Режим 2, макс: 375 КГц     X X X
Режим 1, 3: 62,2 Кгц         0FFH
19,2 Кгц 11,059       0FDH
9,6 Кгц 11,059       0FDH
4,8 Кгц 11,059       0FAH
2,4 Кгц 11,059       0F4H
1,2 Кгц 11,059       0F4H
137,5 Гц 11,059       1DH
110 Гц         72H
110 Гц         0FЕЕВН

Отметим, что для старших моделей семейства MCS-51 при использовании для синхронизации последовательного порта таймеров 1 и 2 скорости приема и передачи информации по последовательному порту могут различаться.

||;

Обнулить флаг приёмника RI;

Обнулить флаг передатчика TI;

Обнулить девятый бит приёмника RB8;

Обнулить девятый бит передатчика TB8;+-----------Разрешить работу приёмника;||+------------В синхронном режиме не имеет значения;++-------------Включить синхронный режим работы последовательного порта;Так как предыдущая команда обнуляет флаг RI то с этого момента начинается приём байта-------------------------------------------- JNB RI, $;Подождать окончания приёма байта по последовательному порту MOV A, SBUF;и скопировать его в аккумулятор Рисунок 5. Программа считывания одного байта из внешнего регистра по последовательному порту. В настоящее время разработано огромное количество микросхем таких как, например, синтезаторы частоты, микросхемы приёмников, блоков цветности телевизоров, микросхем памяти данных, управление которыми осуществляется по последовательному протоколу. При этом микросхемы обычно реализуют синхронные протоколы обмена SPI или I2C. Последовательный порт микроконтроллеров семейства MCS-51, работающий в нулевом режиме позволяет осуществлять обмен с такими микросхемами при минимальных программно-аппаратных затратах. Справедливости ради необходимо отметить, что в современных микросхемах семейства MCS-51 присутствуют отдельные последовательные порты, работающие по протоколу SPI или I2C. В качестве примера такой микросхемы можно назвать ADuC834 фирмы Analog Devices. В микросхемах с отдельными SPI или I2C портами последовательный порт используется исключительно для связи с универсальным компьютером.

||;

Обнулить девятый бит передатчика TB8;+-----------Разрешить работу приёмника;||+------------Проверять ошибку кадра (приём нулевого бита на месте стоп-бита);++-------------Включить асинхронный режим работы последовательного порта;Настроить режим работы таймера T1 ---------------------------------------------------------------------------------------------- anl TMOD,#00001111b;Подготовить таймер T1 к настройке (таймер T0 не трогать!) orl TMOD,#00100000b;перевести таймер T1 вo второй режим работы (таймер T0 не трогать!);|;||++--------------Перевести таймер T1 в режим автозагрузки;|+----------------Синхронизироваться от внутреннего генератора;+-----------------Запретить управление таймером от ножки INT1;Настроить таймер на генерацию 3-x микросекундного интервала времени-------------------------------------------------------------- mov TH0, #fdh;Загрузить старший байт таймера mov TL0, #fdh;Загрузить младший байт таймера setb TR1;Включить таймер 1;*********************************************************************************************************************************;РАБОТА С ПОСЛЕДОВАТЕЛЬНЫМ ПОРТОМ;********************************************************************************************************************************* JNB RI, $;Подождать окончания приёма байта по последовательному порту MOV A, SBUF;и скопировать его в аккумулятор Рисунок 8. Программа приёма одного байта по последовательному порту. Возможность работы в асинхронном режиме позволяет использовать последовательный порт для связи с универсальным компьютером через его последовательный COM порт. К сожалению уровни последовательного порта микроконтроллера не совпадают с уровнями последовательного порта компьютера, поэтому для подключения микроконтроллера к последовательному порту компьютера используются специализированные микросхемы согласования уровней. Эти же микросхемы обеспечивают защиту микроконтроллера от вывода из строя статическим потенциалом при подключении разъёмов. Обычно для работы используются только сигнальные цепи COM-порта компьютера. Тем не менее, оставшиеся буферы интерфейсной микросхемы могут быть использованы для контроля питания микроконтроллерной схемы. Типовая схема подключения компьютера к последовательному порту микроконтроллеров семейства MCS-51 с применением микросхемы ADM3202 приведена на рисунке 9. Рисунок 9. Подключение последовательного порта микроконтроллеров семейства MCS-51 к последовательному COM порту компьютера. Использование последовательного порта компьютера позволяет не только управлять микроконтроллерным устройством, используя клавиатуру компьютера, но и отображать внутреннюю информацию этого устройства, используя дисплей компьютера. Это значительно расширяет возможности ввода и вывода информации в микроконтроллерных устройствах. В последнее время дополнительно появилась возможность заносить программу во внутреннюю память программ наиболее современных микроконтроллеров.

Режим 0

В нулевом режиме таймер работает как 13-битный суммирующий счётчик. Этот счётчик состоит из 8 бит регистра ТНх и младших 5 бит регистра TLx, где x в обозначении регистра заменяется на 0 или 1 в зависимости от того таймера, которым мы управляем. Старшие 3 бита регистров TLx не определены и игнорируются. Установка запускающего таймер флага TR0 или TR1 не очищает эти регистры. Работе таймера 0 или таймера 1 в режиме 0 соответствует схема:

Рисунок 2. Схема таймеров 0 или 1 в режиме 0.

Этот режим был введён для совместимости с устаревшим семейством микроконтроллеров MCS-48 для облегчения переноса уже разработанных программ на новые процессоры и поэтому в настоящее время не используется. Тем не менее, в этом режиме можно обеспечить формирование интервала времени длительностью до 8096 мс при частоте задающего генератора 12 МГц.

Когда содержимое счетчика изменяется из состояния все "1" в состояние все "0", то устанавливается (принимает значение "1") флаг прерывания таймера TF0 или TF1.

Обычно пользователя интересует не максимальный интервал времени, а свой конкретный интервал времени. Для уменьшения интервала времени в регистры таймера можно предварительно занести число и тем самым сформировать произвольный интервал времени. Рассмотрим пример подготовки таймера T0 для формирования временного интервала 5мс.

;Настроить режим работы таймера------------------------------------------------------------------------------------------- mov TMOD,#00000000b;настроить таймеры T0 и T1 на нулевой режим работы;

||;

Синхронизироваться от внутреннего генератора;|+----------Запретить управление таймером от ножки INT0;||++-----------Перевести таймер T1 в тринадцатиразрядный режим работы;|+-------------Синхронизироваться от внутреннего генератора;+--------------Запретить управление таймером от ножки INT1;Настроить таймер на генерацию 5-ти миллисекундного интервала времени-------------------------------------- mov TH0, #HIGH(-5000);Загрузить старший байт таймера mov TL0, #LOW(-5000);Загрузить младший байт таймера В рассмотренном примере для расщепления 16-ти битной константы на два отдельных байта были использованы функции выделения старшего и младшего байта. Эти функции присутствуют в большинстве ассемблеров для микроконтроллеров MCS-51. Если же язык программирования не содержит в своём составе подобные функции, то можно для выделения байтов воспользоваться операцией деления на 256. mov TH0, #-5000/256;Загрузить старший байт таймера mov TL0, #-(5000-5000/256);Загрузить младший байт таймера

Режим 1

В первом режиме работы таймер работает как шестнадцатиразрядный счётчик. Режим 1 похож на режим 0, за исключением того, что в регистрах таймера использует все 16 бит. В этом режиме регистры ТНх и TLx также включены друг за другом. Работе таймера 0 или таймера 1 в режиме 1 соответствует схема:

Рисунок 3. Схема таймеров 0 или 1 в режиме 1.

В этом режиме можно обеспечить формирование интервала времени длительностью до 65536 мкс при частоте задающего генератора 12 МГц.

Рассмотрим пример использования таймера T0 для формирования временного интервала 15мс.

;Настроить режим работы таймера------------------------------------------------------------------------------------------- mov TMOD,#00000001b;перевести таймер T0 в первый режим работы, а T1 - в нулевой;

||;

Синхронизироваться от внутреннего генератора;|+------------Запретить управление таймером от ножки INT0;||++-------------Перевести таймер T1 в тринадцатиразрядный режим;|+----------------Синхронизироваться от внутреннего генератора;+-----------------Запретить управление таймером от ножки INT1;Настроить таймер на генерацию 15-ти миллисекундного интервала времени------------------------------------ mov TH0, #HIGH(-15000);Загрузить старший байт таймера mov TL0, #LOW(-15000);Загрузить младший байт таймераOjidanTimer: jnb TF0, OjidanTimer;Подождать пока не переполнится таймер В рассмотренном примере переполнение таймера произойдёт через 15000 циклов процессора, то есть через 15 мс. Программа будет постоянно проверять состояние флага переполнения таймера и как только он установится в единицу перейдёт к выполнению следующей команды. Нулевой и первый режимы работы таймеров T0 и T1 предназначены для формирования одиночного интервала времени. Если возникает необходимость формировать последовательность интервалов времени для периодических процессов, то загрузка регистров TH0 и TL0 для задания нужного интервала времени производится программно, что для коротких интервалов времени может привести к значительным затратам процессорного времени. Для формирования последовательности одинаковых интервалов времени используется режим работы таймера с перезагрузкой - режим 2.

Режим 2

В режиме 2 регистр таймера TLx работает как 8-битный счетчик с автоматической перезагрузкой начального значения из регистра ТНх в регистр TLx. Переполнение регистра TLx не только устанавливает флаг TFx, но и загружает регистр TLx содержимым регистра ТНх, который предварительно инициализируется программно. Перезагрузка не изменяет содержимое регистра ТНх. Работе таймера 0 или таймера 1 в режиме 2 соответствует схема:

Рисунок 4. Схема таймеров 0 или 1 в режиме 2.

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

;Настроить режим работы таймера------------------------------------------------------------------------------------------- mov TMOD, #00000010b;перевести таймер T0 во второй режим работы, а T1 - в нулевой;

||;

Синхронизироваться от внутреннего генератора;+-------Запретить управление таймером от ножки INT0;||++-------Перевести таймер T1 в тринадцатиразрядный режим;|+---------Синхронизироваться от внутреннего генератора;+----------Запретить управление таймером от ножки INT1 mov TMOD,#2;перевести таймер T0 во второй режим работы, а T1 - в нулевой mov TH0, #-50;Загрузить старший байт таймера mov TL0, #-50;Загрузить младший байт таймера OjidanTimer: jnb TF0, OjidanTimer;Подождать пока не переполнится таймер cpl P2.6;Проинвертировать сигнал на шестой ножке второго порта и sjmp OjidanTimer;снова перейти к ожиданию окончания временного интервала

Режим 3

Таймер 1 при работе в режиме 3 просто хранит свое значение. Эффект такой же как при сбросе бита TR1.

Таймер 0 в режиме 3 представляет собой два раздельных 8 битных счетчика (регистры TL0 и ТН0), Регистр TL0 использует биты управления таймера 0: С/Т0. GATE0, TR0 и TF0. Регистр ТН0 работает только в режиме таймера и использует биты TR1 и TF1 таймера 1. Таким образом, регистр ТН0 управляет прерыванием таймера 1. Логика работы таймера 0 в режиме 3 показана на схеме:

Рисунок 5. Схема таймерa 0 в режиме 3.

Работа таймера TL0 разрешается, если бит TR0 = 1, а таймера TH0 - если бит TR1 = 1. Таймер 1 при работе таймера 0 в режиме 3 постоянно включен.

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

Управление таймерами-счётчиками.

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

Рисунок 6. Схема управления таймерами 0 или 1.

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

Есть возможность управлять работой таймера извне при помощи внешней ножки T0 для таймера T0 или T1 для таймера T1. Для этого необходимо записать в бит GATEx логическую единицу (не забыв при этом разрешить работу таймера при помощи бита TRx).

Кроме того, таймер может синхронизироваться от внешнего генератора. Для этого в бит управления C/T нужно записать логическую единицу.

Биты включения таймеров TR0 и TR1 размещены в регистре TCON (control - управлять), а биты GATE и C/T в регистре TMOD. Формат регистра TCON приведён на следующем рисунке:

Рисунок 7. Формат регистра управления режимами работы таймеров TCON.

Символ Позиция Имя и назначение
TF1 TCON.7 Флаг переполнения таймера 1. Устанавливается аппаратно при переполнении таймера/счетчика. Сбрасывается при обслуживании прерывания аппаратно
TR1 TCON.6 Бит управления таймера 1. Устанавливается/сбрасывается программой для пуска/останова
TF0 TCON.5 Флаг переполнения таймера 0. Устанавливается аппаратурно. Сбрасывается при обслуживании прерывания
TR0 TCON.4 Бит управления таймера 0. Устанавливается / сбрасывается программой для пуска/останова таймера/счетчика
IE1 TCON.3 Флаг фронта прерывания 1. Устанавливается аппаратно, когда детектируется срез внешнего сигнала INT1. Сбрасывается при обслуживании прерывания
IT1 TCON.2 Бит управления типом прерывания 1. Устанавливается / сбрасывается программно для определения типа запроса прерывания INT1 (срезу/низким уровнем).
IE0 TCON.1 Флаг фронта прерывания 0. Устанавливается по срезу сигнала INT0. Сбрасывается при обслуживании прерывания
IT1 TCON.0 Бит управления типом прерывания 0. Устанавливается / сбрасывается программно для определения типа запроса прерывания INT0 (срез/низкий уровень)

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

Использование таймера в качестве измерителя ширины импульсов.

Известно, что измерение длительности импульса можно произвести, подсчитав импульсы эталонной частоты. Принцип измерения длительности импульсов иллюстрируется рисунком 8.

Для измерения длительности импульса измеряемый сигнал подаётся на вывод микроконтроллера INTx и в бит управления GATE записывается разрешающий сигнал логической единицы. Таймер/счётчик настраивается в режим таймера записью в бит C/Tx логического нуля. Содержимое таймера обнуляется.

Пример программы измерения длительности импульса приведён на рисунке 9.

Рисунок 8. Принцип измерения длительности импульсов

mov TMOD,#00001001b;

||;

Синхронизироваться от внутреннего генератора;|+-----Включать таймер от ножки микроконтроллера INT0;||++------Перевести таймер T1 в тринадцатиразрядный режим;|+--------Синхронизироваться от внутреннего генератора;+---------Запретить управление таймером от ножки INT1 mov TH0, #0;Обнулить старший байт таймера mov TL0, #0;Обнулить младший байт таймера setb TR0;Включить измеритель ширины импульса TstLog0: jnb INT0, TstLog0;Подождать начало импульсаTstLog1: jnb INT0, TstLog1;Подождать конец импульса Clr TR0;Отключить измеритель ширины импульса Рисунок 9. Программа измерения длительности импульсов Если теперь на вход микроконтроллера INT0 подать импульс с неизвестной длительностью, то в регистрах TH0 и TL0 будет записана его длительность в микросекундах. Использование таймера в качестве частотомера. Известно, что измерение частоты можно произвести, подсчитав количество периодов неизвестной частоты за единицу времени. Принцип измерения частоты иллюстрируется рисунком 10. Рисунок 10. Принцип измерения частоты Для измерения частоты измеряемый сигнал подаётся на вывод микроконтроллера Tx. Таймер/счётчик настраивается в режим счётчика записью в бит C/Tx логической единицы. Содержимое таймера обнуляется. Таймер включается на строго определённый интервал времени. Этот интервал задаётся оставшимся таймером. Пример программы измерения частоты сигнала на ножке микроконтроллера T0 приведён на рисунке 11. mov TMOD,#00010101b;

||;

Работать от сигнала на ножке T0;|+----------Запретить управление таймером от ножки INT0;||++-----------Перевести таймер T1 в шестнадцатиразрядный режим;|+-------------Синхронизироваться от внутреннего генератора;+--------------Запретить управление таймером от ножки INT1 mov TH0, #0;Обнулить старший байт счётчика mov TL0, #0;Обнулить младший байт счётчика;---измерение вести 1 мс--------------------------------------------------------- mov TH1, #HIGH(-1000);Загрузить старший байт таймера mov TL1, #LOW(-1000);Загрузить младший байт таймера mov TCON,#01010000b;Включить частотомер;

||;

Сбросить запрос прерывания от ножки INT1;+-----------Включить таймер T0;||+------------Обнулить флаг таймера T0;|+-------------Включить таймер T1;+--------------Обнулить флаг таймера T1 TstTimeOut: jnb TF1, TstTimeOut;Если 1 мс прошла mov TCON, #00000000b;то отключить частотомер;

||;

Сбросить запрос прерывания от ножки INT1;+-----------Отключить таймер T0;||+------------Обнулить флаг таймера T0;|+-------------Отключить таймер T1;+--------------Обнулить флаг таймера T1 Рисунок 11. Программа измерения частоты Если теперь на вход микроконтроллера T0 подать сигнал с неизвестной частотой, то в регистрах TH0 и TL0 будет записана его частота в килогерцах.  

Блок управления и синхронизации

Блок управления и синхронизации (Timing and Control) предназначен для выработки синхронизирующих и управляющих сигналов, обеспечивающих координацию совместной работы блоков ОЭВМ во всех допустимых режимах ее работы.В состав блока управления входят:

  • устройство формирования временных интервалов,
  • логика ввода-вывода,
  • регистр команд,
  • регистр управления потреблением электроэнергии,
  • дешифратор команд, логика управления ЭВМ.

Устройство формирования временных интервалов предназначено для формирования и выдачи внутренних синхросигналов фаз, тактов и циклов. Количество машинных циклов определяет продолжительность выполнения команд. Практически все команды ОЭВМ выполняются за один или два машинных цикла, кроме команд умножения и деления, продолжительность выполнения которых составляет четыре машинных цикла. Обозначим частоту задающего генератора через Fг. Тогда длительность машинного цикла равна 12/Fг или составляет 12 периодов сигнала задающего генератора. Логика ввода - вывода предназначена для приема и выдачи сигналов, обеспечивающих обмен информации с внешними устройствами через порты ввода вывода Р0-Р3.

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

Регистр управления потреблением (PCON) позволяет останавливать работу микроконтроллера для уменьшения потребления электроэнергии и уменьшения уровня помех от микроконтроллера. Еще большего уменьшения потребления электроэнергии и уменьшения помех можно добиться, остановив задающий генератор микроконтроллера. Этого можно достичь при помощи переключения бит регистра управления потреблением PCON. Для варианта изготовления по технологии n-МОП (серия 1816 или иностранных микросхем, в названии которых в середине отсутствует буква 'c') регистр управления потреблением PCON содержит только один бит, управляющий скоростью передачи последовательного порта SMOD, а биты управления потреблением электроэнергией отсутствуют.

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

  • регистров аккумулятора, регистров временного хранения TMP1 и TMP2,
  • ПЗУ констант,
  • сумматора,
  • дополнительного регистра (регистра В),
  • аккумулятора (ACC),
  • регистра состояния программ (PSW).

Регистр аккумулятор и регистры временного хранения - восьмиразрядные регистры, предназначенные для приема и хранения операндов на время выполнения операций над ними. Эти регистры программно не доступны.

ПЗУ констант обеспечивает выработку корректирующего кода при двоично-десятичном представлении данных, кода маски при битовых операциях и кода констант.

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

Регистр B - восьмиразрядный регистр, используемый во время операций умножения и деления. Для других инструкций он может рассматриваться как дополнительный сверхоперативный регистр.

Аккумулятор - восьмиразрядный регистр, предназначенный для приема и хранения результата, полученного при выполнении арифметико-логических операций или операций сдвига

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

  1. буфер ПИП,
  2. логика управления,
  3. регистр управления,
  4. буфер передатчика,
  5. буфер приемника,
  6. приемопередатчик последовательного порта,
  7. регистр приоритетов прерываний,
  8. регистр разрешения прерываний,
  9. логика обработки флагов прерываний и схема выработки вектора.

Счетчик команд (Program Counter) предназначен для формирования текущего 16-разрядного адреса внутренней памяти программ и 8/16-разрядного адреса внешней памяти программ. В состав счетчика команд входят 16-разрядные буфер РС, регистр РС и схема инкремента (увеличения содержимого на 1).

Память данных (RAM) предназначена для временного хранения информации, используемой в процессе выполнения программы.

Порты P0, P1, P2, P3 являются квазидвунаправленными портами ввода - вывода и предназначены для обеспечения обмена информацией ОЭВМ с внешними устройствами, образуя 32 линии ввода- вывода.

Регистр состояния программы (PSW) предназначен для хранения информации о состоянии АЛУ при выполнении программы.

Память программ (EPROM) предназначена для хранения программ и представляет собой постоянное запоминающее устройство (ПЗУ). В разных микросхемах применяются масочные, стираемые ультрафиолетовым излучением или FLASH ПЗУ.

Регистр указателя данных (DPTR) предназначен для хранения 16 - разрядного адреса внешней памяти данных или памяти программ.

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

Построение памяти микроконтроллеров семейства MCS-51

Микроконтроллеры семейства MCS-51 построены по Гарвардской архитектуре. Это означает, что память данных и память программ в этих микросхемах разделены и имеют отдельное адресное пространство. В этих микроконтроллерах имеется пять адресных пространств: память программ, внешняя память данных три для внутренней памяти. Такое построение памяти позволяет удвоить доступное адресное пространство. Кроме того такое построение памяти позволяет в ряде случаев увеличить быстродействие микросхем.

Схема подключения внешних микросхем памяти к микроконтроллерам семейства MCS-51 показана на рисунке 1. Регистр адреса D3 на этой схеме предназначен для запоминания младших 8-ми бит адреса, передаваемых через шину данных/памяти, совмещенную с портом P0. Старшие восемь бит адреса передаются через шину адреса, совмещенную с портом P2. Во время передачи адреса через порт P0, микроконтроллер вырабатывает синхроимпульс на ножке ALE. Именно этот импульс позволяет запомнить младший байт адреса в регистре D3.

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

Рисунок 1. Схема подключения схем внешней памяти к микроконтроллерам семейства MCS-51

Память программ микроконтроллеров MCS-51

Память программ предназначена для хранения программ и имеет отдельное от памяти данных адресное пространство объемом 64 Кбайт, причем для некоторых микросхем (например КР1816ВЕ51, КМ1819ВЕ751, КР1830ВЕ51) для хранения программ на кристалле микроконтроллера расположено ПЗУ. Это ПЗУ отображается в область млаших адресов памяти программ. Учитывая, что выполнение программы после сброса микроконтроллера всегда начинается с нулевого адреса памяти программ, то при включении питания начнет выполняться программа, записанная во внутненнем ПЗУ микроконтроллера. Микроконтроллеры, не имеющие внутреннего ПЗУ (например КР1816ВЕ31 и КР1830ВЕ31) могут работать только с внешней микросхемой ПЗУ емкостью до 64 Кбайт (при использовании портов P1 и P3 в качестве расширителя адреса объем подключаемой ПЗУ может быть увеличен до 1Гбайта). Микроконтроллеры семейства MCS-51 имеют внешний вывод EA, с помощью которого можно запретить работу внутренней памяти, для чего необходимо подать на вывод EA логический "0" (соединить этот вывод с корпусом). При этом внутренняя память программ отключается и, начиная с нулевого адреса, все обращения происходят к внешней памяти программ.

Доступ к внешней памяти программ осуществляется в двух случаях:

  1. при действии сигнала EA=0 независимо от адреса обращения,
  2. в любом случае, если программный счетчик (РС) содержит число большее, чем максимальная ячейка внутренней памяти программ.

Распределение памяти программ микроконтроллера КР1830ВЕ51 представлено ниже:

Для чтения памяти программ используются команды MOVC A, A+@DPTR и MOVC A, A+@PC

Рисунок 2. Адресное пространство памяти программ.

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

Ниже приведены адреса векторов прерываний и соответствующие им аппаратурные источники прерываний программы:

Вектор прерывания Флаги, вызывающие прерывание Источник прерывания
0000Н - Рестарт (сброс) контроллера RESET
0003Н IE0 внешнее прерывание INT0
000bН TF0 Таймер 0
0013Н IE1 внешнее прерывание INT1
001bН TF1 Таймер 1
0023Н RI, TI Последовательный порт
002bН TF2, EXF2 Таймер 2
0033Н CF, CCFn(n=0:4) Набор программируемых счётчиков (РСА)
003bН AIF Аналого-цифровой преобразователь
0043Н CF1,C1CCFn(n=1:4) Набор программируемых счётчиков (РСА1)
004bН SEPIF Последовательный порт SEP
0053Н IE2 внешнее прерывание INT2
005bН IE3 внешнее прерывание INT3
0063Н IE4 внешнее прерывание INT4
006bН IE5 внешнее прерывание INT5
0073Н IE6 внешнее прерывание INT6

Примечание: вектора прерывания, выделенные:

  1. жирным подчеркнутым текстом - присутствуют во всех микросхемах семейства;
  2. жирным текстом- отсутствуют в микросхемах 8051,8031, КР1816ВЕ31, КР1816ВЕ51, КР1816ВЕ751 КР1830ВЕ31, КР1830ВЕ51, КР1830ВЕ751;
  3. обычным текстом- присутствуют только в микросхемах 8Х51FA, FB, FC и GB
  4. курсивом - присутствуют только в микросхеме 8Х51GB

Внешняя память данных микроконтроллеров MCS-51

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







ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...

Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.