Регистры специального назначения
Регистр статуса (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 | DС | С |
Бит 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!