Счетчик инструкций (или счетчик команд, PC – Program Counter) – 13-разрядный регистр, который указывает адрес выбираемой команды для выполнения.
Младший байт счетчика инструкций PCL доступен для чтения и записи. Старший байт PCH, содержащий <12:8> биты счетчика инструкций PC, не доступен для чтения и записи. Все операции с регистром PCH происходят через дополнительный регистр PCLATH.
Примечание. При записи значения в регистр PCL, автоматически происходит перезапись 5 младших бит из регистра PCLATH<4:0> в регистр PCH.
Режимы изменения счетчика инструкций:
- автоматический (автоинкремент) при исполнении инструкций. Значение счетчика команд инкрементируется каждый раз при выборке очередной инструкции из памяти программ;
- предопределенный при исполнении инструкций CALL, GOTO и т.п. Перед выполнением команды перехода (CALL или GOTO) необходимо запрограммировать биты регистра PCLATH<4:3> для адресации требуемой страницы. При выполнении инструкций возврата из подпрограммы 13-разрядное значение для счетчика программ PC берется с вершины стека, поэтому манипуляция битами регистра PCLATH<3:4> не требуется;
|
|
Изменение значения PC при выполнении инструкции GOTO (PCLATH<4:3> → PCH)
Изменение значения PC при выполнении перехода к подпрограмме CALL (PCLATH<4:3> → PCH), причем старое значение PC сохраняется в вершине стека
Возвращение из подпрограммы (RETURN, RETFIE или RETLW), счетчик команд загружается значением с вершины стека
Примечание. Регистр PCLATH не изменяется при изменении PCH.
- принудительный при изменении PCL и PCLATH.
Вычисляемый переход может быть выполнен командой приращения к регистру PCL (например, ADDWF PCL). При выполнении вычисляемого перехода следует заботиться о том, чтобы значение PCL не пересекло границу блока памяти.
Вся память программ разделена на страницы. Для перехода между страницами памяти программ необходимо изменить старшие биты регистра счетчика команд PC записью в регистр специального назначения PCLATH (старший байт счетчика команд). Изменив значение регистра PCLATH и выполнив команду ветвления, счетчик команд PC пересечет границу страницы памяти программ без дополнительного вмешательства пользователя.