- •1.1 Цель работы
- •1.2 Общие сведения
- •1.3 Области применения
- •1.4 Номенклатура микроконтроллеров семейства pic16f8хх
- •1.5 Технические характеристики микроконтроллера pic16f877
- •1.6 Архитектура микроконтроллера pic16f877
- •1.7 Основные регистры специального назначения
- •1.7.1 Регистр status
- •1.7.2 Регистр option_reg
- •1.7.3 Регистр intcon
- •1.7.4 Регистр pie1
- •1.7.5 Регистр pir1
- •1.7.6 Регистр pie2
- •1.7.7 Регистр pir2
- •1.7.8 Регистр pcon
- •1.7.9 Регистры pclath и pcl
- •1.7.10 Вычисляемый переход
- •1.7.11 Стек
- •1.7.12 Страницы памяти программ
- •1.7.13 Косвенная адресация, регистры indf и fsr
- •1.8 Порты ввода/вывода
- •1.8.1 Регистры portа и trisa
- •1.8.2 Регистры portb и trisb
- •1.8.3 Регистры portc и trisc
- •1.8.4 Регистры portd и trisd
- •1.8.5 Регистры porte и trise
- •1.9 Eeprom память данных и flash память программ
- •1.9.1 Регистры eecon1, eecon2
- •1.9.2 Чтение из eeprom памяти данных
- •1.9.3 Запись в eeprom память данных
- •1.10 Модуль таймера tmr0
- •1.10.1 Прерывания от tmr0
- •1.10.2 Использование внешнего источника тактового сигнала для tmr0
- •1.10.3 Предделитель
- •1.11 Модуль таймера tmr1
- •1.11.1 Работа tmr1 в режиме таймера
- •1.11.2 Работа tmr1 в режиме счетчика
- •1.11.3 Работа tmr1 в режиме синхронного счетчика
- •1.11.4 Работа tmr1 в режиме асинхронного счетчика
- •1.11.5 Чтение/запись tmr1 в асинхронном режиме
- •1.11.6 Генератор tmr1
- •1.11.7 Сброс tmr1 триггером модуля сср
- •1.11.8 Сброс регистров tmr1 (tmr1h, tmr1l)
- •1.11.9 Предделитель tmr1
- •1.12 Прерывания
- •1.12.1 Внешнее прерывание с входа rb0/int
- •1.12.2 Прерывание по переполнению tmr0
- •1.12.3 Прерывание по изменению уровня сигнала на входах rb7:rb4
- •1.13 Система команд
1.11.8 Сброс регистров tmr1 (tmr1h, tmr1l)
Регистры TMR1H и TMR1L не сбрасываются в 00h при сбросе по включению питания POR и других видах сброса, кроме сброса по сигналу триггера специальных событий модуля ССР1 или ССР2.
Регистр T1CON сбрасывается в 00h при сбросе POR и BOR (TMR1 выключается, коэффициент предделителя равен 1:1). При всех остальных видах сброса значение регистра T1CON не изменяется.
1.11.9 Предделитель tmr1
Предделитель TMR1 очищается при записи в регистр TMR1L или TMR1H.
Таблица 1.16 Регистры и биты, связанные с работой TMR1
Адрес |
Имя |
Бит 7 |
Бит 6 |
Бит 5 |
Бит 4 |
Бит 3 |
Бит 2 |
Бит 1 |
Бит 0 |
Сброс POR, BOR |
Другие сбросы |
|||||
0Bh, 8Bh, 10Bh,18Bh |
INTCON |
GIE |
PEIE |
Т01Е |
INTE |
RBIE |
T0IF |
INTF |
RBIF |
0000 000х |
0000 000u |
|||||
0Ch |
PIR1 |
PSPIF* |
ADIF |
RG1F |
TXIF |
SSPIF |
CCP1F |
TMR2IF |
TMR1IF |
0000 0000 |
0000 0000 |
|||||
8Ch |
PIE1 |
PSPIE* |
ADIE |
RCIE |
TXIE |
SSPIE |
ССР1Е |
TMR2IE |
TMR1IE |
0000 0000 |
0000 0000 |
|||||
0Eh |
TMR1L |
Младший байт 16-разрядного таймера 1 |
хххх хххх |
uuuu uuuu |
||||||||||||
0Fh |
TMR1H |
Старший байт 16-разрядного таймера 1 |
хххх хххх |
uuuu uuuu |
||||||||||||
10h |
T1CON |
– |
– |
T1CKPS1 |
T1CKPS0 |
T1OSCEN |
-T1SYNC |
TMR1CS |
TMR1ON |
--00 0000 |
- -uu uuuu |
|||||
Обозначение: – = не используется, читается как 0; и = не изменяется; х = не известно; q = зависит от условий. Затененные биты на работу не влияют.
Примечание. * Биты PSPIE и PSPIF в микроконтроллерах PIC16F873, PIC16F876 не используются.
1.12 Прерывания
PIC16F87X имеют 14 источников прерываний. Регистр INTCON содержит флаги отдельных прерываний, биты разрешения этих прерываний и бит глобального разрешения прерываний.
Если бит GIE (INTCGN<7>) установлен в '1', разрешены все немаскированные прерывания. Если GIE=0, то все прерывания запрещены. Каждое прерывание в отдельности может быть разрешено/запрещено установкой/сбросом соответствующего бита в регистрах INTCON, PIE1 и PIE2. При сбросе микроконтроллера бит GIE сбрасывается в '0'.
При возвращении из подпрограммы обработки прерывания, по команде RETFIE, бит GIE аппаратно устанавливается в '1', разрешая все немаскированные прерывания.
В регистре INTCON находятся флаги следующих прерываний: внешнего сигнала INT, изменения уровня сигнала на входах RB7:RB4, переполнения TMR0.
В регистрах PIR1, PIR2 содержатся флаги прерываний периферийных модулей микроконтроллера, а в регистрах PIE1, PIE2 соответствующие биты разрешения прерываний. В регистре INTCON находится бит разрешения прерываний от периферийных модулей.
При переходе на подпрограмму обработки прерываний бит GIE аппаратно сбрасывается в '0', запрещая прерывания, адрес возврата из подпрограммы обработки прерываний помещается в стек, а в счетчик команд PC загружается вектор прерывания 0004h. Источник прерываний может быть определен проверкой флагов прерываний, которые должны быть сброшены программно перед разрешением прерываний, чтобы избежать повторного вызова.
Для внешних источников прерываний (сигнал INT, изменения уровня сигнала на входах RB7:RB4) время перехода на подпрограмму обработки прерываний будет составлять 3-4 машинных цикла. Точное время перехода зависит от конкретного случая, оно одинаково для 1 и 2-х цикловых команд.
Флаги прерываний устанавливаются независимо от состояния соответствующих битов маски и бита GIE.
Примечание: Индивидуальные флаги прерываний устанавливаются независимо от состояния соответствующих битов маски и бита GIE.
