Регистры специального назначения



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

 

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 /ТО /РD Z С
Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0

 

 

Бит 7: IRP: бит выбора страницы банка данных (используется при косвенной адресации)

0 = банк 0,1 (00h-FFh)

1 = банк 2,3 (100h-1FFh)

Бит IRP не используется в МК подгруппы PIC16F8Х

Биты 6-5 RP1:RP0 биты выбора страницы банка данных (исполь­зуются при прямой адресации)

00 = банк 0(00h – 7Fh)

01 = банк1 (80h - FFh)

 

10 = банк2(100h17Fh)

11 = банкЗ(180h – 1FFh)

В МК подгруппы PIC16F8Х используется только бит RP0

Бит 4: /ТО: бит срабатывания сторожевого таймера

1 = после включения питания, а также командами CLRWDT и SLEEP

0 = по завершении выдержки сторожевого таймера

Бит 3: /RD: бит снижения потребляемой мощности

1 = после включения питания, а также командой CLRWDT

0 = по команде SLEEP

Бит 2: Z: бит нулевого результата

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

0 = результат арифметической или логической операции ненулевой

Бит 1: DС: бит десятичного переноса/заема (для команд ADDWF и

АDDLW)

1 = имеет место перенос из 4-го разряда

0 = нет переноса из 4-го разряда

Бит 0: С: бит переноса/заема (для команд АDDWF и АDDLW)

1 = имеет место перенос из самого старшего разряда

0 = нет переноса из самого старшего разряда

Примечание: вычитание осуществляется путем прибавления

дополнительного кода второго операнда. При выполнении команд

сдвига этот бит загружается из младшего или старшего разряда

сдвигаемого источника.

Здесь и далее: R — читаемый бит; W — записываемый бит; S — устанав­ливаемый бит; U — неиспользуемый бит (читается как «О»); -п = 0 или 1 —' значение бита после сброса.

Регистр конфигурации (OPTION) является доступным по чтению и за­писи регистром, который содержит управляющие биты для конфигура­ции предварительного делителя (пределителя), внешних прерываний, таймера. Назначение бит регистра приведено в таблице

 

/RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
Бит 7 Бит 6 Бит 5 Бит 4 БитЗ Бит 2 Бит1 Бит 0

Бит 7: /RBPU: бит установки резисторов «pull - up» на выводах PORTВ

0 = резисторы «pull - up» подключены

1 = резисторы «pull - up» отключены

Бит 6: INTEDG: бит выбора перехода сигнала прерывания

0 = прерывание по спаду сигнала на выводе RB0/INT

1 = прерывание по фронту сигнала на выводе RB0/INT

 

Бит 5: T0CS: бит выбора источника сигнала таймера TMR0

0 = внутренний тактовый сигнал (СLKOUT)

1 = переход на выводе RA4/T0CK1

Бит 4: T0SE: бит выбора перехода источника сигнала для ТМR0

0= приращение по фронту сигнала на выводе RA4/T0CK1

 

1= приращение по спаду сигнала на выводе RA4/T0CK1

 

Бит 3: PSA: бит назначения пределителя

0 = пределитель подключен к ТМR0

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

Биты 2-0: PS2- PS0: биты выбора коэффициента деления пределителя

 

Значения бит Скорость ТМR0 Скорость 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) является доступным по чтению и записи регистром, который содержит биты доступа для всех источников прерываний.

 Назначение бит регистра приведено в таблице

 

 

GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
Бит? Бит 6 Бит 5 Бит 4 БитЗ Бит 2 Бит1 Бит0

Бит 7: GIE: бит разрешения всех прерываний

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

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

 Бит 6: EEIE : бит разрешения прерывания записи в ЕЕРROМ

0 = запрещены прерывания записи в ЕЕРROМ

1 = разрешены прерывания записи в ЕЕРROМ

Бит 5: T0IE: бит разрешения прерывания по переполнению ТМR0

0 = запрещены прерывания от ТМR0

1 = разрешены прерывания от ТМR0

Бит 4: INTE: бит разрешения прерываний по входу RB0/INT

0 = запрещены прерывания по входу RB0/INT

1= разрешены прерывания по входу RB0/INT

Бит 3: RBIE: бит разрешения прерываний по изменению PORTB

0 = запрещены прерывания по изменению PORTB

1 = разрешены прерывания по изменению PORTB

Бит 2: T0IF: бит запроса прерывания по переполнению ТМR0

0= прерывание по переполнению ТМR0 отсутствует

1= прерывание по переполнению ТМR0 имеет место

Бит 1: INTF: бит запроса прерывания по входу RB0/INT

0 = прерывание по входу RB0/INT отсутствует

1 = прерывание по входу RB0/INT имеет место

Бит 0: RBIF: бит запроса прерывания по изменению PORTB

0 = ни на одном из входов RВ7:RВ4 состояние не изменилось

1 = хотя бы на одном из входов RВ7:RВ4 изменилось состояние

 

Бит разрешения всех прерываний GIE сбрасывается автоматически при следующих обстоятельствах:

• по включению питания;

• по внешнему сигналу /MCLR при нормальной работе;

• по внешнему сигналу /МCLR в режиме SLЕЕР;

• по окончанию задержки таймера WDT при нормальной работе;

• по окончанию задержки таймера WDT в режиме SLЕЕР.

 

 

Занятие 47(51)

Счетчик команд

 

 

• Счетчик команд PCLи РСLATH имеет разрядность 13 бит. Младший байт счетчика (PCL) доступен для чтения и записи и находится в регистре 02h. Старший байт счетчика команд не может быть напрямую записан или считан и берется из регистра РСLATH, адрес которого ОАh. Содержимое РСLATH передается в старший байт счетчика команд, когда он   загружается новым значением.

 В зависимости от того, загружается ли в счетчик команд новое значение во время выполнения команд САLL, GОТО, или в младший байт счетчика команд (РСL) производится запись, - старшие биты счетчика команд заг­ружаются из РСLATH разными способами

 

 

Команды САLL и GОТО оперируют 11-разрядным адресным диапазоном, достаточным для смещения в пределах страницы программной памяти объемом 2К слов. С целью обеспечения возможности расширения памяти команд для будущих моделей МК предусмотрена загрузка двух старших бит счетчика команд  из регистра РСLATH <4:3>. При использовании команд СALL и GОТО  пользователь должен убедиться в том, что эти страничные биты запрограммированы для выхода на нужную страницу. При выполнении команды САLL или выполнении прерывания весь 13-битный счетчик команд  помещается в стек, поэтому для возвращения из подпрограммы не нужны манипуляции с разрядами РСLATH <4:3>.

Возможность выполнять арифметические операции непосредственно над счетчиком команд позволяет очень быстро и эффективно осуществ­лять табличные преобразования в РIС-контроллерах.

Микроконтроллеры подгруппы РIС16F8Х имеют восьмиуровневый ап­паратный стек шириной 13 бит. Текущее значение счетчика команд посылается в стек, когда выполняется команда САLL или производится обработка пре­рывания. При выполнении процедуры возврата из подпрограммы (коман­ды RETLW и т.д.) содержимое счетчика команд восста­навливается из стека. Регистр РСLATH при операциях со стеком не изменяется.

Стек работает как циклический буфер. Следовательно, после того как стек был загружен 8 раз, девятая загрузка перепишет значение первой. Де­сятая загрузка перепишет вторую и т.д. Если стек был выгружен 9 раз, счет­чик команд становится таким же, как после первой выгрузки.

Признаков положения стека в контроллере не предусмотрено, поэтому пользователь должен самостоятельно следить за уровнем вложения под­программ.

 

Прямая и косвенная адресации

Прямая адресация.

Когда производится прямая 9-битная адресация, младшие 7 бит берутся как прямой адрес из кода операции, а два бита указателя страниц (RР1,RРО) из регистра статуса (ОЗh).

Косвенная адресация

FSR (04 h )- Указатель косв.адресации

Любая команда, которая использует INDF (адрес ООh) в качестве реги­стра фактически обращается к указателю, который хранится в FSR (04h). Чте­ние косвенным образом самого регистра INDF даст результат ООh. Запись в регистр INDF косвенным образом будет выглядеть как NOP, но биты статуса могут быть изменены. Необходимый 9-битный адрес формируется объединени­ем содержимого 8-битного FSR регистра и бита IRP из регистра статуса.

 

Занятие 48(52)

Порты ввода/вывода

Контроллеры подгруппы РIС16F8Х имеют два порта: РОRТА (5 бит) и РОRТВ (8 бит) с побитовой индивидуальной настройкой на ввод или на вывод.

 

Порт А (РОRТА) представляет собой 5-битовый фиксатор, соответствую­щий выводам контроллера RА<4:0>. Линия RА4 имеет вход триггера Шмитта и выход с открытым стоком. Все остальные линии порта имеют ТТЛ вход­ные уровни и КМОП выходные буферы. Адрес регистра порта А – 05h.

Каждой линии порта поставлен в соответствие бит направления пере­дачи данных, который хранится в управляющем регистре ТRISА, распо­ложенном по адресу 85h. Если бит управляющего ТRISА регистра имеет значение 1, то соответствующая линия будет устанавливаться на ввод. Ноль переключает линию на вывод и одновременно выводит на нее содержи­мое соответствующего регистра-фиксатора порта. При включении пита­ния все линии порта по умолчанию настроены на ввод.

Операция чтения порта А считывает состояние выводов порта, в то вре­мя как запись в него изменяет состояние триггеров порта. Все операции с портом являются операциями типа «чтение-модификация-запись». По­этому запись в порт предполагает, что состояние выводов порта вначале считывается, затем модифицируется и записывается в триггер-фиксатор.

Вывод RА4 мультиплексирован с тактовым входом таймера ТMR0.

 

 

 

 

Порт В (РОRТВ) - это двунаправленный 8-битовый порт, соответству­ющий выводам RB<7:0> контроллера и расположенный по адресу 06h. Относящийся к порту В управляющий регистр ТRISВ расположен на первой странице регистров по адресу 86h. Если бит управляющего ТRISВ регист­ра имеет значение 1, то соответствующая линия будет устанавливаться на ввод. Ноль переключает линию на вывод и одновременно выводит на нее содержимое соответствующего регистра защелки. При включении питания все линии порта по умолчанию настроены на ввод.

У каждой ножки порта В имеется небольшая активная нагрузка на линию питания (pull-up). Она автоматически отключается, если эта ножка запрограммирована как вывод. Более того, управляющий бит / RBPU регистра ОРТION<7> может отключить) все нагруз­ки. Сброс при включении питания также отключает все нагрузки.

Четыре линии порта В (RВ<7:4>) могут вызвать прерывание при изме­нении значения сигнала на любой из них. Если эти линии настроены на ввод, то они опрашиваются и защелкиваются в цикле чтения Q1. Новая величина входного сигнала сравнивается со старой в каждом командном цикле. При несовпадении значения сигнала на ножке и в фиксаторе гене­рируется высокий уровень. Выходы детекторов «несовпадений» R.В4, RВ5, RВ6, RВ7 объединяются по ИЛИ и генерируют прерывание RBIF (запо­минаемое в регистре INTCON<0>). Любая линия, настроенная как вывод, ,в этом сравнении не участвует. Прерывание может вывести кристалл из режима SLЕЕР. В подпрограмме обработки прерывания следует сбросить запрос прерывания одним из следующих способов:

• прочитать (или записать в) порт В. Это завершит состояние сравнения;

• обнулить бит RBIF регистра INTCON<0>.

При этом необходимо иметь в виду, что условие «несовпадения» будет продолжать устанавливать признак RBIF. Только чтение порта В может устранить «несовпадение» и позволит обнулить бит RBIF.

Прерывание по несовпадению и программно устанавливаемые внут­ренние активные нагрузки на этих четырех линиях могут обеспечить про­стой интерфейс, например, с клавиатурой, с выходом из режима SLЕЕР по нажатию клавиш.

 

 

Занятие 49(53)


Дата добавления: 2022-01-22; просмотров: 18; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!