- •Г.И.Загарий, н.О.Ковзель, в.С.Коновалов, в.И.Моисеенко, в.И.Поддубняк, а.И.Стасюк
- •Часть 2. Характеристики микроконтроллеров и плк
- •Рецензенты:
- •Isbn – 5–7763–0384–2
- •Isbn – 966–7561–23–2
- •Isbn – 966-7561-23-2
- •Isbn – 5–7763–0384-2
- •Содержание
- •Введение
- •Раздел 1
- •1 Микроконтроллеры фирмы Atmel
- •1.1 Микроконтроллеры серии ат89, совместимые с mcs-51™
- •1.2 Микроконтроллеры avr серии ат90 с risc-архитектурой
- •2. Микроконтроллер aDμC812 семейства MicroConverter™ фирмы analog devices
- •3 Микроконтроллеры sx18ac/sx28ac фирмы scenix
- •4 Микроконтроллеры фирмы motorola
- •5 Микроконтроллеры семейства z8 фирмы zilog
- •6 Микроконтроллеры фирмы holtek
- •7 Рiс – микроконтроллеры фирмы microchip
- •7.1 Микроконтроллер pic16f84
- •7.1.1 Архитектура микроконтроллера pic16f84
- •7.1.2 Типы корпусов и исполнения
- •7.1.3 Назначение выводов
- •7.1.4 Регистры pic16f84
- •7.1.5 Прямая и косвенная адресация регистров
- •7.1.6 Модуль таймера/счетчика
- •7.1.7 Предварительный делитель
- •7.1.8 Регистр слова состоянияStatus
- •7.1.8.1 Программные флаги регистра слова состояния
- •7.1.8.2 Аппаратные флаги состояния
- •7.1.9 Регистр option
- •7.1.11 Организация встроенного пзу
- •7.1.12 Программный счетчик и адресация пзу
- •7.1.13 Стек и возвраты из подпрограмм
- •7.1.14 Данные в eeprom
- •7.1.15 Управление eeprom Управляющие регистры для eeprom
- •Регистры eecon1 и eecon2
- •7.1.16 Организация прерываний
- •Внешнее прерывание
- •Прерывание от переполнения счетчика/таймера
- •Прерывание от порта rb
- •Прерывание от eeprom
- •7.1.17 Регистры (порты) ввода/вывода
- •7.1.18 Использование портов ввода/вывода ra и rb Организация двунаправленных портов
- •Последовательное обращение к портам ввода/вывода
- •7.1.19 Специальные функции
- •Сторожевой таймер wdt
- •Тактовый генератор
- •Таймер сброса dtr
- •Биты конфигурации
- •Защита программы от считывания
- •Режим пониженного энергопотребления
- •7.2 Обзор команд и обозначения
- •7.2.1 Описание команд
- •7.3Технология разработки и отладки рабочих программ для омк рiс16/17
- •7.3.1 Правила записи программ на языке Ассемблера
- •Операция
- •Операнд
- •Директивы Ассемблера
- •7.3.2 Структура рабочей программы
- •7.3.3 Преобразование исходного текста рабочей программы в объектный модуль
- •7.4 Интегрированная среда разработки рабочих программ mplab для омк pic
- •7.4.1 Назначение и основные функциональные возможности mplab
- •7.4.2 Краткая характеристика основных программ Редактор mplab
- •Ассемблер mpasm
- •Компилятор mplab-c
- •Программный симулятор-отладчик mplab-sim
- •7.4.3 Главное окно средыMplab Главное меню mplab
- •МенюFile
- •МенюProject
- •МенюEdit
- •МенюDebug (отладка)
- •Меню picstart plus (меню программирования)
- •МенюOptions (параметры)
- •МенюTools
- •7.4.4 Инструментальная панельMplab
- •7.4.5 Строка состояния mplab
- •7.5 Пример разработки программы с использованием mplab
- •7.5.1 Постановка задачи и разработка алгоритма ее решения
- •7.5.2 Написание исходного текста программы
- •Раздел 2
- •8. Характеристики программируемых логических контроллеров
- •8.1. Контроллеры семейства модикон
- •8.1.1. Контроллер tsx 07 Nano
- •Варианты конфигураций
- •Импульсные выходы
- •Программное обеспечение
- •Контрольные вопросы:
- •8.1.2. Контроллер tsx Momentum Общая характеристика
- •Концепция построения
- •Архитектура tsx Momentum
- •Подключение tsx Momentum к сети Modbus Plus
- •Коммуникационный адаптер для сети Interbus
- •Коммуникационный адаптер для сети Profibus dp
- •Коммуникационный адаптер для сети fipio
- •Коммуникационный адаптер для сети Ethernet I/o
- •Базовые модули ввода – вывода
- •Заключение
- •Контрольные вопросы
- •8.1.3. Микроконтроллер tsx 37 Micro Общая характеристика
- •Базовое исполнение tsx 37-10
- •Дисплейный блок
- •Базовое исполнение tsx 37-21 и tsx 37-22
- •Источники питания
- •Коммуникационные возможности
- •Заключение
- •Контрольные вопросы
- •8.2. КонтроллерыTsxQuantum Общая характеристика
- •Источники питания
- •Модули ввода-вывода
- •Модули интерфейса Quantum
- •Заключение
- •Контрольные вопросы
- •8.3. Контроллеры Siemens
- •8.3.1. КонтроллерSimaticS7-200
- •Центральные процессоры
- •Входы и выходы контроллеров s7-200
- •Коммуникационный модуль
- •8.3.2.Контроллер Simatic s7-300
- •Центральные процессоры
- •Сигнальные модули
- •Функциональные модули
- •Коммуникационные модули
- •Заключение
- •Контрольные вопросы
- •8.3.3. Контроллер Simatic s7-400
- •Центральные процессоры
- •Модули ввода-вывода
- •Функциональные модули
- •Коммуникационные процессоры
- •Блоки питания
- •Заключение
- •Контрольные вопросы
- •Раздел 3
- •9. Разработка микропроцессорных систем железнодорожной автоматики
- •9.1. Постановка задачи
- •9.2. Характеристика входных и выходных сигналов.
- •9.3. Разработка структуры системы
- •9.4. Конфигурация цепей ввода-вывода
- •9.5. Определение необходимого количества модулей ввода-вывода
- •9.6.Принципиальные и монтажные схемы
- •Индивидуальные задания
- •10. Примеры практической реализации микропроцессорных систем
- •10.1.Микропроцессорная диспетчерская централизация
- •Объекты контроля
- •Объекты управления
- •10.2.Микропроцессорный маршрутный набор электрической централизации
- •10.2.1 Постановка задачи
- •10.2.2 Общая структура системы управления.
- •10.2.3 Расчет количества входных и выходных сигналов.
- •Расчет потребного количества выходов
- •Управление стрелкой
- •Перечень объектов контроля
- •Расчет потребного количества входов
- •Выбор конфигурации программируемого логического контроллера
- •Разработка структуры информационного взаимодействия компонентов системы
- •Программируемые контроллеры для систем управления.
- •Часть 2. Характеристики микроконтроллеров и плк
- •61052, Харьков, ул. Красноармейская, 7, тел. 24-22-98.
- •61052, Харків, вул. Червоноармійська, 7, тел. 24-22-98.
7.1.5 Прямая и косвенная адресация регистров
При прямой 9-битной адресации (рис. 7.3), младшие 7 бит берутся как прямой адрес из кода операции, а два бита указателя страниц (RP1,RP0) – из регистра статуса (03h).
Рис. 7.3. Формирование адреса регистра при прямой адресации
Регистр FSR (F4) является указателем косвенной адресации. Любая команда, которая использует f0 (IND0,INDF, 00) в качестве регистра фактически обращается к указателю, который хранится в FSR. Чтение косвенным образом самого регистра f0 даст результат 00h. Запись в регистр f0 косвенным образом будет выглядеть как NOP, но биты статуса могут быть изменены. Необходимый 9-битный адрес формируется объединением содержимого 8 – битного FSR регистра и бита IRP из регистра статуса по приведенной на рис. 7.4 схеме.
Рис. 7.4. Формирование адреса регистра при косвенной адресации
Некоторые регистры специальных функций располагаются на странице 1. Чтобы адресоваться к ним, нужно дополнительно установить в единицу бит RP0 в регистре статуса.
7.1.6 Модуль таймера/счетчика
Модуль таймера/счетчика имеет следующие особенности:
• 8-разрядный таймер/счетчик;
• доступен по чтению и записи;
• 8-разрядный программируемый предварительный делитель;
• внутреннее или внешнее тактирование;
• выбор фронта тактирующего импульса при внешнем тактировании.
На рис. 7.5 приведена упрощенная структурная схема модуля таймера, а на рис. 7.6 показана эквивалентная схема вывода T0CKI.
Режим таймеравыбирается установкой в 0 битаT0CS(OPTION<5>). В режиме таймераTMR0 увеличивается в каждом командном цикле (в отсутствии предварительного делителя). Если происходит запись в TMR0, то увеличение счетчика задерживается на два последующих цикла выполнения команды. Запись в TMR0 должна вестись с учетом этой задержки. При необходимости проверки регистра TMR0 на ноль без влияния на процесс счета рекомендуется пользоваться командойMOVFTMR0,W.
Рис. 7.5. Структурная схема модуля таймера
Режим счетчикавыбирается установкой в 1 бита T0CS. В этом режиме TMR0 увеличивается по каждому перепаду 1/0 или 0/1 на выводе T0CKI. Перепад, увеличивающий значение TMR0, выбирается битом выбора фронта переключенияT0SE(OPTION<4>). Установка этого бита в 0 вызывает увеличение TMR0 по перепаду 0/1.
Рис. 7.6. Эквивалентная схема вывода T0CKI
Предварительный делитель может использоваться модулем сторожевого таймера WDTили модулем таймера. Подключение предварительного делителя задается битомPSA(ОРТION<3>). Установка битаPSAв 1 подключает предварительный делитель к модулю WDT и устанавливает коэффициент деления для TMR0 1:1. Установка бита PSA в 0 подключает предварительный делитель к модулю таймера. Коэффициент деления предварительного делителя может быть установлен от 1:2 до 1:256 битамиPSO-PS2 регистраOPTION. Сам счетчик предварительного делителя не доступен для чтения и записи.
7.1.7 Предварительный делитель
Предварительный делитель представляет собой специализированный встроенный 8-разрядный счетчик, который может использоваться как предварительный делитель для TMR0 или как дополнительный делитель для сторожевого таймераWDT(рис. 7.7). Для упрощения в данном описании этот счетчик везде называется предварительным делителем. Необходимо учесть, что делитель может быть использован либо сTMR0, либо со сторожевым таймеромWDT, но не одновременно.
Биты PSAиPS0 –PS2 в регистреOPTIONзадают режим использования предварительного делителя и его коэффициент деления. Когда предварительный делитель используется сTMR0, все команды, производящие запись в регистрTMR0 (например, командыCLRFTMR0,MOVWFTMR0,BSFTMR0,xи т. д.), очищают предварительный делитель. Когда предварительный делитель используется со сторожевым таймеромWDT, командаCLRWDTочищает предварительный делитель одновременно со сбросом сторожевого таймераWDT. Предварительный делитель не может быть считан или записан программно. По сбросу предварительный делитель содержит все 0.
Рис. 7.7. Структурная схема предварительного делителя
Назначение предварительного делителя задается программно и может быть изменено в процессе выполнения программы. Чтобы избежать непредусмотренного сброса контроллера при переключении предварительного делителя с TMR0 наWDT, должна быть выполнена следующая последовательность команд:
MOVLW'хх0х0ххх'B;Выбирается внутренний источник ;сигнала и новое значение ;предварительного делителя.
MOVWFOPTION
CLRFTMR0 ;ОчисткаTMR0 и предварительного ;делителя.
MOVLW'xxxxlxxx'B;ВыбираетсяWDT, значение ;предварительного ;делителя не ;меняется.
MOVWFOPTION
CLRWDT;СбросWDTи предварительного ;делителя.
MOVLW'xxxxlxxx'B;Новое значение предварительного ;делителя.
MOVWFOPTION
Первые две команды требуются только в том случае, если используется внешний сигнал для тактирования TMR0.
В табл. 7.1.5 указаны регистры и отмечены биты, состояние которых связано с работой таймера. Табл. 7.1.6 описывает зависимость коэффициента деления для таймера и сторожевого таймера от состояния битов PS2:PS0 регистраOPTION.
Таблица 7.1.5
Адрес |
Регистр |
Бит7 |
Бит6 |
Бит 5 |
Бит 4 |
БитЗ |
Бит 2 |
Бит1 |
Бит0 |
0lh |
TMR0 |
8-разрядный таймер/счетчик | |||||||
81h |
OPTION |
– |
– |
T0CS |
T0SE |
PSA |
PS2 |
PS1 |
PS0 |
Примечания:
1. Помеченные символом "–" биты отсутствуют. Считываются как 0.
2. Заштрихованные биты не связаны с TMR0.
Таблица 7.1.6
PS2:PS0 |
Коэффициент деления для TMR0 |
Коэффициент деления для WDT |
000 |
1 : 2 |
1 : 1 |
001 |
1 : 4 |
1 : 2 |
010 |
1 : 8 |
1 : 4 |
011 |
1 : 16 |
1 : 8 |
Таблица 7.1.6 (продолжение)
100 |
1 : 32 |
1 : 16 |
101 |
1 : 64 |
1 : 32 |
110 |
1 : 128 |
1 : 64 |
111 |
1 : 256 |
1 : 128 |
Для переключения предварительного делителя с WDTнаTMR0 необходимо выполнить следующую последовательность команд. Эта последовательность должна быть выполнена даже в том случае, если сторожевой таймерWDTзапрещен.
CLRWDT;Сброс сторожевого таймера и ;предварительного делителя.
MOVLW'хххх0ххх'B;ВыборкаTMR0 и нового значения ;предварительного делителя.
MOVWFOPTION