
- •Цифровые и микропроцессорные устройства
- •Часть 5 Принципы организации однокристальных микроконтроллеров. Организация памяти микропроцессорных систем
- •15 Января 2008 г., протокол № 4
- •Общие сведения о микроконтроллерах
- •Микроконтроллер pic16f84 Общие сведения
- •Структурная организация
- •Организация памяти
- •Организация памяти программы
- •Организация памяти данных
- •Регистр состояния status
- •Регистр option
- •Регистр intcon
- •Счетчик команд
- •Косвенная адресация данных
- •Порты ввода/вывода
- •Особенности программирования портов
- •Модуль таймера
- •Прерывание от таймера
- •Использование tmr0 с внешним сигналом
- •Предварительный делитель
- •Специальные функции
- •Биты конфигурации
- •Типы генераторов
- •Кварцевый генератор
- •Прерывания
- •Сохранение состояния при прерываниях
- •Сторожевой таймер wdt
- •Режим пониженного энергопотребления (sleep)
- •Защита программы от копирования
- •Индивидуальная метка
- •Внутрисхемное программирование
- •Система команд микроконтроллера pic16f84
- •Общие сведения и основные параметры запоминающих устройств
- •Классификация зу
- •Основные структуры адресных запоминающих устройств
- •Запоминающие элементы оперативных зу
- •Запоминающие элементы постоянных зу
- •Цифровые и микропроцессорные устройства
- •Часть 5 Принципы организации однокристальных микроконтроллеров. Организация памяти микропроцессорных систем
Регистр состояния 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 – чтение и запись. |