Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PIC16F877.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

1.7 Основные регистры специального назначения

1.7.1 Регистр status

В регистре STATUS (адрес 03h, 83h, 103h или 183h) содержаться флаги состояния АЛУ, флаги причины сброса микроконтроллера и биты управления банками памяти данных.

Регистр STATUS может быть адресован любой командой, как и любой другой регистр памяти данных. Если обращение к регистру STATUS выполняется командой, которая воздействует на флаги Z, DC и С, то изменение этих трех битов командой заблокирована. Эти биты сбрасываются или устанавливаются согласно логике ядра микроконтроллера. Команды изменения регистра STATUS также не воздействуют на биты –ТО и –PD. Поэтому, результат выполнения команды с регистром STATUS может отличаться от ожидаемого. Например, команда CLRF STATUS сбросит три старших бита и установит бит Z (состояние регистра STATUS после выполнения команды: 000uu1uu, где u – не изменяемый бит).

При изменении битов регистра STATUS рекомендуется использовать команды, не влияющие на флаги АЛУ (SWAPF, MOVWF, BCF и BSF). Описание команд смотрите в разделе 1.13.

Примечание: Флаги С и DC используются как биты заема и десятичного заема соответственно, например, при выполнении команд вычитания SUBLW и SUBWF.

Ниже приводится назначение каждого из 8 битов регистра. Здесь и далее используются следующие обозначения:

  • R – чтение бита;

  • W – запись бита;

  • U – не реализовано, читается как «0»;

  • -n – значение после POR;

  • -x – неизвестное значение после POR.

Регистр STATUS (адрес 03h, 83h, 103h или 183h)

R/W–0

R/W–0

R/W–0

R–1

R–1

R/W–x

R/W–x

R/W–x

IRP

PR1

PR0

–TO

–PD

Z

DC

C

Бит 7

Бит 6

Бит 5

Бит 4

Бит З

Бит 2

Бит 1

Бит 0

Бит 7:

IRP: Бит выбора банка при косвенной адресации

1 = банк 2, 3 (100h-1FFh)

0 = банк 0, 1 (000h – 0FFh)

Бит 6:

Бит 5:

RP1:RP0: Биты выбора банка при непосредственной адресации

00 = банк 0 (000h – 07Fh) 01 = банк 1 (080h – 0FFh)

10 = банк 2 (100h – 17Fh)

11 = банк 3 (180h – 1FFh)

Бит 4:

–ТО: Флаг переполнения сторожевого таймера

0 = после переполнения WDT

1 = после POR или выполнения команд: CLRWDT, SLEEP.

Бит 3:

–PD: Флаг включения питания

0 = после выполнения команды SLEEP

1 = после POR или выполнения команды CLRWDT

Бит 2:

Z: Флаг нулевого результата

0 = не нулевой результат выполнения арифм. или логической операции

1 = нулевой результат выполнения арифм. или логической операции

Бит 1:

DC: Флаг десятичного переноса/заема (для команд ADDWF, ADDWL, SUBWF, SUBWL), заем имеет инверсное значение.

0 = не было переноса из младшего полубайта

1 = был перенос из младшего полубайта

Бит 0:

С: Флаг переноса/заема (для команд ADDWF, ADDWL, SUBWF, SUBWL), заем имеет инверсное значение

0 = не было переноса из старшего бита

1 = был перенос из старшего бита

Примечание: Флаг заема имеет инверсное значение. Вычитание выполняется путем прибавления дополнительного кода второго операнда. При выполнении команд сдвига (RRF, RLF) бит С загружается старшим или младшим битом сдвигаемого регистра.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]