Файл: Архитектура и основы программирования однокристальных микроконтроллеров.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.11.2023
Просмотров: 1050
Скачиваний: 7
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
1. АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРА PIC16F84
Особенности программирования портов
Использование TMR0 с внешним сигналом
Сохранение состояния при прерываниях
Режим пониженного энергопотребления (SLEEP)
Защита программы от копирования
ОСНОВЫ ПРОГРАММИРОВАНИЯ PIC16F84 НА АССЕМБЛЕРЕ
Пример простейшей программы управления портами
АРХИТЕКТУРА И ОСНОВЫ ПРОГРАММИРОВАНИЯ ОДНОКРИСТАЛЬНЫХ МИКРОКОНТРОЛЛЕРОВ PIC16F84
Модуль таймера
Модультаймераимеетследующиеособенности:-
8-разрядный таймер/счетчик, доступен по чтению и записи; -
8-разрядный программируемый предварительный делитель; -
внутреннее или внешнее тактирование; -
прерывание по переполнению счетчика (переход от 0FFh к 00h); -
выбор фронта тактирующего импульса при внешнем тактировании. Упрощенная структурная схема модуля таймера приведена на рис. 1.11.
T0CS PS2, PS1, PS0
Примечания:
при переполнении
-
Биты T0CS, T0SE, PSA, PS2, PS1 и PS0 находятся в регистре OPTION. -
Предварительный делитель используется совместно со сторожевым таймером.
Рис. 1.11. Структурная схема таймера
Режим таймера выбирается установкой в '0' бита T0CS (OPTION<5>). В режиме таймера TMR0 увеличивается в каждом командном цикле (в отсутствии предварительного делителя). Если происходит запись в TMR0, то увеличение счетчика задерживается на два последующих цикла выполнения команды. Запись в TMR0 должна вестись с учетом этой задержки. При необходимости проверки регистра TMR0 на ноль без влияния на процесс счета рекомендуется пользоваться командой MOVF TMR0,W.
Режим счетчика выбирается установкой в '1' бита T0CS (OPTION<5>). В этом режиме TMR0 увеличивается по каждому перепаду 1/0 или 0/1 на выводе T0CKI. Перепад, увеличивающий значение TMR0, выбирается битом выбора фронта переключения T0SE (ОРТION<4>). Установка этого бита в '0' вызывает увеличение TMR0 по перепаду 0/1.
Предварительный делитель может использоваться модулем сторожевого таймера WDT или модулем таймера. Подключение предварительного делителя задается битом PSA (OPTION<3>). Установка бита PSA в '1' подключает предварительный делитель к модулю WDT и устанавливает коэффициент деления для TMR0 1:1. Установка бита PSA в '0' подключает предварительный делитель к модулю таймера. Коэффициент деления предварительного делителя
можетбытьустановленбитамиPS0-PS2регистраOPTION(см.табл.1.3).Сампредварительный делительнедоступен длячтенияи записи.
-
Прерывание от таймера
- 5>2>3>4>5>5>1 ... 8 9 10 11 12 13 14 15 ... 27
Использование TMR0 с внешним сигналом
ЕслидлятактированияTMR0используетсявнешнийсигнал,тоондолженудовлетворятьопределеннымтребованиямдлясинхронизациисвнутренней тактовой частотой. Кроме того, между перепадом на выводе T0CKIиреальнымувеличениемсчетчикаTMR0естьнекотораязадержка.Еслипредварительныйделительнеиспользуется,внешнийтактовыйсигнал на входе T0CKI должен сохранять как высокий, так и низкий уровень втечениенеменеедвухпериодовтактовогогенератора.Когда используется предварительныйделитель,входной сигналTMR0делитсяасинхроннымсчетчикомпредварительногоделителя,поэтомувыходной сигнал делителя является симметричным. Период сигнала на входеTMR0 должен быть не менее четырех периодов тактового генератора. Сигналже на входе T0CKI должен иметь высокие и низкие уровни длительностями неменее10нс. Так как выход предварительного делителя синхронизирован с внутреннейтактовой частотой, то возможна небольшая задержка между перепадом сигналанавыводеТ0СКIи моментомувеличениясодержимого TMR0.-
Предварительный делитель
CLKOUT (=FOSC/4)
0 M U
1
M Синхронизация
Шина данных
8
Вывод
RA4/T0CKI
1 X
0 U два цикла
X
TMR0
T0SE T0CS
0
PSA
-
разрядный
Установка флага прерывания T0IF при переполнении
M
Сторожевой 1 U
таймер X
предварительный делитель
8
PS2...PS0
Разрешение
WDT
PSA
MUX 8 1
0 1
MUX
PSA
Выход
WDT
Примечание.Биты T0CS, T0SE, PSA, PS2...PS0 биты регистра OPTION <6...0>.
Рис. 1.12. Схема использования предварительного делителя
| BCF CLRF | STATUS,RP0 TMR0 | ;Установка банка 0. ;Сброс TMR0. |
| BSF | STATUS,RP0 | ; Установка банка 1. |
| CLRWDT | | ;Сброс WDT и предварительного делителя. |
| MOVLW | b’xxxx1xxx’ | ;Укажите новое значение предварительного |
| MOVWF | OPTION | ; делителя. |
| BCF | STATUS,RP0 | ; Установка банка 0. |
Дляпереключения предварительногоделителясWDTнаTMR0должнабытьвыполненапоследовательность команд:CLRWDT ;СбросWDTипредварительногоделителя.BSF STATUS,RP0;Установкабанка1.MOVLW b’xxxx0xxx’;Указатьновоезначениепредварительногоделителя,;источниктактированияифронтпереключенияTMR0.MOVWF OPTION ;BCF STATUS,RP0;Установкабанка0.Этапоследовательностьдолжнабытьвыполненадажевтомслучае,еслисторожевой таймерWDTзапрещен.
- 1 ... 9 10 11 12 13 14 15 16 ... 27