Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УЧПУ.Контроллеры электроавтоматики.doc
Скачиваний:
21
Добавлен:
17.09.2019
Размер:
6.86 Mб
Скачать

1.4. Регистры состояния и управления.

К регистрам состояния и управления процессором относятся следующие регистры: STATUS, OPTION_REG, PCL, FSR, PCLATH, INTCON, PIR1, PIE1, PIR2, PIE2. Большинство из этих регистров для удобства программирования отображены во всех банках памяти данных.

Регистр STATUS содержит флаги состояния АЛУ, флаги причин сброса микроконтроллера и биты управления банками памяти данных. Распределение разрядов регистра приведено в таблице 2.

Таблица 2

Номера битов

7

6

5

4

3

2

1

0

Обозначения сигналов

IRP

RP1

RP0

-TO

-PD

Z

DC

C

IRP – бит выбора банка памяти при косвенной адресации: 1 – банки 2,3; 0 – банки 0,1.

PR1:PR0 – биты выбора банков памяти данных при непосредственной адресации (см. таблицу 3).

-TO - бит флага переполнения сторожевого таймера: = 0 после переполнения.

-PD - бит флага после включения питания: = 0 при включении режима SLEEP.

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

DC – бит флага десятичного переноса / заема для команд ADDWF, ADDWL, SUBWF, SUBWL – см. систему команд микроконтроллера): = 1 – был перенос из младшего полубайта, = 0 – не было переноса. Заем имеет инверсное значение.

C – бит флага переноса / заема (для команд ADDWF, ADDWL, SUBWF, SUBWL) : = 1 – был перенос из старшего бита, = 0 - не было переноса. Заем имеет инверсное значение.

Таблица 3.

Номер банка и пределы адресов

RP0

RP1

Банк 0 адреса: 000h - 07Fh

0

0

Банк 1 адреса: 080h - 0FFh

1

0

Банк 2 адреса: 100h - 17Fh

0

1

Банк 3 адреса: 180h - 1FFh

1

1

Регистр OPTION_REG предназначен для управления предварительным делителем импульсов сторожевого таймера или таймера TMR0. Распределение разрядов приведено в таблице 4.

Таблица 4

Номера битов

7

6

5

4

3

2

1

0

Обозначения сигналов

-RBPU

INTEDG

TOCS

TOSE

PSA

PS2

PS1

PS0

-RBPU – бит включения подтягивающих резисторов на входах PORTB.

INTEDG – бит выбора фронта сигнала на входе внешнего прерывания:

=1 – прерывание по переднему фронту сигнала,

= 0 – по заднему фронту.

TOCS – выбор тактового сигнала для таймера TMR0:

=1 внешний тактовый сигнал с вывода RA4,

= 0 – внутренний тактовый сигнал.

TOSE – выбор фронта входного сигнала со входа RA4 для приращения таймера TMR0:

=1- приращение по заднему фронту,

= 0 – приращение по переднему фронту.

PSA - выбор режима подключения предварительного делителя:

= 1 - предделитель включен перед сторожевым таймером

=– предделитель включен перед таймером TMR0.

PS2: PS0 – установка коэффициента предделителя в соответствии с таблицей 45

Таблица 5.

Значение коэффициента

Для

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 - предназначен для хранения масок и флагов прерываний. Обозначение и распределение разрядов приведено в таблице 6:

6

Номера битов

7

6

5

4

3

2

1

0

Обозначения сигналов

GIE

PEIE

TOIE

INTE

RBIE

TOIF

INTF

RBIF

GIE – глобальное разрешение прерываний:

=1 – разрешены все незамаскированные прерывания,

= 0 – все прерывания запрещены.

PEIE – разрешение прерываний от периферийных модулей микроконтроллера: =1 – разрешены незамаскированные прерывания от периферийных модулей,

= 0 – запрещены прерывания от периферийных модулей.

TOIE – разрешение прерывания при переполнении таймера TMR0: 1 – прерывание разрешено, 0 – прерывание запрещено.

INTE – разрешение внешнего прерывания:

=1- прерывание разрешено,

=0 – прерывание запрещено.

RBIE – разрешение прерывания по входам RB7:RB4 PORTB:

=1 – прерывание разрешено,

=0 – прерывание запрещено.

TOIF - флаг переполнения таймера TMR0:

= 1 – переполнение было (сброс программно),

= 0 – переполнения не было.

INTF – флаг внешнего прерывания INT:

= 1 – было условие внешнего прерывания на выводе RB0/INT,

= 0 – внешнего прерывания не было.

RBIF- флаг прерывания по изменению уровня сигналов на входах RB7:RB4 PORTB:

=1 – зафиксировано изменение уровня сигнала ( сбрасывается программно),

=0 – изменения уровня сигнала не было.

Регистр PIE1 – содержит биты разрешения прерываний от функциональных модулей. Обозначения и распределение разрядов приведены в таблице 7.

Таблица 7

Номера битов

7

6

5

4

3

2

1

0

Обозначения сигналов

PSPIE

ADIE

RCIE

TXIE

SSPIE

CCP1IE

TMR2IE

TMR1IE

PSPIE - разрешение прерывания от ведомого параллельного порта (для МК типа PIC16F874, PIC16F877):

= 1 прерывание разрешено,

=0 – прерывание запрещено.

ADIE – разрешение прерывания по окончанию преобразования в АЦП:

=1- прерывание разрешено,

= 0 – прерывание запрещено.

RCIE – разрешение прерывания от приемника USART:

=1 – прерывание разрешено,

=0 – прерывание запрещено.

TXIE – разрешение прерывания от передатчика USART:

= 1 – прерывание разрешено,

= 0 – прерывание запрещено.

SSPIE – разрешение прерывания от синхронного последовательного порта:

=1- прерывание разрешено,

=0 – прерывание запрещено.

CCP1IE – разрешение прерывания от модуля CCP1:

= – прерывание разрешено,

=0 – прерывание запрещено.

TMR2IE – разрешение прерывания по переполнению таймера TMR2

=1 - прерывание разрешено,

= 0 - прерывание запрещено.

TMR1IE – разрешение прерывания по переполнению таймера TMR1:

=1 – прерывание разрешено,

=0 – прерывание запрещено.

Регистр PIE2 – содержит маски прерываний от функциональных модулей микроконтроллера. Обозначения и распределение разрядов приведено в таблице 8.

Таблица 8

Номера битов

7

6

5

4

3

2

1

0

Обозначения сигналов

-

-

-

EEIE

BCLIE

_

-

CCP1IE

EEIE -разрешение прерывания по окончанию записи в EEPROM данных:

= 1 – прерывание разрешено,

=0 – прерывание запрещено.

BCLIE – разрешение прерывания при возникновении коллизий на шинном интерфейсе I2С :

= 1 – прерывание разрешено,

=0 - прерывание запрещено.

CCP1IE – разрешение прерывания от модуля CCP2:

=1 – прерывание разрешено,

= 0 – прерывание запрещено.

Остальные разряды не используются и читаются как 0.

Регистр PIR1 – содержит биты флагов прерываний от периферийных модулей. Обозначения и распределение разрядов приведено в таблице9.

Таблица 9

Номера битов

7

6

5

4

3

2

1

0

Обозначения сигналов

PSPIF

ADIF

RCIF

TXIF

SSPIF

CCP1IF

TMR2IF

TMR1IF

RSPIF – флаг прерывания от ведомого параллельного порта (для МК типа PIC16F874, PIC16F877):

=1 – произошла операция чтения или записи (сбрасывается программно),

=0 – операции чтения или записи не происходило.

ADIF – флаг прерывания от периферийного модуля АЦП:

= 1 – преобразование завершено,

= 0 – преобразование незавершенно.

RSIF – флаг прерывания от приемника USART:

=1 – буфер приемника USART полон,

=0 – буфер приемника пуст.

TXIF – флаг прерывания от передатчика USART:

= 1 – буфер передатчика USART пуст,

= 0 – буфер передатчика полон.

SSPIF – флаг прерывания от модуля MSSP:

=1 – выполнено одно из условий прерывания от модуля MSSP (об условиях прерывания см. раздел. Модуль MSSP),

=0 – не выполнено ни одно из условий прерывания от модуля MSSP.

CCP1F – флаг прерывания от модуля CCP1 ( условия прерываний см. в разделе Модуль CCP1).

TMR2IF – флаг прерывания по переполнению таймера TMR2:

= 1 – переполнение наступило (сбрасывается программно),

= 0 – переполнения таймера TMR2 не было.

TMR1IF – флаг прерывания от таймера TMR1:

=1 – переполнение таймера произошло (сбрасывается программно),

=0 – переполнения таймера не было.

Регистр PIE2 – содержит маски прерываний от функциональных модулей микроконтроллера. Обозначения и распределение разрядов приведено в таблице 10.

Таблица 10

Номера битов

7

6

5

4

3

2

1

0

Обозначения сигналов

-

-

-

EEIE

BCLIE

_

-

CCP1IE

EEIE -разрешение прерывания по окончанию записи в EEPROM данных:

= 1 – прерывание разрешено,

=0 – прерывание запрещено.

BCLIE – разрешение прерывания при возникновении коллизий на шинном интерфейсе I2С :

= 1 – прерывание разрешено,

=0 - прерывание запрещено.

CCP1IE – разрешение прерывания от модуля CCP2:

=1 – прерывание разрешено,

= 0 – прерывание запрещено.

Остальные разряды не используются и читаются как 0.

Регистр PIR2 - содержит флаги прерываний от функциональных модулей. Обозначения и распределение разрядов приведено в таблице 11.

Таблица 11

Номера битов

7

6

5

4

3

2

1

0

Обозначения сигналов

-

-

-

EEIF

BCLIF

_

-

CCP1IF

EEIFфлаг прерывания по окончанию записи в память EEPROM:

= 1 – запись завершена и разряд должен быть сброшен программно,

=0 – запись не завершена или не была начата.

BCLIF флаг прерывания при возникновении коллизии на шине I2C:

= 1- на шине взникла коллизия, 0 – коллизий не обнаружено.

CCP1IF флаг прерывания от модуля CCP2:

В режиме захвата: 1 – выполнен захват значения таймера TMR1 (сброс должен быть выполнен программно),

=0 – захвата не было.

В режиме сравнения:

= 1 – значение таймера TMR1 достигло заданной величины, (сброс осуществляется программно),

= 0 – значение таймера не достигло заданной величины.

Примечание. Флаги прерываний от всех перечисленных устройств устанавливаются по окончании цикла работы конкретного устройства независимо от того разрешено прерывание или нет.