- •Раздел I. Общие сведения о микроконтроллерах. Тема 1.1. Понятие микроконтроллера.
- •Тема 1.2. Типы микроконтроллеров.
- •Встраиваемые микроконтроллеры.
- •16-И 32-разрядные микроконтроллеры (микроконтроллеры с внешней памятью).
- •Цифровые сигнальные процессоры.
- •Тема 1.3. Архитектура процессоров. Cisc и risc процессоры.
- •Гарвард против принстона.
- •Тема 1.4. Типы памяти микроконтроллеров
- •Память программ
- •Память данных
- •Тема 1.5. Регистры микроконтроллера. Пространство ввода-вывода
- •Внешняя память
- •Раздел II. Аппаратные средства микроконтроллеров Тема 2.1. Корпуса устройств
- •Тема 2.2. Питание микроконтроллеров.
- •Потребляемая мощность.
- •Подключение питания.
- •Тема 2.3. Запуск микроконтроллера (сброс в начальное состояние). Тактирование системы.
- •Тактирование системы
- •Тема 2.4. Командные циклы. Программный счетчик. Алу. Командные циклы.
- •Программный счетчик.
- •Арифметико-логическое устройство
- •Тема 2.5. Сторожевые таймеры. Прерывания. Сторожевые таймеры.
- •Прерывания.
- •Раздел III. Средства обмена в микроконтроллерах. Тема 3.1. Таймеры.
- •Тема 3.2. Параллельный ввод-вывод данных. Преобразование логических уровней. Параллельный ввод-вывод данных
- •Преобразование логических уровней.
- •Тема 3.3. Последовательный ввод-вывод данных.
- •Асинхронный последовательный обмен.
- •Синхронный последовательный обмен.
- •Тема 3.4. Протоколы передачи данных. Протокол microwire.
- •Протокол spi.
- •Протокол i2с
- •Раздел IV. Микроконтроллеры семействаMcs-51 Тема 4.1. Фирмы-производители микроконтроллеров. Типовые характеристики семейства mcs-51.
- •Тема 4.2. Структура микроконтроллеров mcs-51 и функции выводов
- •Тема 4.3. Организация памяти и программно доступные ресурсы.
- •Тема 4.4. Синхронизация, магистральные циклы.
- •Тема 4.5. Методы адресации и система команд.
- •Методы адресации
- •Регистровая адресация.
- •Прямая адресация.
- •Косвенно-регистровая адресация.
- •Непосредственная адресация.
- •Система команд семейства mcs-51
- •Арифметические команды.
- •Логические команды.
- •Команды пересылки данных.
- •Команды работы с битами.
- •Команды передачи управления.
- •Тема 4.6. Система прерываний
- •Особенности запросов внешних прерываний.
- •Тема 4.7. Параллельные порты
- •Обновление данных в портах
- •Операции типа «чтение-модификация-запись»
- •Тема 4.8. Таймеры-счетчики
- •Тема 4.9. Последовательный порт
- •Синхронный обмен (режим 0)
- •Асинхронный обмен (режимы 1, 2, 3)
- •Обмен в многопроцессорных системах
Тема 2.4. Командные циклы. Программный счетчик. Алу. Командные циклы.
Вас, вероятно, удивит, что командные циклы не тоже самое, что такты синхронизации. Командный цикл обычно состоит из нескольких тактов, которые необходимы процессору для выполнения команды. На рис. 2.15 показан командный цикл, состоящий из четырех тактов. В течение командного цикла микропроцессор или микроконтроллер выполняет необходимые операции, используя тактовые сигналы для синхронизации этих операций.
Рис. 2.15 - Командный цикл и машинные такты.
Некоторые команды требуют для выполнения более одного командного цикла. Это затрудняет расчет времени выполнения программы. Часто для определения этого времени приходится обращаться к документации или использовать симулятор/отладчик.
Программный счетчик.
Программный счетчик PC (Program Counter) используется для указания следующей команды выполняемой программы. Реализация этой функции значительно осложняется, когда необходимо сохранить содержимое PC при вызове подпрограмм и обработке запросов прерывания или обеспечить ветвление программы. Рис. 2.16 иллюстрирует выполнение некоторых функций программного счетчика, однако на практике они оказываются существенно более сложными.
Рис. 2.16 - Программный счетчик.
Программный счетчик представляет собой счетчик с параллельным вводом-выводом. На рис. 2.16 показано функционирование PC в процессоре с Принстонской архитектурой. В процессорах этого типа содержимое PC поступает по шине данных в схему управления памятью, указывая адрес считываемой команды. Часто PC входит в состав схемы управления памятью - это позволяет избежать передачи адреса по внутренней шине данных. Важные особенности функционирования программного счетчика - параллельная загрузка нового содержимого, поступающего с шины данных, возможность сброса (возврат к адресу первой команды программы), реализация инкремента (увеличение содержимого для адресации следующей команды). Сигналы, обеспечивающие выполнение этих операций, формируются дешифратором команд, который управляет последовательностью действий микроконтроллера.
Параллельная загрузка используется для записи в PC адреса перехода при выполнении команды «jmp» (безусловный переход) или «call» (вызов подпрограммы). В компьютерах с Принстонской архитектурой этот адрес поступает по шине данных. В 8-разрядных микроконтроллерах разрядность PC обычно больше, чем 8 бит (так как при такой разрядности адреса объем доступной памяти программ составляет всего 256 байт). При загрузке в PC нового адреса, он поступает по шине данных частями по 8 бит, что требует выполнения дополнительных машинных циклов. Чтобы сократить время загрузки PC, некоторые процессоры имеют команды ветвления «branch», при которых загружаются только 8 младших разрядов адреса, а старшие разряды остаются без изменения. При выполнении такой команды достаточно передать по шине данных только один байт, тогда как для загрузки полного 16-разрядного адреса требуется пересылка двух байт.
Начальное содержимое PC после запуска микроконтроллера может иметь любое значение. Хотя наиболее очевидным представляется использование в качестве начального значения 0000h, некоторые микроконтроллеры начинают выполнение программы с других адресов. Аналогичная ситуация имеет место с адресами («векторами») прерываний. При обслуживании прерываний в PC обычно загружают содержимое, которое отличается от адреса, загружаемого при начальном запуске микроконтроллера, однако для реализации прерывания и запуска могут использоваться одни и те же аппаратные средства.
После чтения очередной команды содержимое программного счетчика увеличивается (инкрементируется), чтобы обеспечить переход к адресу следующей команды. Если выполняется вызов подпрограммы или происходит прерывание, то адрес возврата (адрес следующей команды) может быть сохранен в стеке без выполнения дополнительных тактов для инкремента содержимого программного счетчика.
Необходимо сделать некоторые важные замечания по поводу функционирования программного счетчика. В работе с микроконтроллерами, имеющими Принстонскую архитектуру, необходимо следить, чтобы программный счетчик не вышел за пределы памяти программ. Если это случится, то микроконтроллер может начать выборку данных вместо команд и пытаться выполнить выбранные коды данных, что приведет к непредсказуемому результату.
Другая проблема может возникнуть, когда программный счетчик достигнет конца адресуемой памяти. Некоторые микроконтроллеры в этом случае осуществляют циклический переход к команде, размещенной по адресу 0000h, в других микроконтроллерах дешифратор команд продолжает инкрементировать программный счетчик, что приводит к выполнению неопределенных команд.