- •1.1 Цель работы
- •1.2 Общие сведения
- •1.3 Области применения
- •1.4 Номенклатура микроконтроллеров семейства pic16f8хх
- •1.5 Технические характеристики микроконтроллера pic16f877
- •1.6 Архитектура микроконтроллера pic16f877
- •1.7 Основные регистры специального назначения
- •1.7.1 Регистр status
- •1.7.3 Регистр intcon
- •1.7.2 Регистр option_reg
- •1.7.4 Регистр pie1
- •1.7.5 Регистр pir1
- •1.7.6 Регистр pie2
- •1.7.7 Регистр pir2
- •1.7.8 Регистр pcon
- •1.7.9 Регистры pclath и pcl
- •1.7.10 Вычисляемый переход
- •1.7.11 Стек
- •1.7.12 Страницы памяти программ
- •1.7.13 Косвенная адресация, регистры indf и fsr
- •1.8 Порты ввода/вывода
- •1.8.1 Регистры portа и trisa
- •1.8.2 Регистры portb и trisb
- •1.8.3 Регистры portc и trisc
- •1.8.4 Регистры portd и trisd
- •1.8.5 Регистры porte и trise
- •1.9 Eeprom память данных и flash память программ
- •1.9.1 Регистры eecon1, eecon2
- •1.9.2 Чтение из eeprom памяти данных
- •1.9.3 Запись в eeprom память данных
- •1.10 Модуль таймера tmr0
- •1.10.1 Прерывания от tmr0
- •1.10.2 Использование внешнего источника тактового сигнала для tmr0
- •1.10.3 Предделитель
- •1.11 Модуль таймера tmr1
- •1.11.1 Работа tmr1 в режиме таймера
- •1.11.2 Работа tmr1 в режиме счетчика
- •1.11.3 Работа tmr1 в режиме синхронного счетчика
- •1.11.4 Работа tmr1 в режиме асинхронного счетчика
- •1.11.5 Чтение/запись tmr1 в асинхронном режиме
- •1.11.6 Генератор tmr1
- •1.11.7 Сброс tmr1 триггером модуля сср
- •1.11.8 Сброс регистров tmr1 (tmr1h, tmr1l)
- •1.11.9 Предделитель tmr1
- •1.12 Прерывания
- •1.12.1 Внешнее прерывание с входа rb0/int
- •1.12.2 Прерывание по переполнению tmr0
- •1.12.3 Прерывание по изменению уровня сигнала на входах rb7:rb4
- •1.13 Система команд
1.4 Номенклатура микроконтроллеров семейства pic16f8хх
Одним из наиболее популярных семейств микроконтроллеров серии PIC фирмы MICROCHIP является модель PIC16F8хх. В состав этого семейства входят следующие микросхемы:
PIC16F873;
PIC16F874;
PIC16F876;
PIC16F877.
Состав микросхем различается, прежде всего, количеством портов ввода/вывода, количеством каналов АЦП, и объёмом памяти. Краткая характеристика семейства микроконтроллеров модели PIC16F8хх приведено в Таблице 1.1.
Таблица 1.1 Характеристика микроконтроллеров модели PIC16F8хх
Параметр |
PIC16F873 |
PIC16F874 |
PIC16F876 |
PIC16F877 |
Тактовая частота |
20 МГц |
20 МГц |
20 МГц |
20 МГц |
Сброс |
POR, BOR (PWRT, OST) |
POR, BOR (PWRT, OST) |
POR, BOR (PWRT, OST) |
POR, BOR (PWRT, OST) |
FLASH память программ (14 – разрядных слов) |
4К |
4К |
8К |
8К |
Память данных (байт) |
192 |
192 |
368 |
368 |
EEPROM память данных (байт) |
128 |
128 |
256 |
256 |
Прерываний |
13 |
14 |
13 |
14 |
Порты ввода/вывода |
Порты A, B, C |
Порты A, B, C, D, E |
Порты A, B, C |
Порты A, B, C, D, E |
Таймеры |
3 |
3 |
3 |
3 |
Продолжение таблицы 1.1
Параметр |
PIC16F873 |
PIC16F874 |
PIC16F876 |
PIC16F877 |
Модуль захват/сравнение/ШИМ |
2 |
2 |
2 |
2 |
Модуль последовательного интерфейса |
MSSP, USART |
MSSP, USART |
MSSP, USART |
MSSP, USART |
Модуль параллельного интерфейса |
– |
PSP |
– |
PSP |
Модуль 10 – разрядного АЦП |
5 каналов |
8 каналов |
5 каналов |
8 каналов |
Инструкций |
35 |
35 |
35 |
35 |
1.5 Технические характеристики микроконтроллера pic16f877
Высокоскоростная RISC архитектура;
35 инструкций;
Все команды выполняются за один цикл, кроме инструкций, переходов, выполняемых за два цикла;
Тактовая частота:
Fтакт = 20МГц;
Tцикла = 200нс (время одного машинного цикла);
До 8к х 14 слов FLASH памяти программ;
До 368 х 8 байт памяти данных (ОЗУ);
До 256 х 8 байт EEPROM памяти данных;
Совместимость по выводам с PIC16C73B/74B/76/77;
Система прерываний (до 14 источников);
8-уровневый аппаратный стек;
Прямой, косвенный и относительный режим адресации;
Сброс по включению питания (POR);
Таймер сброса (PWRT) и таймер ожидания запуска генератора (OST) после включения питания;
Сторожевой таймер WDT с собственным RC – генератором;
Программируемая защита памяти программ;
Режим энергосбережения SLEEP;
Выбор параметров тактового генератора;
Высокоскоростная, энергосберегающая CMOS FLASH/EEPROM технология;
Полностью статическая архитектура;
Программирование в готовом устройстве (используется два вывода микроконтроллера);
Низковольтный режим программирования;
Режим внутрисхемной отладки (используется два вывода микроконтроллера);
Широкий диапазон напряжений питания от 2.0В до 5.5В;
Повышенная нагрузочная способность портов ввода/вывода (25мА);
Малое энергопотребление:
Iп = 0.6 мА при Uп = 3.0В и Fтакт = 4.0 МГц;
Iп = 20мкА при Uп = 3.0В и Fтакт = 32кГц;
Iп < 1 мкА в режиме энергосбережения.
Периферийные модули:
Таймер 0: 8-разрядный таймер/счетчик с 8-разрядным программируемым предделителем;
Таймер 1: 16-разрядный таймер/счетчик с возможностью подключения внешнего резонатора;
Таймер 2: 8-разрядный таймер/счетчик с 8-разрядным программируемым предделителем и выходным делителем;
Два модуля сравнение/захват/ШИМ (ССР):
16-разрядный захват (максимальная разрешающая способность 12.5нс);
16-разрядное сравнение (максимальная разрешающая способность 200нс);
10-разрядный ШИМ;
Многоканальное 10-разрядное АЦП;
Последовательный синхронный порт MSSP;
Ведущий/ведомый режим SPI ведущий/ведомый режим I2C;
Последовательный синхронно-асинхронный приемопередатчик USART с поддержкой детектирования адреса;
Ведомый 8-разрядный параллельный порт PSP с поддержкой внешних сигналов –RD, –WR, –CS;
Детектор пониженного напряжения (BOD) для сброса по снижению напряжения питания (BOR).
На рисунке 1.1 представлена схема расположения выводов, подключения резонатора и питания к PIC-контроллеру. Базовые сведения о назначении выводов микроконтроллера PIC16F877 сведены в таблицу 1.2.
Рисунок 1.1 Условное графическое обозначение PIC16F877
Таблица 1.2 Назначение выводов микроконтроллера PIC16F877
Обозначение вывода |
Выв. |
Тип I/O/P |
Тип буфера |
Описание |
OSC1/CLKIN |
13 |
I |
ST/CMOS(4) |
Вход генератора / вход внешнего тактового сигнала |
OSC2/CLKOUT |
14 |
O |
– |
Выход генератора. Подключается кварцевый или керамический резонатор. В RC режиме тактового генератора на выходе OSC2 присутствует тактовый сигнал CLKOUT, равный Fosc/4 |
–MCLR/Vpp |
1 |
I/P |
ST |
Вход сброса микроконтроллера или вход напряжения программирования. Сброс микроконтроллера происходит при низком логическом уровне сигнала на входе. |
Двунаправленный порт ввода/вывода PORTA. |
||||
RA0/AN0 |
2 |
I/O |
TTL |
RA0 может быть настроен как аналоговый канал 0. |
RA1/AN1 |
3 |
I/O |
TTL |
RA1 может быть настроен как аналоговый канал 1. |
RA2/AN2A/VREF- |
4 |
I/O |
TTL |
RA2 может быть настроен как аналоговый канал 2 или вход отрицательного опорного напряжения. |
RA3/AN3A/VREF+ |
5 |
I/O |
TTL |
RA3 может быть настроен как аналоговый канал 3 или вход положительного опорного напряжения. |
RA4/T0CKI |
6 |
I/O |
ST |
RA4 может использоваться в качестве входа внешнего тактового сигнала для TMR0. Выход с открытым стоком. |
RA5/-SS/AN4 |
7 |
I/O |
TTL |
RA5 может быть настроен как аналоговый канал 4 или вход выбора микросхемы в режиме ведомого SPI. |
Двунаправленный порт ввода/вывода PORTB. PORTB имеет программно подключаемые подтягивающие резисторы на входах. |
||||
RB0/INT |
33 |
I/O |
TTL/ ST(1) |
RB0 может использоваться в качестве входа внешних прерываний. |
RB1 |
34 |
I/O |
TTL |
|
RB2 |
35 |
I/O |
TTL |
|
RB3/PGM |
36 |
I/O |
TTL |
RB3 может использоваться в качестве входа для режима низковольтного программирования. |
RB4 |
37 |
I/O |
TTL |
Прерывания по изменению уровня входного сигнала. |
RB5 |
38 |
I/O |
TTL |
Прерывания по изменению уровня входного сигнала. |
RB6/PGC |
39 |
I/O |
TTL/ ST(2) |
Прерывания по изменению уровня входного сигнала или вывод для режима внутрисхемной отладки ICD. Тактовый вход в режиме программирования. |
RB7/PGD |
40 |
I/O |
TTL/ ST(2) |
Прерывания по изменению уровня входного сигнала или вывод для режима внутрисхемной отладки ICD. Вывод данных в режиме программирования. |
Двунаправленный порт ввода/вывода PORTC. |
||||
RC0/T1OSO/T1CKI |
15 |
I/O |
ST |
RC0 может использоваться в качестве выхода генератора TMR1 или входа внешнего тактового сигнала для ТМR1. |
RC1/T1OSI/CCP2 |
16
|
I/O
|
ST
|
RC1 может использоваться в качестве входа генератора для TMR1 или вывода модуля ССР2. |
RC2/CCP1 |
17 |
I/O |
ST |
RC2 может использоваться в качестве вывода модуля ССР1. |
RC3/SCK/SCL |
18 |
I/O |
ST |
RC3 может использоваться в качестве входа/выхода тактового сигнала в режиме SPI и I2C. |
RC4/SDI/SDA |
23 |
I/O |
ST |
RC4 может использоваться в качестве входа данных в режиме SPI или вход/выход данных в режиме I2C. |
RC5/SDO |
24 |
I/O |
ST |
RC5 может использоваться в качестве выхода данных в режиме SPI. |
RC6/TX/CK |
25 |
I/O |
ST |
RC6 может использоваться в качестве вывода передатчика USART в асинхронном режиме или вывода синхронизации USART в синхронном режиме. |
RC7/RX/DT |
26 |
I/O |
ST |
RC7 может использоваться в качестве вывода приемника USART в асинхронном режиме или вывода данных USART в синхронном режиме. |
Продолжение таблицы 1.2 Назначение выводов микроконтроллера PIC16F877
Обозначение вывода |
Выв. |
Тип I/O/P |
Тип буфера |
Описание |
Двунаправленный порт ввода/вывода PORTD или ведомый параллельный порт для подключения к шине микропроцессора. |
||||
RD0/PSP0 |
19 |
I/O |
ST/TTL (3) |
|
RD1/PSP1 |
20 |
I/O |
ST/TTL (3) |
|
RD2/PSP2 |
21 |
I/O |
ST/TTL (3) |
|
RD3/PSP3 |
22 |
I/O |
ST/TTL (3) |
|
RD4/PSP4 |
27 |
I/O |
ST/TTL (3) |
|
RD5/PSP5 |
28 |
I/O |
ST/TTL (3) |
|
RD6/PSP6 |
29 |
I/O |
ST/TTL (3) |
|
RD7/PSP7 |
30 |
I/O |
ST/TTL (3) |
|
Двунаправленный порт ввода/вывода PORTE. |
||||
RE0/-RD/AN5 |
8 |
I/O |
ST/TTL (3) |
RE0 может использоваться в качестве управляющего входа чтения PSP или аналогового канала 5. |
RE1/-WR/AN6 |
9 |
I/O |
ST/TTL (3) |
RE1 может использоваться в качестве управляющего входа записи PSP или аналогового канала 6. |
RE2/-CS/AN7 |
10 |
I/O |
ST/TTL (3) |
RE2 может использоваться в качестве управляющего входа выбора PSP или аналогового канала 7. |
VSS |
12,31 |
P |
– |
Общий вывод для внутренней логики и портов ввода/вывода. |
VDD |
11,32 |
P |
– |
Положительное напряжение питания для внутренней логики и портов ввода/вывода. |
Обозначение:
I = вход, О = выход, I/O = вход/выход, Р = питание, – = не используется, TTL = входной буфер ТТЛ, ST = вход с триггером Шмидта.
Примечание:
Входной буфер с триггером Шмидта при использовании внешних прерываний.
Входной буфер с триггером Шмидта при работе в режиме последовательного программирования.
Входной буфер с триггером Шмидта в режиме цифровых портов ввода/вывода. В режиме ведомого параллельного порта подключены входные буферы ТТЛ (для совместимости с шиной микропроцессора).
Входной буфер с триггером Шмита в режиме RC генератора и CMOS буфер в других режимах.
