Курсовая работа: Разработка и описание работы устройства на PIC-контроллере
Переключение банков происходит при помощи задания 5-го
бита в регистре STATUS. Если бит установлен в 0, адресуется нулевой банк, если
в 1, соответственно, первый.
Специальные регистры
Специальные регистры представляют собой статическое
ОЗУ.
Регистр STATUS (Адрес 03Н, 81Н)
Регистр STATUS хранит арифметические флаги АЛУ,
информацию о сбросе и бит выбора банка памяти данных.
bit7 IRP - регистр выбора банка памяти, применяемый
при косвенной адресации. Это бит не применяется в PIC16F84 и должен всегда
оставаться сброшенным.
0 = bank 0,1 (00h-FFh)
1 = bank 2,3(100h-1FFh)
bit6-5 RP1, RP0 - регистр выбора банка памяти,
применяемый при прямой адресации.
00 = bank 0 (00h-7Fh)
01 = bank 1 (80h-FFh)
bit4 TO - флаг срабатывания сторожевого таймера.
Устанавливается в 1 при включении питания и командами CLRWDT и SLEEP.
Сбрасывается в 0 по завершении выдержки сторожевого таймера.
bit3 PD - режим хранения данных. Устанавливается в 1
при включении питания или выполнении команды CLRWDT. Сбрасывается в 0 командой
SLEEP.
bit2 Z - флаг нулевого результата. Устанавливается в
1, если результат арифметической или логической операции равен нулю. Сохраняет
свое значение до следующей операции.
bit1 DC - флаг
десятичного переноса. Используется для команд ADDWF, ADDLW, SUBWF и SUBLW.
Отслеживает перенос из четвертого разряда результата.
1 = Произошел перенос при сложении
0 = Не произошел перенос при сложении
Вычитание в АЛУ выполняется сложением кода первого
операнда с дополнительным кодом второго операнда. Значение бита контекстно
зависит от того, какая операция выполнялась. Для операции вычитания значения
бита инвертированы.
bit0 С - флаг переноса. Используется для команд ADDWF,
ADDLW, SUBWF и SUBLW. Отслеживает перенос из старшего разряда в бит переноса
при сложении.
1 = произошел перенос при сложении
0 = не произошел перенос при сложении
Вычитание в АЛУ выполняется сложением кода первого
операнда с дополнительным кодом второго операнда. Значение бита контекстно
зависит от того, какая операция выполнялась. Для операции вычитания значения
бита инвертированы.
Используя флаги ТО и PD можно определить, чем был
вызван сброс.
TO |
PD |
Событие, вызвавшее состояние
"сброс" |
1 |
1 |
Сброс по включению питания |
0 |
1 |
Сработал сторожевой таймер (не в
режиме SLEEP) |
1 |
0 |
Сброс по входу MCLR в режиме SLEEP
или выход из SLEEP по внешнему прерыванию |
0 |
0 |
Выход из SLEEP по сигналу
сторожевого таймера |
X |
X |
Сброс по входу MCLR в обычном
режиме |
х - состояние битов не изменилось. Сброс по входу MCLR
в обычном режиме не меняет текущие значения битов ТО и PD.
Регистр OPTION_REG (АДРЕС 81Н)
Специальный регистр OPTION_REG представляет собой
полностью доступный для записи и чтения регистр, в котором находятся биты,
управляющие работой предварительного делителя, источниками внешних прерываний,
встроенным таймером TMR0 и подтягивающими резисторами для порта В.
bit7 RBPU - включение встроенной нагрузки порта В
1 = нагрузка отключена
0 = нагрузка включена
bit6 INTEDG - выбор фронта прерывающего сигнала
1 = прерывание по нарастанию сигнала на выводе
RB0/INT
0 = прерывание по спаду сигнала на выводе RB0/INT
bit5 TOGS - выбор источника тактирования для таймера
TMR0
1 = импульсы со входа RA4/T0CKI
0 = внутренняя тактовая частота (CLKOUT)
bit4 T0SE - выбор фронта сигнала для таймера TMR0,
если в качестве источника выбран вход RA4/T0CKI (T0CS=l)
1 = инкремент по спаду на выводе RA4/T0CKI
0 = инкремент по нарастанию на выводе RA4/T0CKI
bit3 PSA - бит, управляющий подключением
предварительного делителя
1 = предварительный делитель подключен к WDT
0 = предварительный делитель подключен к TMR0
bit2-0 PS2-PS0 - управление коэффициентом деления
предварительного делителя в зависимости от подключения
Биты |
для TMR0 |
для WDT |
000 |
1:2 |
1:1 |
001 |
1:4 |
1:2 |
010 |
1:8 |
1:4 |
011 |
1:16 |
1:8 |
100 |
1:32 |
1:16 |
101 |
1:64 |
1:32 |
110 |
1:128 |
1:64 |
111 |
1:256 |
1:128 |
Регистр INTCON (АДРЕС 0ВН, 8ВН)
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9 |