- •Введение.
- •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.
2.4.Универсальный синхронно – асинхронный приемопередатчик (usart).
Модуль USART представляет собой устройство ввода/вывода последовательного типа и предназначен для связи с любым устройством, поддерживающим заданный формат представляемой информации и согласованное по уровням передаваемых сигналов. Для обмена с абонентами модуль использует выводы микроконтроллера RC6 и RC7, которые настраиваются на вход или выход с помощью регистра TRISC, о чем будет сказано в соответствующем разделе.
Модуль может работать в одном из трех режимов:
- асинхронный полный дуплекс,
- ведущий синхронный полудуплекс,
- ведомый синхронный полудуплекс.
На практике наибольший интерес представляет режим асинхронного полного дуплекса. Рассмотрим его подробно.
2.4.1.Режим асинхронного полного дуплекса.
В этом режиме есть два подрежима:
- подрежим прямого обмена с одним абонентом,
- подрежим сетевого обмена.
Для выбора соответствующего подрежима используется 9 – ый разряд передающего регистра. Если он равен 0, то выбирается подрежим прямого обмена и принятый приемником байт является байтом данных. Если же 9–ый разряд равен 1, то принятый всеми приемниками сетевой структуры байт является адресом устройства в сети и следующий принятый байт является байтом данных для данного адресата.
Для удобства изучения рассмотрим отдельно работу передатчика и приемника.
2.4.1.1. Асинхронный передатчик usart.
Структурная схема передатчика показана на рис.
Работает передатчик следующим образом. Для настройки и управления модулем USART используется два регистра специального назначения: TXSTA и RCSTA, значения разрядов которых приведены в таблицах 24,25. Принцип работы передатчика аналогичен работе любого последовательного порта: передаваемый байт записывается в буферный регистр TXREG (адрес 19h) обычным циклом записи. Из буферного регистра байт автоматически переписывается в сдвиговый регистр TSR, где к передаваемому байту автоматически пристыковываются служебные биты: старт-бит и стоп-бит. В случае использования сетевого подрежима в восьмой бит регистра TSR (0 бит регистра TXSTA) записывается программно 1, если передаваемый байт является адресом абонента, или 0, если байт является информацией. В момент окончания перезаписи байта из регистра TXREG в регистр TSR устанавливается в «1» флаг TXIF, свидетельствующий о том, что буферный регистр пуст и в него можно записывать очередной байт для передачи, при разрешении работать по прерываниям, флаг TXIF совместно с сигналом TXIE вызывают прерывание микроконроллера от передатчика модуля USART. При поступлении на вход регистра TSR тактовых импульсов из генератора скорости обмена SPBRG содержимое регистра TSR выдвигается через вывод RC6/TX микроконтроллера и поступает на вход приемника абонента (абонентов для сетевого подрежима).
Скорость передачи определяется настройкой генератора скорости обмена SPBRG и выбором низкоскоростного режима (BGRH = 0, бит 2 регистра TXSTA), или высокоскоростного режима (BGRH = 1). Скорость в данном случае рассчитывается по формулам:
Vclk = Fosc / 64 (X+1) - для низкоскоростного режима,
Vclk = Fosc / 16 X+1) – для высокоскоростного режима.
где: X – число записанное в регистр SPBRG (адрес 99h), выбранное из таблицы 22.
Таблица 22 (для Fosc = 4 МГц).
Скорость обмена в К/бод |
0,3 |
1,2 |
2,4 |
9,6 |
19,2 |
28,8 |
57,6 |
Значение SPBRG (десятичное) |
207 |
51 |
25 |
6 |
2 |
1 |
0 |
Распределение и обозначение битов регистра настройки передатчика TXSTA (адрес 98h) приведено в таблице 23
Регистр TXSTA Таблица 23
Номер разряда |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Обозн. разряда |
CSRC |
TX9 |
TXEN |
SYNC |
- |
BRGH |
TRMT |
TX9D |
где:
7 бит – CSRC – осуществляет выбор источника тактового сигнала для синхронного режима: бит =1- внутренний тактовый сигнал от генератора BRG, бит =0- внешний тактовый сигнал с вывода RC6. Для рассматриваемого асинхронного режима бит не имеет значения.
6 бит – TX9 - разрешение 9-ти разрядной передачи: 1 – 9-ти разрядная передача, 0 – 8-ми разрядная передача.
5 бит – TXEN – разрешение передачи: 1 – передача разрешена, 0 = передача запрещена.
4 бит – SYNC – режим работы модуля USART: 1 – синхронный, 0 – асинхронный.
3 бит – не используется.
2 бит – BRGH – выбор скоростного режима: 1 – высокоскоростной режим, 0 – низкоскоростной режим.
1 бит – TMRT – флаг состояния сдвигового регистра TSR: 1- регистр пуст, 0 – регистр занят,
0 бит – TX9D – значение 9-го разряда при 9-ти разрядной передаче.
Рекомендуемая последовательность действий при программировании передатчика:
1.Установить расчетную скорость передачи с помощью регистра SPBRG и бита BRGH в регистре TXSTA.
2. Выбрать асинхронный режим передачи сбросом бита SYNC в регистре TXSTA и установкой бита SPEN в регистре RCSTA (см. ниже).
3. При выборе режима обслуживания прерывания необходимо:
- установить бит TXIE в регистре PIE1,
- установить бит PEIE в регистре INTCON – прерывание от периферийных модулей,
- установить бит GIE в регистре INTCON – глобальное прерывание.
4. При 9-ти разрядной передаче разрешить ее установкой бита TX9 в регистре TXSTA.
5. Разрешить передачу установкой бита TXEN, при этом автоматически установится
флаг TXIF, что приведет к вызову подпрограммы прерывания, если оно разрешено.
6. Если передача 9-ти разрядная записать соответствующее число в разряд TX9D.
7. Записать передаваемый байт в регистр TXREG.
Примечание.
При передаче массива данных возможны два варианта:
при работе по прерываниям запись очередного байта, запись 9-го разряда при9-ти разрядной передаче, контроль окончания передачи массива, а также управление битами прерывания TXIE, PEIE, GIE производится в подпрограмме обслуживания прерывания.
при работе без прерывания перед записью 9-го разряда и передаваемого байта необходимо убедиться, что буфер TXREG пуст ( бит TXIF – 4 бит в регистре PIR1 равен 1).