Память данных и спецрегистры. Специальные регистры, страница 2

Табл.2

C - флаг переполнения. Значение разряда вырабатывается при выполнении операций с байтами в АЛУ (команды ADDWF, SUBWF и др. байтовые инструкции). Он устанавливается в 1, если в результате выполнения операции возникает перенос из седьмого разряда АЛУ.

DC - флаг переноса десятичной арифметики. Устанавливается в 1 при наличии переноса из третьего разряда АЛУ. Используется в программах с десятичной арифметикой.

Z - флаг нулевого результата операции. Он устанавливается аппаратно в 1, если результат операции в АЛУ равен 0. Иначе этот разряд устанавливается в 0.

 - флаг включения питания. Устанавливается в 1 по включению питания (POR) или после выполнения инструкции CLRWDT. После выполнения команды SLEEP он устанавливается в 0.

 - флаг переполнения сторожевого таймера: 1 - после сброса по включению питания и после выполнения инструкций CLRWDT и SLEEP; 0 - после переполнения сторожевого таймера WDT.

RP1:RP0 - номер банка в пределах выбранной группы банков. Разряд RP1 в микроконтроллерах PIC16F84A не используется, так как они имеют всего два банка данных. Для выбора нужного банка в программах для PIC16F84A достаточно установить только разряд RP0.

IRP - номер группы банков. В микроконтроллерах PIC16F84A этот разряд не используется.

Счетчик команд (PC)

Счетчик команд содержит адрес памяти программ для очередной инструкции, подлежащей выполнению. Так как память программ имеет объем значительно больше, чем можно адресовать с помощью восьми разрядного числа, она разбивается на страницы по 256 слов и адрес команды располагается в двух специальных регистрах памяти данных. В PIC16F84A младшие 8 разрядов PC хранятся в специальном регистре PCL, а старшие 5 разрядов (0:4, номер страницы) - в регистре PCH. В счетчик команд новое значение записывается автоматически после выполнения очередной команды. После обычных команд содержимое PC увеличивается на 1, а после инструкций передачи управления записывается новое значение, определяемое этой инструкцией. Допускается чтение и запись в регистр PCL обычными командами, но в этом случае программист сам должен следить за согласованностью адреса в странице и номера страницы. Запись в регистр PCH обычным способом невозможна. Она может выполняться только через дополнительный регистр PCLATH.

Регистры PORTAи TRISA

Регистры PORTA и TRISA служат для организации процесса ввода или вывода данных в параллельном коде через устройство цифрового ввода/вывода (ЦВВ) с именем PORTA. Порт A содержит только пять разрядов, один из которых RA4/TOCI мультиплицирован с входом счетчика таймера TMR0, т.е. может использоваться для подключения внешнего генератора, используемого в качестве датчика времени.

При выводе данных двоичный код из регистра-аккумулятора (W) посредством шины данных пересылается в регистр PORTA. Если направление ввода/вывода данных установлено на вывод данных, двоичный код в виде электрических напряжений поступает с триггеров регистра PORTA через буферные усилители на внешние контакты (RA4:RA0).

Регистр TRISA служит для задания направления передачи. Так как регистр TRISA содержит 8 двоичных разрядов направление передачи в каждом разряде порта ЦВВ можно задавать индивидуально, т.е. независимо от направлений в других разрядах. При записи 1 в разряд TRISA соответствующий разряд порта ЦВВ переводится в режим ввода. Физический регистр PORTA при этом не используется, а по команде чтения (MOVF PORTA,W) двоичный код передается непосредственно с контактов RA4:RA0 через шину данных в регистр аккумулятор W. Если в нужные разряды регистра TRISA записать 0, они переводятся в режим вывода и код из этих разрядов регистра PORTA поступает через буферные усилители на контакты RAx в виде напряжений.