- •Введение.
- •1.1. Основные характеристики.
- •1.2. Структурная схема микроконтроллера.
- •1.3. Блоки памяти.
- •1.4. Регистры состояния и управления.
- •1.5. Порты ввода-вывода.
- •2.0.Функциональные модули микроконтроллера pic16f873.
- •2.1. Таймеры.
- •2.1.2. Модуль таймера tmr1.
- •2.1.3. Модуль таймера tmr2.
- •2.2. Модуль сср.
- •2.2.2. Режим сравнения.
- •2.2.3. Режим широтно-импульсного преобразователя (шим).
- •2.3. Модуль ацп.
- •2.3.1.Работа модуля осуществляется в следующей последовательности:
- •2.3.2.Временные требования к работе модуля ацп.
- •2.3.4. Последовательность преобразования аналогового сигнала.
- •2.3.5. Выравнивание результата преобразования.
- •2.3.6. Работа модуля ацп в sleep режиме.
- •2.3.7. Пример программирования модуля ацп.
- •2.4.Универсальный синхронно – асинхронный приемопередатчик (usart).
- •2.4.1.Режим асинхронного полного дуплекса.
- •2.4.1.1. Асинхронный передатчик usart.
- •2.4.1.2. Асинхронный приемник модуля usart.
- •2.5.Модуль ведущего синхронного последовательного порта (mssp).
- •2.5.1. Режим ведомого i2c.
- •2.5.1.1.Прием данных.
- •2.5.1.2. Передача данных.
- •2.5.1.3.Поддержка общего вызова.
- •2.5.1.4.Работа в sleep режиме.
- •2.5.2. Режим ведущего i2c.
- •2.5.3. Подключение абонентов к шине i2c.
- •2.6. Прерывания.
- •2.7. Сторожевой таймер.
- •2.8. Система команд микроконтроллера.
- •Incf Прибавить 1 к содержимому регистра f.
- •Incfsz Прибавить 1 к регистру f, пропустить, если 0.
- •Iorlw Побитное «или» регистра w и константы k.
- •Iorwf Побитное “или» регистров w, f.
- •Xorlw Побитное «Исключающее или» константы и регистра w.
- •Xorwf Побитное «исключающее или» регистров w,f.
Incf Прибавить 1 к содержимому регистра f.
Синтаксис команды: [имя метки] INCF f,d
Операнды: 0 ≤ f ≤ 127
d [0,1]
Операция: (f) + 1 dest
Изменяемые флаги: Z
Описание операции: К содержимому регистра f прибавляется 1,
результат в регистре W, если d = 0, в
регистре f, если d = 1.
Incfsz Прибавить 1 к регистру f, пропустить, если 0.
Синтаксис команды: [имя метки] INCFSZ f,d
Операнды: 0 ≤ f ≤ 127
d [0,1]
Операция: (f) +1 dest, пропустить, если 0
Изменяемые флаги: нет
Описание операции: К содержимому регистра f прибавляется 1.
результат сохраняется в регистре W, если
d =0, и в регистре f, если d =1. Если результат
суммирования равен 0, то следующая команда
пропускается, если не равен 0, то выполняется
следующая команда.
Iorlw Побитное «или» регистра w и константы k.
Синтаксис команды: [имя метки] IORLW k
Операнды: 0 ≤ k ≤ 255
Операция: (W).OR.k W
Изменяемые флаги: Z
Описание операции: Побитное «ИЛИ» содержимого регистра W и
константы k, результат в регистре W.
Iorwf Побитное “или» регистров w, f.
Синтаксис команды: [имя метки] IORWF f,d
Операнды: 0 ≤ f ≤ 127
d [0,1]
Операция: (W).OR.f dest
Изменяемые флаги: Z
Описание операции: Побитное «ИЛИ» регистров W,f.
Результат в регистре W, если d=0, в
регистре f, если d=1/
MOVF Переслать значение регистра f.
Синтаксис команды: [имя метки] MOVF f,d
Операнды: 0 ≤ f ≤ 127
d [0,1]
Операция: (f) dest
Изменяемые флаги: Z
Описание операции: Содержимое регистра f пересылается в
адрес, заданный операндом d, т.е. в
регистр W, если d=0 и в регистр f, если d=1.
MOVLW Переслать константу в регистр W.
Синтаксис команды: [имя метки] MOVLW k
Операнды: 0 ≤ k ≤ 255
Операция: k (W)
Изменяемые флаги: нет
Описание операции: Пересылается константа в регистр W, в
неиспользуемые разряды записывается 0.
MOVWF Переслать содержимое регистра W в регистр f.
Синтаксис команды: [имя метки] MOVWF f
Операнды: 0 ≤ f ≤ 127
Операция: (W) (f)
Изменяемые флаги: нет
Описание операции: Содержимое регистра W пересылается в
регистр f.
NOP Нет операции.
Синтаксис команды: [имя метки] NOP
Операнды: нет
Операция: нет
Изменяемые флаги: нет
Описание операции: нет операции
RLF Циклический сдвиг влево через перенос.
Синтаксис команды: [имя метки] RLF f,d
Операнды: 0 ≤ f ≤ 127
d [0,1]
Операция: см. рисунок
Изменяемые флаги: C
Описание операции: Выполняется циклический сдвиг регистра
f через бит С регистра STATUS, если d =0
результат сохраняется в регистре W, если
d = 1, результат в регистре f.
RRF Циклический сдвиг вправо через перенос.
Синтаксис команды: [имя метки] RRF f,d
Операнды: 0 ≤ f ≤ 127
d [0,1]
Операция: см. рисунок
Изменяемые флаги: С
Описание операции: Выполняется циклический сдвиг регистра f
вправо через бит С регистра STATUS.Если
d = 0, результат остается в регистре W, если
d = 1 – результат в регистре f.
SLEEP Переход в режим энергосбережения.
Синтаксис команды: [имя метки] SLEEP
Операнды: нет
Операция: 00h WDT
1 -TO
0 -PD
Изменяемые флаги: -TO, -PD
Описание операции: Сбрасывается флаг включения питания –PD,
устанавливается в 1 флаг переполнения
сторожевого таймера –TO, сбрасывается
WDT и его предделитель, выключается
тактовый генератор.
SUBLW Вычесть значение регистра W из константы.
Синтаксис команды: [имя метки] SUBLW k
Операнды: 0 ≤ k ≤ 255
Операция: k – (W) W
Изменяемые флаги: C, DC, Z
Описание операции: Из 8-разрядной константы вычитается
содержимое регистра W. Результат
сохраняется в регистре W.
SUBWF Вычитание регистра W из регистра f.
Синтаксис команды: [имя метки] SUBWF f,d
Операнды: 0 ≤ f ≤ 127
d [0,1]
Операция: (f) – (W) dest
Изменяемые флаги: C, DC, Z
Описание операции: Из регистра f вычитается содержимое W,
результат остается в регистре W, если d=0,
если d = 1, результат сохраняется в f.
SWAPF Поменять местами полубайты в регистре f.
Синтаксис команды: [имя метки] SWAPF f,d
Операнды: 0 ≤ f ≤ 127
d [0,1]
Операция: (f<3:0>) (dest <7:4>)
(f<7:4>) (dest <3:0>)
Изменяемые флаги: нет
Описание операции: Меняются местами старший и младший
полубайты регистра f. Результат остается в
регистре W, если d =0 и в регистре f, если
d = 1.