Архитектура микропроцессоров

Архитектура однокристального микроконтроллера

Показывать лекцию целиком

Структура микроконтроллера МК-51

Архитектура однокристальных микроконтроллеров MCS-51, разработанная фирмой Intel, стала де-факто стандартной для этого типа микропроцессоров. Микропроцессоры, имеющие такую архитектуру, с определенными модификациями выпускаются различными фирмами. В нашей стране микроконтроллеры данной архитектуры относятся к семейству МК-51 и в настоящее время содержат следующие схемы: К1816ВЕ31, К1816ВЕ51, К1816ВЕ751, К1830ВЕ31, К1830ВЕ51. Все они являются функционально завершенными и содержат на кристалле все необходимые узлы для построения законченной системы управления минимальной конфигурации. Основные электрические характеристики этих схем представлены в табл. 14.1.

Характеристики БИС семейства МК-51
Микросхема Аналог Емкость внутренней памяти программ, байт Тип памяти программ Ток потребления,мА
К1816ВЕ31 8031AH - внешняя 150
К1816ВЕ51 8051AH 4K ПЗУ 150
К1816ВЕ751 8751H 4K ППЗУ 220
К1830ВЕ31 80C31BH - внешняя 18
К1830ВЕ51 80C51BH 4K ПЗУ 18

Все приведенные в табл. 14.1 м микроконтроллеры имеют емкость внутренней памяти данных в 128 бит и максимальную внешнюю тактовую частоту - 12 МГц.

Дальнейшее описание будет относиться к микросхеме К1816ВЕ51, если иное не оговорено особо.

Структурная схема МК-51 представлена на рис. 14.1.

МК содержит:

  • арифметико-логический блок (АЛБ), включающий в себя:
  • 8-разрядное АЛУ;(рис 14.1) Структурная схема однокристального микроконтроллера семейства МК-51
  • регистр-аккумулятор A и дополнительный регистр-аккумулятор B, использующиеся при выполнении операций умножения и деления;
  • битовое АЛУ;
  • битовый аккумулятор, находящийся в разряде C слова состояния процессора PSW, который в байтовых арифметических операциях фиксирует сигнал переноса;
  • внутреннюю память программ емкостью 4 Кбайт, в которой также могут храниться константы;
  • внутреннюю память данных емкостью 128 байт, используемую для организации банков регистров общего назначения, стека и хранения пользовательских данных; часть этой памяти имеет побитовый доступ;
  • 32 двунаправленных интерфейсных линии, индивидуально настраиваемых на ввод или вывод информации и организованных в виде четырех 8-разрядных портов P0-P3;
  • два 16-разрядных многорежимных таймера/счетчика TC0 и TC1, используемых для организации временных задержек, внешних событий (количества сигналов, поступающих по внешним входам Т0 и Т1) и тактирования последовательного порта;
  • двунаправленный дуплексный асинхронный последовательный порт;
  • двухуровневую приоритетную маскируемую систему прерываний от трех внутренних источников (таймеров/счетчиков и последовательного порта) и двух внешних, поступающих по входам INT0 и INT1;
  • устройство управления (УУ);
  • встроенный тактовый генератор (ТГ), тактирование которого проводится внешним генератором с частотой fBQ; частота машинного цикла составляет fBQ / 12, время выполнения команд МК составляет 1-4 периода машинного цикла.
  • Формат регистра PSW представлен в табл. 14.2.

    Назначение разрядов регистра слова состояния процессора
    Позиция в регистре Мнемоника бита Функция
    7 C Перенос в арифметических операциях.Битовый аккумулятор в логических операциях
    6 AC Флаг вспомогательного переноса. Устанавливается и сбрасывается аппаратно при выполнении сложения и вычитания и сигнализирует о переносе или займе в бите 3
    5 FO Флаг, специфицируемый пользователем
    4 RSI Номер рабочего банка регистров
    3 RSO Номер рабочего банка регистров
    2 OV Переполнение в арифметических операциях
    1 - Не используется
    0 P Признак четности числа единиц в аккумуляторе

    Организация памяти

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

    Память данных

    Память данных, расположенная на кристалле (внутренняя память данных), имеет емкость 128 байт с адресами 00h-7Fh. Она может быть расширена до 64 Кбайт за счет подключения блоков внешней памяти данных.

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

    Распределение адресного пространства ОЗУ показано на рис. 14.2.

    (рис 14.2) Структура внутренней памяти данных

    Младшие 32 байта внутреннего ОЗУ данных сгруппированы в 4 банка по 8 регистров общего назначения в каждом (БАНК 0-БАНК 3). Определение рабочего в данный момент банка, то есть банка регистров, к которому обращается программа при использовании имен R0-R7, осуще ствляется установкой битов RS0 и RS1 в регистре слова состояния PSW.

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

    ОЗУ данных с адресами 20h-2Fh образует область ячеек, к которым возможен побитный доступ. Система команд МК-51 содержит значительное количество инструкций, позволяющих работать с отдельными битами, используя при этом прямую адресацию. 128 бит, составляющие рассматриваемую область внутреннего ОЗУ данных, имеют адреса бит 00h-7Fh и предназначены для работы с такими инструкциями. Таким образом, к ячейке с адресом, например, 21h можно обратиться как к байту, используя ее прямой адрес 21h, а можно обратиться к ее отдельным битам с помощью команд, работающих с битовой информацией. При этом младший бит этого байта имеет адрес 08h, а старший - 0Fh.

    Ячейки памяти с адресами 30h-7Fh используются как обычная оперативная память.

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

    Адресное пространство внутренней памяти данных с адресами 80h-FFh отведено под указание регистров специальных функций микропроцессора. Область регистров специальных функций содержит регистры-защелки портов ввода-вывода, регистры таймеров/счетчиков, регистры управления и т. п. Эти регистры допускают только прямую адресацию.

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

    К внешней памяти данных можно обращаться только на запись или чтение с помощью специальных команд. Эти команды осуществляют обмен информацией между внешней памятью данных и аккумулятором микроконтроллера и не влияют на внутреннюю память данных МК. Таким образом, в системе могут одновременно присутствовать внутренняя память данных с адресами 00h-0Fh и внешняя память данных с адресами 0000h-FFFFh.

    Память программ

    В зависимости от модификации, различные типы БИС МК-51 имеют разное распределение внутренней и внешней памяти программ (см.табл. 14.1)), оставляя неизменной максимально допустимую общую емкость в 64 Кбайт. Память программ адресуется с помощью 16-разрядной адресной шины с использованием счетчика команд (program counter -PC), который вырабатывает 16-разрядные адреса. Она имеет байтовую организацию и доступна только для чтения.

    Обращение к внутренней или внешней памяти программ происходит автоматически с применением аппаратных средств МК. При этом в зависимости от состояния управляющего входа DEMA микроконтроллера вся память трактуется либо как только внешняя (при DEMA = 0), либо как внутренняя, занимающая младшие адреса адресного пространства, и внешняя, занимающая адреса от старшего адреса внутренней памяти 8000h до максимально допустимого FFFFh. С точки зрения программиста имеется только один массив памяти программ емкостью 64 Кбайт.

    По сигналу сброса, поступающему на вход Reset, в микроконтроллере выполняются следующие действия:

  • Устанавливаются в ноль программный счетчик PC и все регистры специальных функций, кроме защелок портов P0-P3, указателя стека SP и регистра SBuf последовательного порта, что приводит к:

  • запрету всех прерываний;
  • остановке работы таймеров-счетчиков и последовательного порта;
  • выбору Банка 0 регистров;
  • началу работы любой программы с адреса 0 (программный счетчик РС = 0).
  • Указатель стека (SP) устанавливается в состояние SP = 07. SP указывает на верхнюю занятую ячейку стека. При обращении к стеку на запись сначала значение SP увеличивается на 1, а затем производится запись во внутреннюю память данных по адресу, хранящемуся в SP. Считывание из стека производится по адресу, хранящемуся в SP, после чего значение SP уменьшается на 1. Таким образом, стек располагается в начальный момент начиная с адреса 8. Его положение в памяти можно переопределить, записав в SP другое число.
  • Защелки всех линий портов P0-P3 устанавливаются в 1, настраивая их на ввод информации.
  • В регистр SBuf последовательного порта и в ОЗУ записываются случайные значения.
  • Система команд

    Микроконтроллер имеет достаточно простую систему из 111 команд, допускающую только следующие режимы адресации:

  • прямая к памяти данных (память данных или регистры специальных функций);
  • косвенная к памяти данных (допустима только с использованием регистров R0 и R1 рабочего банка регистров);
  • прямая к регистрам;
  • непосредственная;
  • прямая к битам (в битовой памяти или в регистрах специальных функций, адреса которых кратны восьми, то есть заканчиваются на 000b).
  • Система команд микроконтроллера МК-51 приведена в табл. 14.3.

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

    Система команд микроконтроллера МК-51
    Мнемоника Режимы адресации Время выполнения,такт Действие
    Арифметические инструкции
    ADD,A,byte Dir,Ind,Reg,Imm 1 A=A+byte
    ADDC A,byte Dir,Ind,Reg,Imm 1 A=A+byte+C
    DA A Аккумулятор 1 Десятичная коррекция
    DEC A Аккумулятор 1 A=A-1
    DEC byte Dir,Ind,Reg 1 byte=byte-1
    DIV AB Аккумулятор и B 4 A=[A/B],B=mod(A/B)
    INC A Аккумулятор 1 A=A+1
    INC byte Dir,Ind,Reg 1 byte=byte+1
    INC DPTR DPTR 2 DPTR=DPTR+!
    MUL AB Аккумулятор и B 4 B,A=B*A
    SUBC A,byte Dir,Ind,Reg,Imm 1 A=A-byte-C
    Логические инструкции
    ANL A,byte Dir,Ind,Reg,Imm 1 A=Abyte
    ANL byte,A Dir 1 byte= byteA
    ANL byte,#data Dir 2 byte= byte#data
    CLR A Аккумулятор 1 A=00h
    CPL A Аккумулятор 1 A=^(A)
    ORL A,byte Dir,Ind,Reg,Imm 1 A=A v byte
    ORL byte,A Dir 1 byte=byte v A
    ORL byte,#data Dir 2 byte=byte v # data
    RL A Аккумулятор 1 A=(A)ЦСЛ на 1бит
    RLC A Аккумулятор 1 A=(A)ЦСЛ на 1бит через С
    RR A Аккумулятор 1 A=(A)ЦСП на 1бит
    RRC A Аккумулятор 1 A=(A)ЦСП на 1бит через С
    A=(A)ЦСП на 1бит через С Аккумулятор 1 A(7...4) <=> A(3...0)
    XRL A,byte Dir,Ind,Reg,Imm 1 $$A=A\approx byte$$
    XRL byte,A Dir 1 $$byte= byte\approx A$$
    XRL byte,#data Dir 2 $$byte= byte\approx \#data$$
    Инструкции передачи данных во внутренней памяти данных
    MOV A,src Dir,Ind,Reg,Imm 1 A=src
    MOV dest, A Dir,Ind,Reg 1 dest=A
    MOV dest, src Dir,Ind,Reg,Imm 1 dest=src
    MOV DPTR,#data Imm 2 DPTR=data
    PUSH src Dir 2 SP=SP+1; @SP=src
    POP dest Dir 2 dest=@SP; SP=SP-1
    XCH A,byte Dir,Ind,Reg 1 A <=> byte
    XCHD A,@Ri Ind 1 A <=> @Ri
    Инструкции передачи данных,использующие внешнюю память данных
    MOVX A,@Ri 2 A=@Ri
    MOVX @Ri,A 2 @Ri=A
    MOVX A,@DPTR 2 A=@DPTR
    MOVX @DPTR,A 2 @DPTR=A
    Инструкции передачи данных, использующие память программ
    MOVC A,@A+DPTR 2 A=@(A+DPTR)
    MOVC A,@A+PC 2 A=@(A+PC)
    Булевы инструкции
    ANL C,bit bit 2 C=C bit
    ANL C,/bit bit 2 C=C ^bit
    CLR C Битовый aккумулятор 1 C=0
    CLR bit bit 1 bit=0
    CPL C Битовый aккумулятор 1 C=^C
    CPR bit bit 1 bit=^bit
    JC rel 2 Переход,если С=1
    JNC rel 2 Переход,если С=0
    JB bit,rel bit 2 Переход,если bit=1

    Примечания

  • Режимы адресации:
  • Dir - прямая (регистры специальных функций или память данных);
  • INd - косвенная (допустима только относительно регистров R0 и R1 ; в символической записи команды обозначается @R0 или @R1 соответственно);
  • Reg - прямая к регистрам;
  • Imm - непосредственная (в символической записи команды начинается с # );
  • bit - прямоадресуемый бит (в битовой памяти или регистрах специальных функций);
  • C - битовый аккумулятор (бит CY в регистре состояния PSW );
  • запись "byte" в графе "Мнемоника" означает, что операнд в этом поле может адресоваться с помощью любого режима адресации из указанных в графе "Режимы адресации";
  • командах, допускающих прямую, но не регистровую адресацию, может указываться регистр общего назначения, однако при трансляции команды в машинное представление его номер будет в этом случае представлен не трех-, а 8-разрядным двоичным кодом, соответствующим прямому адресу этого регистра в памяти данных; некоторые Ассемблеры требуют для таких команд указания в явном виде номера регистра в виде прямого адреса ячейки памяти данных.
  • Действия:
  • инструкции MUL AB производится перемножение содержимого аккумулятора A и дополнительного аккумулятора B. Старшие разряды произведения помещаются в аккумулятор A, а младшие - в регистр B.
  • инструкции DIV AB содержимое аккумулятора A нацело делится на содержимое регистра B. Частное помещается в аккумулятор A, а остаток - в регистр B. Операнды рассматриваются как целые числа без знака.
  • - конъюнкция.
  • v- дизъюнкция.
  • $$\oplus$$ "исключающее ИЛИ".
  • $$\wedge$$ - логическое "НЕ".
  • ЦСЛ - циклический сдвиг влево.
  • ЦСП - циклический сдвиг вправо.
  • операциях сдвига через С участвует 9-разрядный регистр (8разрядный аккумулятор и бит переноса С).
  • <=> - обмен местами операндов.
  • инструкции XCHD A,@Ri осуществляется обмен только младших тетрад операндов.
  • инструкциях переходов:
  • безусловных переходов adr показывает, что в команде кодируется абсолютный адрес памяти программ, по которо му осуществляется переход;
  • для условных переходов rel показывает, что в команде кодируется относительный адрес памяти программ, по которому осуществляется переход при выполнении указанного условия;
  • всех командах перехода при записи программы на ассемблере адрес перехода может быть задан меткой целевой команды.
  • Некоторые Ассемблеры для инструкции вызова подпрограммы и инструкции безусловного перехода требуют от программиста явного указания длины генерируемого адреса перехода, то есть записи в программе инструкций ACALL, LCALL, AJMP, LJMP, SJMP, и не воспринимают инструкции CALL, JMP. Другие Ассемблеры самостоятельно генерируют инструкции, имеющие необходимую длину поля адреса в зависимости от места расположения адреса перехода, и поэтому допускают использование инструкций CALLи JMP.
  • Основные функциональные блоки микроконтроллера МК-51 Система прерываний

    Системы прерываний - важная часть любой управляющей системы.

    От ее работы во многом зависит то, насколько эффективно микропроцессорная система выполняет свои функции. Общая структура системы прерываний МК-51 представлена на рис. 14.3.

    (рис 14.3) Структура системы прерываний

    Микроконтроллеры семейства МК-51 обеспечивают поддержку пяти источников прерываний:

  • двух внешних прерываний, поступающих по входам INT0 и INT1 (линии порта Р3: Р3.2 и Р3.3 соответственно);
  • двух прерываний от таймеров/счетчиков Т/С0 и Т/С1;
  • прерывание от последовательного порта.
  • Запросы на прерывание фиксируются в регистрах специальных функций микроконтроллера: флаги IE0, IE1, TF0, TF1 запросов на прерывание от INT0, INT1, T/C0 и T/C1 содержатся в регистре управления TCON (табл. 14.4), а флаги RI и TI запросов на прерывание от последовательного порта - в регистре SCON управления последовательным портом.

    Формат регистра TCON
    Позиция в регистре Мнемоника бита Функция
    0 IT0 Настройка вида прерывания INT0
    1 IE0 Флаг запроса прерывания INT0
    2 IT1 Настройка вида прерывания INT1
    3 IE1 Флаг запроса прерывания INT1
    4 TR0 Включение в работу таймера/счетчика 0
    5 TF0 Флаг переполнения (запрос прерывания)таймера/счетчика 0
    6 TR1 Включение в работу таймера/счетчика 1
    7 TF1 Флаг переполнения (запрос прерывания)таймера/счетчика 1

    Флаги TF0 и TF1 устанавливаются аппаратно при переполнении соответствующего таймера/счетчика (точнее, при переходе T/Cx из состояния "все единицы" в состояние "все нули").

    Флаги IE0 и IE1 устанавливаются аппаратно от внешних прерываний IT0 и IT1 соответственно. Внешний запрос может вызвать установку флага либо при низком уровне сигнала на соответствующем входе, либо при переключении этого сигнала с высокого уровня на низкий (с частотой, не превышающей половины частоты внешней синхронизации МК).

    Настройка на тип запроса осуществляется программной установкой бит IT0 и IT1 в регистре управления TCON. Установка ITx = 0 настраивает систему прерывания на запрос по низкому уровню сигнала, ITx = 1 - запрос на прерывание по спаду сигнала.

    Флаги TI и RI устанавливаются аппаратно схемой последовательного интерфейса после окончания передачи или после окончания приема соответственно.

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

    Флаги TF0 и TF1 сбрасываются аппаратно при передаче управления программе обработки соответствующего прерывания.

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

    Флаги TI и RI сбрасываются только программным путем.

    Каждый вид прерывания индивидуально разрешается или запрещается установкой или сбросом соответствующих разрядов регистра разрешения прерывания IE. Этот регистр содержит также и бит общего запрещения всех прерываний. Формат регистра IE приведен в табл. 14.5.

    Назначение разрядов регистра IE
    Позиция в регистре Мнемоника бита Функция
    7 EA апрет прерывания от всех источников
    6 - Не используется
    5 - Не используется
    4 ES Запрет прерывания от последовательного порта
    3 ET1 Запрет прерывания от таймера/счетчика T/C1
    2 EX1 Запрет прерывания от внешнего источника INT1
    1 ET0 Запрет прерывания от таймера/счетчика T/C0
    0 EX0 Запрет прерывания от внешнего источника INT0

    Каждому виду прерывания может быть программно присвоен один из двух возможных приоритетов: 0 - низший или 1 - высший.

    Настройка приоритетов осуществляется установкой или сбросом соответствующего бита регистра приоритетов прерываний IP. Формат этого регистра приведен в табл. 14.6.

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

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

    IT0 -> TF0 -> IT1 -> TF1 -> (RI, TI)

    Назначение разрядов регистра IP
    Позиция в регистре Мнемоника бита Функция
    7 - Не используется
    6 - Не используется
    5 - Не используется
    4 PS Приоритет прерыванияот последовательного порта
    3 PT1 Приоритет прерывания от таймера/счетчика T/C1
    2 PX1 Приоритет прерыванияот внешнего источника INT1
    1 PT0 Приоритет прерывания от таймера/счетчика T/C0
    0 PX0 Приоритет прерыванияот внешнего источника INT0

    Аппаратно реализуемый вызов обработчика прерываний состоит из следующих действий:

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

    Адреса точек входа в обработчики прерываний
    Источник прерывания Адреса точек входа в обработчики прерываний
    Внешнее прерывания( ITO ) 03h
    Таймер-счетчик( TFO ) 0Bh
    Внешнее прерывания( IT1 ) 13h
    Таймер-счетчик( TF1 ) 1Bh
    Последовательный порт( R1 или T1 ) 23h

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

    При переходе на подпрограмму обработки прерывания автоматически независимо от состояния регистра IE запрещаются все прерывания, которые имеют уровень приоритета, равный уровню приоритета обслуживаемого прерывания, - то есть вложенные прерывания с равным уровнем приоритета запрещены. Таким образом, низкоприоритетное прерывание (имеющее "0" в соответствующем разряде регистра IP ) может прерываться высокоприоритетным (имеющим "1" в соответствующем разряде регистра IP ), но не низкоприоритетным. Обслуживание высокоприоритетного прерывания не может быть прервано другим источником.

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

    Блок таймеров/счетчиков

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

    В состав блока Т/С входят следующие основные элементы:

  • два 16-разрядных регистра Т/С0 и Т/С1,
  • 8-разрядный регистр режимов TMOD,
  • 8-разрядный регистр управления TCON,
  • схема инкремента,
  • схемы управления.
  • Регистры Т/С0 и Т/С1 выполняют функцию хранения текущего состояния счетчика. Каждый из них состоит из пары 8-разрядных регистров: (ТН0, TL0) для Т/С0 и (TH1, TL1) для Т/С1. Регистры ТН0 и TH1 содержат старшие, а регистры ТL0 и TL1 - младшие разряды регистров Т/С0 и Т/С1. Каждый из этих регистров программно доступен по записи и чтению.

    Начальное значение счета заносится в регистры ТHx и TLx таймера/счетчика программно. В процессе счета содержимое регистров Т/С инкрементируется. Перенос, возникающий при выполнении счета, фиксируется в бите TFx регистра TCON и может быть использован в качестве запроса прерывания.

    Назначение разрядов регистра режимов TMOD показано в табл. 14.8.

    Формат регистра TMOD
    Позиция в регистре Мнемоника бита Функция
    7 GATE1

    Разрешение управления Т/С1 от внешнего входа IT1:

    0 - управление запрещено

    1 - управление разрешено

    6 C/T1

    0 - работа Т/С1 в режиме таймера

    1 - работа Т/С1 в режиме счетчика внешних событий

    5 M1.1

    Номер режима работы Т/С1

    (00 - режим 0, ..., 11 - режим 3)

    4 M0.1

    Номер режима работы Т/С1

    (00 - режим 0, ..., 11 - режим 3)

    3

    2

    1

    0

    GATE0

    C/T0

    M1.0

    M0.0

    Функции аналогичны битам 7-5,но для Т/С0

    Включение/выключение таймера/счетчика в работу производится битами TR1 и TR0 регистра управления TCON. Они устанавливаются и сбрасываются программно, доступны по чтению. Установка бита в "1" приводит к включению в работу соответствующего таймера/счетчика, а сброс этого бита в "0" приводит к его остановке.

    Таймеры/счетчики могут функционировать в одном из четырех режимов, определяемых разрядами M1.x и M0.x регистра TMOD. Режимы 0, 1, 2 полностью идентичны для обоих таймеров/счетчиков. Установка таймера/счетчика 0 в режим 3 влияет на режим работы таймера/счетчика 1.

    Режим 0. Таймер/счетчик представляет собой устройство на основе 13-разрядного регистра, состоящего из 8-разрядного регистра TH и пяти младших разрядов регистра TL. Логика работы таймера/счетчика в режиме 0 показана на рис. 14.4 на примере T/C1. Влияние управляющих сигналов TR1, GATE1, C/T1 и сигнала внешнего управления INT1 на работу таймера/счетчика представлено в табл. 14.9.

    (рис 14.4) Логика работы таймера/счетчика 1 в режиме 0
    Управление работой таймера/счетчика T/C1
    TR1 GATE1 INT1 C/T1 Выполняемая функция
    0 X X X Останов
    1 0 X 1 Счет в режиме таймера
    1 0 X 1 Счет в режиме счетчика внешних событий
    1 1 1 X Останов
    1 1 1 0 Счет в режиме таймера
    1 1 1 1 Счет в режиме счетчика внешних событий

    При работе таймера/счетчика в режиме счетчика внешних событий его содержимое увеличивается каждый раз при переключении из "1" в "0" сигнала на счетном входе микроконтроллера (вывод T0 (P3.4) для T/C0 и вывод T1 (P3.5) для T/C1). При этом частота изменения сигналов на счетном входе должна быть как минимум в 2 раза ниже внешней частоты синхронизации микроконтроллера.

    Режим 1. Аналогичен режиму 0, за исключением того, что в этом режиме таймер/счетчик представляет собой устройство на основе не 13-разрядного, а 16-разрядного регистра, состоящего из регистров THx и TLx.

    Логика работы таймера/счетчика в этом режиме полностью соответствует режиму 0.

    Режим 2. Таймер/счетчик представляет собой устройство на основе 8-разрядного регистра TL. При каждом переполнении регистра TL, кроме установки в регистре TCON флага TF, происходит автоматическая перезагрузка содержимого регистра TL из регистра TH.

    Логика работы таймера/счетчика в этом режиме также соответствует режиму 0.

    Режим 3. В режиме 3 T/C1 заблокирован и просто сохраняет свое состояние.

    Таймер/счетчик T/C0 в режиме 3 представляет собой два независимых устройства на основе 8-разрядных регистров TH0 и TL0. Устройство на основе регистра TL0 может работать как в режиме таймера, так и в режиме счетчика внешних событий. За ним сохраняются все биты управления T/C0, оно реагирует на воздействия по входам T0 и INT0. При переполнении TL0 устанавливается флаг TF0. Устройство на основе регистра TH0 может работать только в режиме таймера. Оно использует бит включения TR1, при переполнении TH0 устанавливается флаг TF1. Других битов управления устройство на основе TH0 в этом режиме не имеет. Логи ка работы T/C0 в режиме 3 показана на рис. 14.5.

    (рис 14.5) Логика работы таймера/счетчика 0 в режиме 3

    Установка T/C0 в режим 3 лишает T/C1 бита включения TR1. Поэтому T/C1 в режимах 0, 1, 2 при GATE1 = 0 всегда включен и при переполнении в режимах 0 и 1 T/C1 обнуляется, а в режиме 2 перезагружается, не устанавливая флаг, если IT/C0 находится в режиме 3. Управление от входов INT1, T1 и использование бит управления C/T1, GATE1 для T/C1 не зависят от режима IT/C0.

    T/C1 аппаратно связан с блоком синхронизации последовательного интерфейса (ПИ). При работе в режимах 0, 1, 2 при переполнении T/C1 всегда вырабатывается импульс, который может использоваться для тактирования ПИ. Поэтому режим 3 для IT/C0 удобно применять тогда, когда требуется работа ПИ, тактируемого таймером/счетчиком 1, и двух таймеров/счетчиков или ПИ, таймера и счетчика.

    Когда IT/C0 переведен в режим 3, T/C1 можно выключить, переведя его также в режим 3, использовать с последовательным портом для выработки импульсов тактирования или в любых других приложениях, не требующих прерывания.

    В качестве примера использования блока таймеров/счетчиков рассмотрим следующую задачу.

    Необходимо подсчитать количество деталей, прошедших по конвейеру за определенный промежуток времени, например, 1 минуту. При этом подсчет должен проводиться в фоновом режиме, не отвлекая основные ресурсы микроконтроллера от решения других задач, например, управления тем же самым конвейером. Кроме того, если конвейер остановлен, то для исключения ложных срабатываний датчиков подсчет в это время проводиться не должен. Вывод полученных значений проводится на порты P1 и P2 микроконтроллера.

    Таймер/счетчик Т/С0 будем применять в режиме таймера для отсчета необходимого интервала времени. В режиме 1, использующем полную длину разрядной сетки, таймер/счетчик выдает запрос прерывания через каждые 216 машинных циклов, что при частоте внешней синхронизации fbq = 12 МГц составляет 65 536 мкс. Чтобы отсчитать интервал времени в 1 мин, необходимо примерно 915 входов в обработчик прерывания. Для отсчета этой величины используются регистр R0 с начальным значением 183 и регистр R1 с начальным значением 5.

    Таймер/счетчик Т/С1 задействуем в режиме счета внешних событий с разрешением внешнего управления по входу INT1, на который подадим сигнал от двигателя конвейера. Для считывания его показаний без прекращения счета используется следующий прием. Сначала считывается значение из старшего байта TH1 таймера/счетчика, а затем из младшего байта TL1. После этого проверяется, не изменилось ли показание старшего байта за время чтения младшего, и лишь после этого результат считается принятым. Такой подход предохраняет от грубых ошибок при чтении работающего счетчика. Пусть, например, в начале чтения счетчик содержал следующее значение: TH1 = 00000000b, TL1 = 111111111b. Если за время чтения старшего байта счетчик увеличит свое значение на 1, то микроконтроллер, не использующий дополнительных проверок, получит результат: 00000000 00000000b.

    Схема данного микропроцессорного устройства представлена на рис. 14.6.

    (рис 14.6) МПС для подсчета количества деталей

    Программа решения этой задачи может выглядеть следующим обра зом:

    .ORG 0
    AJMP Begin ; на начало программы
    .ORG 0Bh
    AJMP Int_Time ; на обработчик таймера
    .ORG 30h
    Begin: MOV IE,#00001000b ; разрешение прерывания Т/С0
    MOV TMOD,#00101100b ; настройка режимов счетчиков
    MOV TH0,#0 ; сброс счетчика времени
    MOV TL0,#0
    MOV TH1,#0 ;сброс счетчика деталей
    MOV TL1,#0
    MOV R0,#183
    MOV R1,#5
    MOV TCON,#01010000b
    SETB EA
    AJMP $ ; фоновая задача
    Int_Time: DJNZ R0,Out_Time ; обработчик Т/С0
    MOV R0,#183 ; восстановление параметра счета
    DJNZ R1,Out_Time ; выход, если не прошла 1 мин
    Read: MOV A,TH1 ; чтение Т/С1
    MOV R3,TL1
    CJNE A,TH1,Read
    MOV R4,A ; вывод результата
    MOV P1,R3
    MOV P2,R4
    MOV TH1,#0 ; восстановление Т/С1
    MOV TL1,#0
    MOV R1,#5 ;восстановление параметра счета
    Out_Time:RETI ;выход из обработчика Т/С0
    .END

    Организация ввода-вывода информации в микроконтроллере

    Однокристальные микроконтроллеры обладают широкими возможностями по вводу и выводу информации. Микроконтроллеры семейства МК-51 для этих целей имеют:

  • 4 параллельных 8-разрядных порта P0-P3, каждая линия которых может индивидуально настраиваться на ввод либо вывод информации;
  • один последовательный порт.
  • Параллельные порты. Помимо возможности использования любого из параллельных портов для ввода или вывода информации за каждым из них аппаратно закреплены определенные функции.

    Порт P0:

  • выводит младший байт адреса (А7-А0) при работе с внешней памятью программ и внешней памятью данных;
  • выдает из МК и принимает в МК байт данных при работе с внешней памятью; при этом выдача адреса и обмен данными мультиплексируются во времени аппаратными средствами микроконтроллера, а для хранения младшего байта адреса в микропроцессорной системе должен быть предусмотрен внешний по отношению к МК регистр адреса;
  • задает данные при программировании внутреннего ППЗУ в тех БИС, где оно предусмотрено, и читает содержимое внутренней памяти программ.
  • Порт P1. Через порт P1 вводится младший байт адреса (А7-А0) при программировании внутреннего ППЗУ и чтении внутренней памяти программ.

    Порт P2. Порт P2 применяется для вывода старшего байта адреса (А15-А8) при обращении к внешней памяти программ и данных и ввода разрядов адреса А11-А8 при программировании внутреннего ППЗУ и чтении внутренней памяти программ.

    Порт Р3. Каждый из разрядов порта Р3 используется для выполнения альтернативных функций (табл. 14.10).

    Альтернативные функции порта Р3
    Позиция в регистре Мнемоника бита Функция
    0 RxD Вход последовательного порта
    1 TxD Выход последовательного порта
    2 INT0 Вход запроса внешнего прерывания 0
    3 INT1 Вход запроса внешнего прерывания 1
    4 T0 Счетный вход таймера/счетчика 0

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

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

    (рис 14.7) Логическая схема работы линии Р1.1 при вводе и выводе информации

    При выводе информация записывается в некоторую внутреннюю защелку P1.1. Информация, вводимая по этой линии, маскируется этой защелкой. Если данная линия не настроена на ввод, то есть в защелку не занесена "1", то в микроконтроллер будет вводиться только "0".

    Блок последовательного интерфейса

    Блок последовательного интерфейса предназначен для обмена данными между микроконтроллером и внешними устройствами в последовательном коде посредством линий P3.0 и P3.1 порта P3, которые имеют специальные обозначения RxD и TxD соответственно.

    Управление работой последовательного порта осуществляется программированием регистра SCON из блока регистров специальных функций. Назначение разрядов этого регистра приведено в табл. 14.11.

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

    Режим 0. Информация передается и принимается через вход RxD (P3.0). Через выход передатчика TxD (P3.1) выдаются синхроимпульсы, стробирующие принимаемые или выдаваемые биты. Формат посылки -8 бит. Частота приема и передачи - fBQ/12, то есть частота тактирования равна частоте машинного цикла микроконтроллера.

    Режим 1. Информация передается через выход TxD, а принимается через вход RxD. Формат посылки - 10 бит (стартовый "0", 8 информационных и стоповый - "1"). Частота приема и передачи задается програм мированием таймера/счетчика 1 (T/C1).

    Назначение разрядов регистра SCON
    Позиция в регистре Мнемоника бита Функция
    7 SM0 Бит определения режима работы
    6 SM1 Бит определения режима работы
    5 SM2 Бит разрешениямногопроцессорной работы
    4 REN Бит разрешения приема последовательных данных
    3 TB8 9-й бит передаваемых данных в режимах 2 и 3
    2 RB8 9-й бит принимаемых данных в режимах 2 и 3
    1 TI Флаг прерывания передатчика
    0 RI Флаг прерывания приемника

    Режим 2. Информация передается через выход TxD, а принимается через вход RxD. Формат посылки - 11 бит (стартовый "0", 8 информационных, программируемый 9-й бит и стоповый - "1"). 9-й бит при передаче берется из разряда TB8 регистра SCON, а при приеме сохраняется в бите RB8 регистра SCON. 9-й бит используется по усмотрению программиста, например, как бит контроля передаваемой информации по четности.

    Частота приема и передачи задается программно и может быть равна fBQ/32 или fBQ/64.

    Режим 3 аналогичен режиму 2, за исключением того, что частота приема и передачи определяется переполнением таймера/счетчика 1.

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

    Прием информации в режиме 0 инициируется условием ( RI = 0 ) ( REN = 1 ). В остальных режимах прием инициируется приходом стартбита, если REN = 1.

    Прием и выдача байта данных начинается с младшего бита.

    Бит SM2 регистра SCON используется для организации работы многопроцессорных систем на основе данного микропроцессора. При SM2 =1 бит RI не активизируется, если в режимах 2 и 3 9-й принимаемый бит данных равен "0". Это позволяет, например, разделить посылку, содержащую адрес, и посылку с данными.

    В режиме 1 бит RI не активизируется, если не принят стоп-бит, равный "1". В режиме 0 SM2 должен быть равен "0".

    Краткие итоги. В лекции рассмотрены общая организация и принципы работы однокристального микроконтроллера MSC-51 (МК-51), архитектура которого фактически является стандартной для микропроцессоров этого класса. Представлены характеристики микроконтроллеров с архитектурой МК-51, структура и основные блоки микроконтроллера, а также его система команд. Разобраны особенности режимов адресации и использования различных команд. Рассмотрены порядок работы микроконтроллера при обработке прерываний, работа блока таймеров/счетчиков в различных режимах как при отсчете временных интервалов, так и для счета внешних событий. Разобрана работа параллельных и последова тельного портов. Представлены форматы управляющих регистров.

    Вернуться к учебному плану