Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект, часть 5 (15.12.08), чистовик.doc
Скачиваний:
28
Добавлен:
29.04.2019
Размер:
6.55 Mб
Скачать

Регистр состояния status

Регистр состояния содержит флаги состояния АЛУ, состояния микроконтроллера при сбросе и биты выбора страниц памяти данных. Регистр STATUS доступен для любой команды так же, как и любой другой регистр. Однако биты и устанавливаются аппаратно и не могут быть изменены программно, это следует иметь в виду при выполнении команд с использованием регистра состояния. Например, команда CLRF STATUS обнулит все биты, кроме битов и , а затем установит бит Z = 1. После выполнения этой команды регистр состояния будет иметь значение 000uu100 ( и не изменились). Поэтому рекомендуется для изменения регистра состояния использовать только команды битовой установки BCF, BSF, а также MOVWF и SWAPF, которые дополнительно не меняют биты регистра состояния.

Биты IRP и RP1 (STATUS <7:6>) не используются в PIC16F84 и должны быть программно установлены в «0». Использование этих битов в качестве битов общего назначения не рекомендуется. Биты C и DC при вычитании функционируют как биты заема и десятичного заема соответственно. Подробное описание разрядов регистра приведено в таблице 2.

Если регистр STATUS используется в качестве регистра операнда для команд, изменяющих биты Z, DC и C, то непосредственная запись в эти три бита запрещается. Биты устанавливаются в соответствии с внутренней логикой микроконтроллера.

Таблица 2 – Описание разрядов регистра STATUS

Регистр STATUS

Адрес:

03h,

83h

Состояние по включению питания:

0001

1XXX

R/W

R/W

R/W

R

R

R/W

R/W

R/W

IRP

RP1

RP0

Z

DC

C

бит 7

бит 0

Окончание таблицы 2

Бит является флагом переноса для команд сложения ADDWF, ADDLW и инверсным флагом заема для команд вычитания SUBWF, SUBLW. Бит устанавливается в «1» в командах сложения ADDWF и ADDLW, если в результате операции из старшего разряда произошел перенос (результат больше 0FFh).

При выполнении команд сдвига RRF, RLF бит загружается из младшего или старшего бита сдвигаемого регистра соответственно. Вычитание осуществляется путем прибавления дополнительного кода второго операнда. Бит устанавливается в «1» в командах вычитания SUBWF и SUBLW, если при вычитании не произошло заема (результат больше или равен 0)

C

(Carry/Borrow)

Перенос/Заем

DC

(Decimal Carry/Borrow)

Десятичный перенос/Заем

Бит устанавливается в «1» в командах ADDWF и ADDLW, если произошел перенос результата из бита 3. Бит устанавливается в «1» в командах вычитания SUBWF и SUBLW, если при вычитании не произошло заема из бита 4

Z

(Zero)

Ноль

Бит устанавливается в «1», если результат арифметической или логической операции равен нулю

(Power down)

Выключение питания

Бит устанавливается в «1» по включению питания или по команде CLRWDT. Бит сбрасывается в «0» по команде SLEEP

(Time-out)

Тайм-аут

Бит устанавливается в «1» по включению питания, а также командами CLRWDT и SLEEP. Бит сбрасывается в «0» по срабатыванию сторожевого таймера

(Register Bank Select)

Биты RP0, RP1 выбирают одну из четырех страниц памяти данных:

RP1

RP0

:

RPO

Выбор страницы памяти данных

0

0

:

страница 0 (000h…07Fh)

RP1

0

1

:

страница 1 (080h…0FFh)

1

0

:

страница 2 (100h…17Fh)

1

1

:

страница 3 (180h…1FFh)

Для PIC16F84 используется только бит RP0. Бит RP1 должен быть установлен в 0

IRP

Не используется

Не используется. Бит должен быть установлен в «0»

Примечание – R – только чтение, R/W – чтение и запись.