Курсовая работа: Разработка и описание работы устройства на PIC-контроллере
-
Внешнее по изменению состояния
одной из линий RB4-RB7 порта В
-
Внутреннее по переполнению
таймера/счетчика TMR0
-
Внутреннее по окончанию записи в
EEPROM.
Для каждого из прерываний 1, 2 и 3 существует свой
флаг-бит в регистре INTCON, сигнализирующий о поступлении конкретного вида
запроса. Для прерывания 4 флаг-бит хранится в регистре EECON1. Анализируя эти
биты подпрограмма обработки прерываний, начинающаяся с адреса 0004h, определяет
источник прерывания. Кроме этого, в регистре INTCON содержится бит глобального
запрета прерываний GIE и биты индивидуального запрета каждого прерывания. Когда
бит GIE сброшен, все прерывания запрещены. При включении питания бит GIE по
умолчанию сброшен.
Когда поступает прерывание, бит GIE сбрасывается,
чтобы не допустить возникновения нового прерывания (поскольку у
микроконтроллера PIC16F84 существует только один вектор прерывания), адрес
возврата загружается в стек, а в программный счетчик загружается адрес-вектор
0004h. Инструкция возврата из подпрограммы обработки прерывания RETFIE
устанавливает бит GIE в единицу, тем самым разрешая прерывания.
Обработка запроса внешнего прерывания может занимать
три или четыре командных цикла процессора, в зависимости от того, в какой
момент времени обнаружен запрос.
Все флаг-биты прерываний должны быть сброшены
программно до того, как прерывания вновь будут разрешены установкой бита GIE. В
противном случае может произойти повторный вход в прерывание и зацикливание
программы. Также следует помнить, что флаг-биты прерываний устанавливаются в
соответствии с прерывающими событиями независимо от того, замаскированы эти
прерывания, или нет. Игнорирование этих фактов приводит к достаточно
распространенным ошибкам программирования, которые могут проявить себя не
сразу.
Энергосберегающий режим SLEEP.
Микроконтроллер переводится в режим SLEEP при
выполнении специальной команды SLEEP. Если сторожевой таймер включен, то он
обнуляется и начинает отсчет задержки заново. В регистре STATUS сбрасывается
бит PD и устанавливается бит ТО. Тактовый генератор отключается. Выводы портов
сохраняют состояние, которое было непосредственно перед исполнением команды
SLEEP.
Пробуждение из режима SLEEP.
Процессор может быть выведен из режима SLEEP тремя
различными способами:
-
внешним сбросом по входу MCLR;
-
при переполнении сторожевого
таймера (если он включен);
-
прерыванием по входу RB0/INT, по
изменению состояния входов RB4-RB7 или по окончанию записи в EEPROM.
Событие 1 приводит к сбросу процессора и исполнению
программы с начального адреса. Два остальных события приводят к продолжению
исполнения программы. Во время исполнения команды SLEEP процессор загружает в
буфер команд следующую команду (РС+1). Чтобы контроллер вышел из режима SLEEP
по прерыванию, оно должно быть разрешено соответствующими битами.
Порядок пробуждения по прерыванию зависит от состояния
бита GIE. Если этот бит сброшен, то после пробуждения выполняется команда,
следующая за командой SLEEP (и уже загруженная в буфер) и далее по порядку.
Если бит GIE установлен в 1, то сначала исполняется команда, загруженная в
буфер, а затем процессор переходит на адрес-вектор прерывания 0004h. Если
исполнение команды, следующей за SLEEP, при выходе по прерыванию нежелательно,
то сразу после команды SLEEP должна следовать команда NOP.
Система команд
Каждая команда контроллера PIC16F84 представляет собой
14-битное слово, состоящее из кода команды (OPCODE) и одного или нескольких
операндов.
f - Адрес специального регистра или регистра
пользователя. Диапазон значений от 0x00 до 0x7F. Фирменный ассемблер допускает
применять вместо цифровых значений непосредственно имена регистров,
определенные ранее.
W - Рабочий регистр (аккумулятор)
b - Битовый адрес, используемый с 8-битным регистром,
и указывающий внутри регистра на бит, с которым выполняется битовая операция. В
ассемблерном тексте обозначает константу, представленную в двоичном счислении.
k - Литерал,
константа или метка.
d - Указатель приемника результата операции. Если d=0,
результат сохраняется в W, если d= 1, результат сохраняется в регистре,
объявленном в команде. По умолчанию d=l. Никакой другой регистр, кроме
используемого в операции, не может быть назначен приемником. Фирменный ассемблер
для большей наглядности допускает применять вместо значений 0 и 1
соответственно символы w и f.
Таблица 3.6 -
Система команд микроконтроллера PIC16F84
Мнемоника
операнды
|
Расшифровка мнемоники |
Количество
циклов
|
Изменяемые
регистры
|
Примечание |
БАЙТОВЫЕ ОПЕРАЦИИ С
РЕГИСТРАМИ |
ADDWF f, d |
Add W and F |
1 |
C, DC, Z |
1,2 |
ANDWF f, d |
AND W with F |
1 |
Z |
1,2 |
CLRF f |
Clear F |
1 |
Z |
2 |
CLRW |
Clear W |
1 |
Z |
|
СОМF f, d |
Complement F |
1 |
Z |
1,2 |
DECF f, d |
Decrement F |
1 |
Z |
1,2 |
DECFSZ f, d |
Decrement F, Skip if
Zero |
1(2) |
|
1,2,3 |
INCF f, d |
Increment F |
1 |
Z |
1,2 |
INCFSZ f, d |
Increment F, Skip if
Zero |
1(2) |
|
1,2,3 |
IORWF f, d |
Inclusive OR W with F |
1 |
Z |
1,2 |
MOVF f, d |
Move F |
1 |
Z |
1,2 |
MOVWF f |
Move W to F |
1 |
|
|
NOP |
No Operation |
1 |
|
|
RLF f,d |
Rotate Left F through
carry |
1 |
C |
1,2 |
RRF f,d |
Rotate Right through
carry |
1 |
C |
1,2 |
SUBWF f, d |
Subtract W from F |
1 |
C, DC, Z |
1,2 |
SWAPF f, d |
Swap nibbles in F |
1 |
|
1,2 |
XORWF f, d |
Exclusive OR W with F |
1 |
Z |
1,2 |
Мнемоника
операнды
|
Расшифровка мнемоники |
Количество
циклов
|
Изменяемые
регистры
|
Примечание |
БИТОВЫЕ ОПЕРАЦИИ С
РЕГИСТРАМИ |
BCF f, b |
Bit Clear F |
1 |
|
1,2 |
BSF f, b |
Bit Set F |
1 |
|
1,2 |
BTFSC f, b |
Bit Test F, Skip if
Clear |
1(2) |
|
3 |
BTFSS f, b |
Bit Test F, Skip if
Set |
1(2) |
|
3 |
ОПЕРАЦИИ С ЛИТЕРАЛАМИ
И ПЕРЕХОДЫ |
ADDLW k |
Add Literal and W |
1 |
C, DC, Z |
|
|
ANDLW k |
AND Literal with W |
1 |
Z |
|
|
CALL k |
Call subroutine |
2 |
|
|
|
CLRWDT |
Clear Watchdog Timer |
1 |
TO, PD |
|
|
GOTO k |
Go To address |
2 |
|
|
|
IORLW k |
Inclusive OR Literal
with W |
1 |
Z |
|
|
MOVLW k |
Move Literal to W |
1 |
|
|
|
RETFIE |
Return From Interrupt |
2 |
|
|
|
RETLW k |
Return with Literal in
W |
2 |
|
|
|
RETURN |
Return from subroutine |
2 |
|
|
|
SLEEP |
Sleep into standby
mode |
1 |
TO, PD |
|
|
SUBLW k |
Subtract W from
Literal |
1 |
C, DC, Z |
|
|
XORLW k |
Exclusive OR Literal
with W |
1 |
Z |
|
|
|
|
|
|
|
|
|
|
|
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9 |