Программный счётчик.
Программный счётчик (РС – Program Counter) используется для указания следующей команды выполняемой программы. Это счётчик с параллельным вводом и параллельным выводом. В процессорах с принстонской архитектурой содержимое РС поступает по шине данных в схему управления памятью, указывая адрес считываемой команды. Программные счётчики часто входят в состав схемы управления памятью – это позволяет избежать передачи адреса по внутренней шине данных.
Основные характерные особенности программного счётчика, следующие:
параллельная загрузка нового содержимого с шины данных;
возможность возврата к адресу первой команды программы (возможность сброса);
реализация счёта на увеличение (инкремента) для адресации следующей команды.
Сигналы, обеспечивающие выполнение этих операций счётчиком, формируются дешифратором команд, управляющим последовательностью действий МП-компонента.
Параллельная загрузка используется для записи в программный счётчик адреса перехода при выполнении команды безусловного перехода («jump») или вызова подпрограммы («call»).
Начальное содержимое программного счётчика после запуска МП-устройства может иметь любое значение. Часто используется значение начального адреса 0000016, но ряд устройств начинают выполнение программы с других адресов. Аналогичная ситуация возникает с адресами прерываний (векторами прерываний). Обслуживание прерывания начинается с адреса (вектора прерывания), отличного от адреса, загружаемого при начальном запуске устройства. Но для реализации прерывания или запуска устройства используются обычно одни и те же аппаратные средства.
Из методички:
Счетчик команд представляет собой регистр, в котором содержится адрес следующей исполняемой команды, при этом напрямую из наполняемой программы он недоступен. Размер счетчика команд зависит от объема имеющейся памяти программ и составляет от 16 разрядов. При нормальном выполнении программы содержимое счетчика команд автоматически увеличивается на 1 или на 2 (в зависимости от выполняемой команды) в каждом машинном цикле. Этот порядок нарушается при выполнении команд перехода, вызова и возврата из подпрограмм, а также пи. возникновении прерываний.
После включения питания, а также после сброса микроконтроллера счетчик программ автоматически загружается нулевой стартовый адрес (0х00 в шестнадцатеричной системе) или начальный адрес сектора загрузчика. Как правило, по этому адресу располагается команда безусловного перехода к части программы, предназначенной для инициализации используемой периферии, откуда начинается выполнение программы. При возникновении прерывания в счетчик команд загружается адрес соответствующего вектора прерывания. Если прерывания используются в программе, по адресам векторов прерываний должны размещаться команды перехода к подпрограммам обработки прерываний.