- •Введение
- •1. Основные определения и понятия микропроцессорной техники
- •1.1. Жесткая и гибкая логика
- •1.2. Микропроцессор и «сотоварищи»
- •Контрольные вопросы
- •2. Типы микропроцессорных систем и факторы, влияющие на их быстродействие
- •2.1. Типы микропроцессорных систем
- •2.2. Программируемые логические интегральные схемы
- •2.3. Факторы, влияющие на быстродействие микропроцессоров
- •Контрольные вопросы
- •3.3.1. Команды пересылки данных
- •3.3.2. Арифметические команды
- •3.3.3. Логические команды
- •3.3.4. Команды переходов
- •3.4. Быстродействие процессора
- •4.3.1. Память программ
- •4.3.2. Память данных
- •5.1.2. Микроконтроллеры семейств pic16cxxx и pic17cxxx
- •5.1.3. Особенности архитектуры микроконтроллеров семейства pic16cxxx
- •5.2. Микроконтроллеры подгруппы pic16f8x
- •5.2.1. Основные характеристики
- •5.2.2. Особенности архитектуры
- •5.2.3. Схема тактирования и цикл выполнения команды
- •5.2.4. Организация памяти программ и стека
- •5.2.5. Организация памяти данных
- •5.2.6. Регистры специального назначения
- •5.2.7. Счетчик команд
- •5.2.8. Прямая и косвенная адресации
- •5.2.9. Порты ввода/вывода
- •5.2.10. Модуль таймера и регистр таймера
- •5.2.11. Память данных в рпзу (eeprom)
- •5.2.12. Организация прерываний
- •5.2.13. Специальные функции
- •5.3. Система команд микроконтроллеров подгруппы pic16f8x
- •5.3.1. Перечень и форматы команд
- •5.3.2. Команды работы с байтами
- •5.3.3. Команды работы с битами
- •5.3.4. Команды управления и работы с константами
- •5.3.5. Особенности программирования и отладки
- •6.1. Разработка микропроцессорной системы на основе микроконтроллера
- •6.1.1. Основные этапы разработки
- •6.1.2. Разработка и отладка аппаратных средств
- •6.1.3. Разработка и отладка программного обеспечения
- •6.1.4. Методы и средства совместной отладки аппаратных и программных средств
5.2.6. Регистры специального назначения
Регистрстатуса (STATUS) содержит признаки операции (арифметические флаги) АЛУ, состояние контроллера при сбросе и биты выбора страниц для памяти данных. Назначение битрегистраприведено втабл. 5.3.
Таблица 5.3. Назначение бит регистра STATUS (адрес 03h, 83h). | |||||||
R/W-0 |
R/W-0 |
R/W-0 |
R-1 |
R-1 |
R/W-x |
R/W-x |
R/W-x |
IRP |
RP1 |
RP0 |
/TO |
/PD |
Z |
DC |
C |
Бит 7 |
Бит 6 |
Бит 5 |
Бит 4 |
Бит 3 |
Бит 2 |
Бит 1 |
Бит 0 |
Бит 7: IRP: бит выбора страницы банка данных (используется при косвеннойадресации) 0 = банк 0,1 (00h – FFh) 1 = банк 2,3 (100h – 1FFh) Бит IRPне используется в МК подгруппы PIC16F8X | |||||||
Биты 6-5: RP1:RP0: биты выбора страницы банка данных (используются при прямойадресации) 00 = банк 0 (00h – 7Fh) 01 = банк 1 (80h – FFh) 10 = банк 2 (100h – 17Fh) 11 = банк 3 (180h – 1FFh) В МК подгруппы PIC16F8X используется только бит RP0 | |||||||
Бит 4: /TO: бит срабатывания сторожевоготаймера 1 = после включения питания, а также командами CLRWDTиSLEEP 0 = по завершении выдержки сторожевого таймера | |||||||
Бит 3: /PD: бит снижения потребляемой мощности 1 = после включения питания, а также командой CLRWDT 0 = по команде SLEEP | |||||||
Бит 2: Z: бит нулевого результата 1 = результат арифметической или логической операции нулевой 0 = результат арифметической или логической операции ненулевой | |||||||
Бит 1: DC: бит десятичного переноса/заема (для командADDWFиADDLW) 1 = имеет место перенос из 4-го разряда 0 = нет переноса из 4-го разряда | |||||||
Бит 0: C: бит переноса/заема (для командADDWFиADDLW) 1 = имеет место перенос из самого старшего разряда 0 = нет переноса из самого старшего разряда Примечание: вычитание осуществляется путем прибавления дополнительного кода второго операнда. При выполнении команд сдвига этот бит загружается из младшего или старшего разряда сдвигаемого источника. |
Здесь и далее: R — читаемый бит; W — записываемый бит; S — устанавливаемый бит; U — неиспользуемый бит (читается как «0»); -n = 0 или 1 — значение бита после сброса.
Регистрстатуса доступен для любой команды так же, как любой другойрегистр. Однако еслирегистрSTATUSявляетсярегистромназначения для команды, влияющей на битыZ,DCилиC, то запись в эти три бита запрещается. Кроме того, биты/TOи/PDустанавливаются аппаратно и не могут быть записаны в статус программно. Это следует иметь в виду при выполнении команды с использованиемрегистрастатуса. Например, командаCLRF STATUSобнулит все биты, кроме битов/TOи/PD, а затем установит битZ=1. После выполнения этой командырегистрстатуса может и не иметь нулевого значения (из-за битов/TOи/PD)STATUS=000uu1uu, гдеu– неизменяемое состояние. Поэтому рекомендуется для изменениярегистрастатуса использовать только команды битовой установкиBCF,BSF,MOVWF, которые не изменяют остальные биты статуса. Воздействие всех команд на биты статуса рассматривается в разделе «Описание системы команд».
Регистрконфигурации (OPTION) является доступным по чтению и записирегистром, который содержит управляющие биты для конфигурации предварительного делителя (пределителя), внешнихпрерываний,таймера, а также резисторов «pull-up» на выводахPORTB. Назначение битрегистраприведено втабл. 5.4.
Таблица 5.4. Назначение бит регистра OPTION (адрес 81h). | ||||||||||||||||||||||||||||||||||
R/W-1 |
R/W-1 |
R/W-1 |
R/W-1 |
R/W-1 |
R/W-1 |
R/W-1 |
R/W-1 | |||||||||||||||||||||||||||
/RBPU |
INTEDG |
T0CS |
T0SE |
PSA |
PS2 |
PS1 |
PS0 | |||||||||||||||||||||||||||
Бит 7 |
Бит 6 |
Бит 5 |
Бит 4 |
Бит 3 |
Бит 2 |
Бит 1 |
Бит 0 | |||||||||||||||||||||||||||
Бит 7: /RBPU: бит установки резисторов «pull-up» на выводахPORTB 0 = резисторы «pull-up» подключены 1 = резисторы «pull-up» отключены | ||||||||||||||||||||||||||||||||||
Бит 6: INTEDG: бит выбора перехода сигналапрерывания 0 = прерываниепо спаду сигнала на выводеRB0/INT 1 = прерываниепо фронту сигнала на выводеRB0/INT | ||||||||||||||||||||||||||||||||||
Бит 5: T0CS: бит выбора источника сигналатаймераTMR0 0 = внутренний тактовый сигнал (CLKOUT) 1 = переход на выводе RA4/T0CKI | ||||||||||||||||||||||||||||||||||
Бит 4: T0SE: бит выбора перехода источника сигнала дляTMR0 0 = приращение по фронту сигнала на выводе RA4/T0CKI 1 = приращение по спаду сигнала на выводе RA4/T0CKI | ||||||||||||||||||||||||||||||||||
Бит 3: PSA: бит назначения пределителя 0 = пределитель подключен к TMR0 1 = пределитель подключен к сторожевому таймеруWDT | ||||||||||||||||||||||||||||||||||
Биты 2-0: PS2:PS0: биты выбора коэффициента деления пределителя
|
В том случае, когда пределитель обслуживает сторожевой таймерWDT,таймеруTMR0назначается коэффициент предварительного деления 1:1.
Региструсловийпрерывания(INTCON) является доступным по чтению и записирегистром, который содержит биты доступа для всех источниковпрерываний. Назначение битрегистраприведено втабл. 5.5.
Таблица 5.5. Назначение бит регистра INTCON (адреса 0Bh, 8Bh). | |||||||
R/W-0 |
R/W-0 |
R/W-0 |
R/W-0 |
R/W-0 |
R/W-0 |
R/W-0 |
R/W-x |
GIE |
EEIE |
T0IE |
INTE |
RBIE |
T0IF |
INTF |
RBIF |
Бит 7 |
Бит 6 |
Бит 5 |
Бит 4 |
Бит 3 |
Бит 2 |
Бит 1 |
Бит 0 |
Бит 7: GIE: бит разрешения всехпрерываний 0 = запрещены все прерывания 1 = разрешены все незамаскированные прерывания | |||||||
Бит 6: EEIE: бит разрешенияпрерываниязаписи вEEPROM 0 = запрещены прерываниязаписи вEEPROM 1 = разрешены прерываниязаписи вEEPROM | |||||||
Бит 5: T0IE: бит разрешенияпрерыванияпо переполнениюTMR0 0 = запрещены прерыванияотTMR0 1 = разрешены прерыванияотTMR0 | |||||||
Бит 4: INTE: бит разрешенияпрерыванийпо входуRB0/INT 0 = запрещены прерыванияпо входуRB0/INT 1 = разрешены прерыванияпо входуRB0/INT | |||||||
Бит 3: RBIE: бит разрешенияпрерыванийпо изменениюPORTB 0 = запрещены прерыванияпо изменениюPORTB 1 = разрешены прерыванияпо изменениюPORTB | |||||||
Бит 2: T0IF: бит запросапрерыванияпо переполнениюTMR0 0 = прерывание по переполнениюTMR0отсутствует 1 = прерывание по переполнениюTMR0имеет место | |||||||
Бит 1: INTF: бит запросапрерыванияпо входуRB0/INT 0 = прерываниепо входуRB0/INTотсутствует 1 = прерываниепо входуRB0/INTимеет место | |||||||
Бит 0: RBTF: бит запросапрерыванияпо изменениюPORTB 0 = ни на одном из входов RB7:RB4состояние не изменилось 1 = хотя бы на одном из входов RB7:RB4изменилось состояние |
Бит разрешения всех прерыванийGIEсбрасывается автоматически при следующих обстоятельствах:
по включению питания;
по внешнему сигналу /MCLR при нормальной работе;
по внешнему сигналу /MCLR в режиме SLEEP;
по окончанию задержки таймера WDT при нормальной работе;
по окончанию задержки таймера WDT в режиме SLEEP.
ПрерываниеINTможет вывести процессор из режимаSLEEP, если перед входом в этот режим битINTEбыл установлен в единицу. Состояние битаGIEтакже определяет: будет ли процессор переходить на подпрограммупрерыванияпосле выхода из режимаSLEEP.
Сброс битов – запросов прерываний– должен осуществляться соответствующей программой обработки.