Содержание
Введение 2
1. Микроконтроллер PIC16F62X 3
1.1 Структурная схема микроконтроллера 3
1.2 Обзор архитектуры 5
1.3 Назначение основных узлов и принцип работы 6
1.3.1 Ядро микроконтроллера 6
1.3.2 Периферийные модули 7
1.3.3 Специальные особенности микроконтроллеров 7
1.4 Тактовый генератор 8
1.4.1 Режимы тактового генератора 9
1.5 Центральное процессорное устройство 10
1.6 Арифметико-логическое Устройство (АЛУ) 10
1.7 Память 11
1.7.1 Организация памяти программ 12
1.7.2 Организация памяти данных 13
1.8 Прерывания 14
1.9 Порты ввода/вывода 16
1.10 Назначение выводов 18
1.11 Корпуса микроконтроллеров 20
1.12 Технические характеристики 24
2. Разработка программы 26
2.1 Текст программы: 26
Введение
Можно считать что микроконтроллер (МК) – это компьютер, разместившийся в одной микросхеме. Отсюда и его основные привлекательные качества: малые габариты; высокие производительность, надежность и способность быть адаптированным для выполнения самых различных задач.
Микроконтроллер помимо центрального процессора (ЦП) содержит память и многочисленные устройства ввода/вывода: аналого-цифровые преобразователи, последовательные и параллельные каналы передачи информации, таймеры реального времени, широтно-импульсные модуляторы (ШИМ), генераторы программируемых импульсов и т.д. Его основное назначение – использование в системах автоматического управления, встроенных в самые различные устройства: кредитные карточки, фотоаппараты, сотовые телефоны, музыкальные центры, телевизоры, видеомагнитофоны и видеокамеры, стиральные машины, микроволновые печи, системы охранной сигнализации, системы зажигания бензиновых двигателей, электроприводы локомотивов, ядерные реакторы и многое, многое другое. Встраиваемые системы управления стали настолько массовым явлением, что фактически сформировалась новая отрасль экономики, получившая название Embedded Systems (встраиваемые системы).
1. Микроконтроллер PIC16F62X
1.1 Структурная схема микроконтроллера
18-выводные FLASH микроконтроллеры PIC16F62X входят в состав распространенного семейства PICmicro PIC16CXX. Микроконтроллеры этого семейства имеют 8-разрядную, высокопроизводительную и полностью статическую RISC архитектуру.
PIC16F62X имеют 8-уровневый аппаратный стек и большое количество внутренних и внешних прерываний. В гарвардской архитектуре RISC ядра микроконтроллера разделены 14-разрядная память программ и 8-разрядная память данных. Такой подход позволяет выполнять все инструкции за один машинный цикл, кроме команд ветвления, которые выполняются за два машинных цикла. Ядро микроконтроллеров поддерживает 35 простых в изучении, но очень эффективных инструкций. Дополнительные регистры управления и архитектурные новшества позволяют создавать высокоэффективные устройства.
По сравнению с 8-разрядными микроконтроллерами этого класса, при использовании PIC16F62X выигрыш в эффективности использования памяти программ достигает 2:1, а в производительности 4:1.
Специальные особенности микроконтроллеров PIC16F62X позволяют сократить число внешних компонентов, что в свою очередь снижает стоимость конечного устройства, повышает надежность системы и уменьшает энергопотребление. Дополнительную гибкость в разработках дает широкий выбор режимов работы тактового генератора: ER генератор, наиболее дешевое решение; LP генератор, минимизирует потребляемый ток; XT генератор, для подключения стандартного резонатора; INTRC внутренний RC генератор; HS генератор, для высокоскоростных режимов работы.
Энергосберегающий режим SLEEP, позволяет эффективно использовать микроконтроллеры в устройствах с питанием от батареек или аккумуляторов. Выход из режима SLEEP происходит при возникновении внешних, некоторых внутренних прерываниях и сбросе микроконтроллера. Высоконадежный сторожевой таймер WDT с собственным внутренним RC генератором предотвращает «зависание» программы.
На рисунке 1-1 представлена структурная схема микроконтроллеров PIC16F62X.
Рис. 1-1. Упрощенная структурная схема микроконтроллеров PIC16F62X
Микроконтроллеры PIC16F62X удовлетворяют ряду параметров для их использования от зарядных устройств до удаленных датчиков с малым потреблением электроэнергии. FLASH технология и большое количество периферийных модулей, совместимых с предыдущими микроконтроллерами, позволяют быстро и удобно разрабатывать программное обеспечение. Высокая производительность, малая стоимость, легкость в использовании и гибкость портов ввода/вывода – делают PIC16F62X универсальными микроконтроллерами.
1.2 Обзор архитектуры
Высокая эффективность микроконтроллеров PIC16F62X достигается за счет архитектуры ядра, подобная архитектура обычно используемой в RISC микропроцессорах. В PIC16F62X используется Гарвардская архитектура с раздельными шинами доступа к памяти программ и памяти данных, в отличие от традиционных систем, в которых обращение к памяти программ и данных выполняется по одной шине.
Разделение памяти программ и памяти данных позволяет использовать не 8-разрядные команды или кратные разрядности шины данных. Все команды микроконтроллера 14-разрядные однословные. По 14-разрядной шине доступа к памяти программ выполняется выборка кода за один машинный цикл. Непрерывная работа ядра микроконтроллера по выборке и выполнению кодов программы дает возможность выполнять все команды за один машинный цикл (200нс @ 20МГц), кроме команд ветвления. Ядро микроконтроллеров поддерживает 35 высокоэффективных команд.
В таблице представлен объем FLASH памяти программ, памяти данных (ОЗУ) и EEPROM памяти данных.
Микроконтроллер |
Память |
||
Программ (FLASH) |
Данных (ОЗУ) |
EEPROM данных |
|
PIC16F627 |
1024x14 |
224x8 |
128x8 |
PIC16F628 |
2048x14 |
224x8 |
128x8 |
PIC16LF627 |
1024x14 |
224x8 |
128x8 |
PIC16LF628 |
2048x14 |
224x8 |
128x8 |
В PIC16F62X адресовать память данных можно непосредственно или косвенно. Все регистры специального назначения отображаются в памяти данных, включая счетчик программ. PIC16F62X имеет ортогональную систему команд, что дает возможность выполнить любую операцию с любым регистром памяти данных, используя любой метод адресации. Это облегчает написание программ для микроконтроллеров PIC16F62X и снижает общее время разработки устройства.
Микроконтроллеры PIC16F62X содержат 8-разрядное АЛУ (арифметико-логическое устройство) с одним рабочим регистром W. АЛУ выполняет арифметические и булевы операции между рабочим регистром и любым регистром памяти данных. Основными операциями АЛУ являются: сложение, вычитание, сдвиг и логические операции. В командах с двумя операндами один операнд всегда рабочий регистр W, а второй операнд регистр памяти данных или константа. В командах с одним операндом используется регистр W или регистр памяти данных.
Используемый в операциях 8-разрядный рабочий регистр W не отображается на память данных.
В зависимости от выполняемой команды АЛУ может влиять на следующие флаги в регистре STATUS: флаг переноса C, флаг полупереноса DC, флаг нуля Z. Флаги C и DC выполняют роль соответствующих битов заема при выполнении команд вычитания SUBLW и SUBWF.
В микроконтроллерах PIC16F62X существует два типа памяти данных:
энергонезависимая EEPROM память данных, предусмотрена для хранения калибровочной информации, таблиц или любой другой информации, требующей периодического изменения. Данные, записанные в EEPROM память, не будут потеряны при отключении питания микроконтроллера;
регулярная память данных (ОЗУ), используется для хранения временной информации во время выполнения программы. Информация в регулярной памяти данных будет потеряна при выключении питания микроконтроллера
1.3 Назначение основных узлов и принцип работы
Каждая часть микроконтроллера может быть отнесена к одной из трех групп:
1. Ядро микроконтроллера;
2. Периферийные модули;
3. Специальные особенности микроконтроллеров.
1.3.1 Ядро микроконтроллера
Ядро относится к основным особенностям, оно заставляет микроконтроллер работать. В состав этой группы
входит:
1. Тактовый генератор
2. Логика сброса
3. Центральный процессор (CPU)
4. Арифметико-логическое устройство (АЛУ)
5. Организация памяти
6. Прерывания
7. Система команд
1.3.2 Периферийные модули
Периферийные модули - особенности, которые добавляются независимо от центрального процессора. Периферийные модули позволяют организовать интерфейс связи с внешней схемой (например, универсальные порты ввода/вывода, драйверы ЖКИ, входы АЦП, выходы ШИМ) и выполнять отсчет временных интервалов (таймеры).
Периферийные модули:
1. Универсальные порты ввода/вывода
2. Таймер TMR0
3. Таймер TMR1
4. Таймер TMR2
5. Захват/Сравнение/ШИМ (CCP)
6. Синхронный последовательный порт (SSP)
7. Основной синхронный последовательный порт (SSP)
8. Ведущий синхронный последовательный порт (MSSP)
9. USART
10. Источник опорного напряжения
11. Компараторы
12. 8-разрядное АЦП
13. Основное 8-разрядное АЦП
14. 10-разрядное АЦП
15. Интегрирующее АЦП
16. Драйвер ЖКИ
17. Ведомый параллельный порт (PSP)
1.3.3 Специальные особенности микроконтроллеров
Специальные особенности - уникальные особенности микроконтроллера, позволяющие придать одно или более следующих свойств конечному изделию:
•Уменьшить стоимость устройства;
•Увеличить надежность системы;
•Предоставить дополнительную гибкость разработчикам при проектировании устройства.
Специальные особенности, которые могут быть в контроллерах этого типа.
1. Биты конфигурации
2. Интегрированная схема сброса по включению питания (POR)
3. Схема сброса по снижению напряжения питания (BOR)
4. Сторожевой таймер
5. Режим энергосбережения (SLEEP)
6. Интегрированный тактовый RC генератор
7. Внутрисхемное программирование
1.4 Тактовый генератор
Для формирования тактового сигнала микроконтроллера предусмотрен внутренний генератор. Тактовый сигнал необходим для выполнения инструкций микроконтроллера и работы периферийных модулей. Внутренний машинный цикл микроконтроллера (TC Y ) состоит из четырех периодов тактового сигнала.
Тактовый генератор микроконтроллера может работать в одном из восьми режимов. Существует два режима внутреннего RC генератора, отличающихся между собой режимом работы вывода микроконтроллера (вывод микроконтроллера работает как CLKOUT или как универсальный порт ввода/вывода). Режим работы тактового генератора определяется битами в слове конфигурации, расположенными в энергонезависимой памяти. Настроить биты конфигурации можно только при программировании микроконтроллера. Возможные режимы тактового генератора:
• LP - низкочастотный кварцевый резонатор (пониженное энергопотребление);
• XT - стандартный кварцевый/керамический резонатор;
• HS - высокочастотный кварцевый резонатор;
• RC - внешний резистор/конденсатор (идентичен EXTRC с CLKOUT);
• EXTRC - внешний резистор/конденсатор;
• EXTRC - внешний резистор/конденсатор с CLKOUT;
• INTRC - внутренний резистор/конденсатор (4МГц);
• INTRC - внутренний резистор/конденсатор (4МГц) с CLKOUT;
Различные режимы тактового генератора позволяют использовать один тип микроконтроллеров в приложениях с разными требованиями к генератору. RC режим генератора снижает стоимость устройства, а LP режим генератора имеет меньшее энергопотребление. С помощью битов конфигурации устанавливается требуемый режим тактового генератора. Дополнительную информацию о битах конфигурации смотрите в разделе "Биты конфигурации".
1.4.1 Режимы тактового генератора
Среднее семейство микроконтроллеров PICmicro может иметь до восьми режимов тактового генератора. Для выбора режима тактового генератора пользователь должен запрограммировать до трех битов конфигурации (FOSC2, FOSC1 и FOSC0):
• LP - низкочастотный кварцевый резонатор (пониженное энергопотребление);
• XT - стандартный кварцевый/керамический резонатор;
• HS - высокочастотный кварцевый резонатор;
• RC - внешний резистор/конденсатор (идентичен EXTRC с CLKOUT);
• EXTRC - внешний резистор/конденсатор;
• EXTRC - внешний резистор/конденсатор с CLKOUT;
• INTRC - внутренний резистор/конденсатор (4МГц);
• INTRC - внутренний резистор/конденсатор (4МГц) с CLKOUT;
Основным отличием между режимами LP, XT и HS является значение коэффициента усиления инвертора внутренней схемы генератора. Рекомендуется использовать режим тактового генератора с минимальным коэффициентом усиления для выбранной частоты, что позволяет получить меньший динамический ток потребления (IDD ). При выборе режима и частоты тактового генератора необходимо учитывать рекомендуемый диапазон частот и выполнение дополнительных требований (напряжение питания, рабочая температура, параметры компонентов (резистор, конденсатор, внутренняя схема генератора микроконтроллера)).
Режимы тактового генератора RC и EXTRC с CL KOUT имеют одинаковые функциональные особенности. Они имеют разные названия, чтобы облегчить описание других режимов генератора.
1.5 Центральное процессорное устройство
Центральное Процессорное Устройство (ЦПУ) предназначено для детектирования команд, расположенных в памяти программ, и управления работой микроконтроллера. Большинство команд микроконтроллера обращаются к ячейкам памяти данных. Для работы с памятью данных требуется арифметико-логическое устройство (АЛУ). АЛУ выполняет арифметические, логические операции и управляет флагами состояния (флаги состояния расположены в регистре STATUS). Выполнение некоторых команд приводит к изменению битов состояния в зависимости от полученного результата.
ЦПУ можно рассматривать как "мозги" микроконтроллера. ЦПУ отвечает за выборку команды из памяти программ, ее детектирование и выполнение. Иногда ЦПУ работает совместно с АЛУ, чтобы выполнить арифметические или логические операции. ЦПУ управляет шиной адреса памяти программ и памяти данных, а также обращением к стеку.
1.6 Арифметико-логическое Устройство (АЛУ)
Микроконтроллеры PICmicro MCU содержат 8-разрядный универсальный арифметический модуль (АЛУ) и 8 - разрядный рабочий регистр (W). АЛУ выполняет арифметические и булевы операции между рабочим регистром и любым регистром памяти данных
Рис 1.6-1 . Операции АЛУ и регистра W
8 - разрядное АЛУ может выполнять сложение, вычитание, поразрядный сдвиг и логические операции. Арифметические операции выполняются по принципу дополнения до двух, если не указано иначе. В командах с двумя операндами: первый операнд находится в рабочем регистре W, а второй операнд расположен в регистре памяти данных или константа. В командах с одним операндом: операндом является регистр W или регистр памяти данных.
Регистр W - не адресуемый 8-разрядный рабочий регистр, который используется в операциях АЛУ. В зависимости от типа команды и результат команды АЛУ может воздействовать на следующие флаги состояния в регистре STATUS: перенос (С), полуперенос (DC), флаг нулевого результата (Z). Биты С и DC работают как биты заема и десятичного заема при выполнении команд вычитания.
В регистре STATUS содержатся флаги состояния АЛУ, флаги причины сброса микроконтроллера и биты управления банками памяти данных. Поскольку в регистре STATUS присутствуют биты управления банками памяти необходимо, чтобы он отображался во всех банках памяти данных и имел одинаковое смещение относительно начала банка (см. рисунок 6-5 в разделе "Организация памяти").
Регистр STATUS может быть адресован любой командой, как и любой другой регистр памяти данных. Если обращение к регистру STATUS выполняется командой, которая воздействует на флаги Z, DC и С, то изменение этих трех битов командой заблокировано. Эти биты сбрасываются или устанавливаются согласно логике ядра микроконтроллера. Команды изменения регистра STATUS также не воздействуют на биты -ТО и -PD. Поэтому результат выполнения команды с регистром STATUS может отличаться от ожидаемого. Например, команда CLRF STATUS сбросит три старших бита и установит бит Z (состояние регистра STATUS после выполнения команды 000uu1uu, где u - не изменяемый бит).
При изменении битов регистра STATUS рекомендуется использовать команды, не влияющие на флаги АЛУ (SWAPF, MOVWF, BCF и BSF)
1.7 Память
Есть два независимых блока памяти: память программ и память данных. Каждый блок имеет собственную шину данных и шину адреса, позволяя организовать одновременный доступ к обоим типам памяти в течение одного машинного цикла.
Память данных состоит из регистров общего (GPR) и специального (SFR) назначения. Регистры SFR, управляющие ядром микроконтроллера, будут описаны в данном разделе. Описание регистров SFR, управляющие периферийными модулями, смотрите в соответствующем разделе документации.
1.7.1 Организация памяти программ
Микроконтроллеры среднего семейства имеют 13-разрядный счетчик команд, способный адресовать 8К х 14 слов памяти программ, и 14-разрядную шину данных памяти программ. Все команды микроконтроллера состоят из 14-разрядного слова, поэтому микроконтроллер с объемом памяти программ 8К х 14 может содержать 8К команд. Это позволяет легко определить достаточность объема памяти программ для желаемого приложения.
Вся память программ разделена на 4 страницы по 2Кслов каждая (0000h-07FFh, 0800h-0FFFh, 1000h-17FFh, 1800h—1 FFFh). На рисунке 6-1 показана карта памяти программ и 8-уровневый аппаратный стек. В зависимости от типа микроконтроллера, только некоторая часть доступной памяти программ реализована аппаратно (смотрите техническую документацию на конкретный микроконтроллер).
Для перехода между страницами памяти программ необходимо изменить старшие биты регистра счетчика команд PC, записью в регистр специального назначения PCLATH (старший байт счетчика команд). Изменив значение регистра PCLATH и выполнив команду ветвления, счетчик команд PC пересечет границу страницы памяти программ без дополнительного вмешательства пользователя.
Для микроконтроллеров, имеющих память программ меньше 8Кслов, обращение к памяти программ выше фактически реализованного значения приведет к циклической адресации. Например, в микроконтроллере с памятью программ 4Кслов и попытке перехода по адресу 17FFh переход будет выполнен по адресу 07FFh. В микроконтроллерах с памятью программ 2Кслов управление страницами памяти не требуется
Рис. 1.7.1-1. Карта памяти программ и 8 – уровневый аппаратный стек
1.7.2 Организация памяти данных
Память данных разделяется на регистры двух типов:
Регистры специального назначения (SFR), управляют работой микроконтроллера;
Регистры общего назначения (GPR), для хранения данных программы.
Память данных разделена на банки, содержащие регистры общего и специального назначения. Регистры общего назначения размещаются в разных банках памяти данных для того, чтобы была возможность организовать более 96 байт ОЗУ. Регистры специального назначения предназначены для управления периферийными модулями и функциями микроконтроллера. Управление банками памяти выполняется битами в регистре STATUS<7>. На рисунке 6-5 представлена одна из разновидностей карты памяти данных. Организация памяти данных зависит от типа микроконтроллера.
Чтобы передать данные из одного регистра в другой, необходимо использовать дополнительный регистр W. Эта операция выполняется двумя командами за два машинных цикла микроконтроллера.
Обращение к всем регистрам памяти данных может быть выполнено прямой или косвенной адресацией:
Прямая адресация - для указания банка памяти данных необходимо использовать биты RP1:RP0 регистра STATUS;
Косвенная адресация - адрес регистра сохраняется в FSR, а в бите IRP регистра STATUS указывается к какой паре банков памяти данных выполняется обращение (Банк0/Банк1 или Банк2/Банк3).
1.8 Прерывания
Микроконтроллеры PICmicro среднего семейства могут иметь несколько источников прерываний. Для каждого периферийного модуля назначен отдельный источник прерываний, хотя некоторый периферийный модули содержат несколько источников прерываний (например, модуль USART).
Возможные источники прерываний в микроконтроллерах PICmicro среднего семейства:
Внешний источник прерываний INT;
Переполнение таймера TMR0;
Изменение уровня сигнала на входах PORTB (выводы RB7:RB4);
Изменение выходного уровня компаратора;
Прерывание от ведомого параллельного порта;
Прерывания от USART;
Прерывание от приемника:
Прерывание от передатчика;
Завершение преобразования АЦП;
Прерывания от LCD;
Завершение цикла записи в EEPROM память данных;
Переполнение таймера TMR1;
Переполнение таймера TMR2;
Прерывания от модуля ССР;
Прерывания от модуля SSP.
В микроконтроллерах среднего семейства присутствует как минимум один регистр, управляющий прерываниями. Это регистр:
• INTCON
Если в микроконтроллере есть дополнительные периферийные модули, то в нем будут реализованы регистры для управления прерываниями от периферийных модулей (регистр маски, чтобы разрешить/запретить прерывания; регистр флагов прерываний, указывающий на возникшее прерывание). В зависимости от типа микроконтроллера в нем могут быть реализованы регистры:
PIE1
PIR1
PIE2
PIR2
На рисунке 1.8-1 показаны все возможные источники прерываний для микроконтроллеров PICmicro среднего семейства. Наличие управляющих битов в микроконтроллере зависит от реализованных периферийных модулей. Смотрите техническую документацию на микроконтроллер.
Часть микроконтроллеров среднего семейства имеют только один периферийный модуль. В этих микроконтроллерах нет бита PEIE, а реализован бит разрешения прерываний от периферийного модуля в регистре INTCON.
Рис. 1.8.-1 Структурная схема логики прерываний
1.9 Порты ввода/вывода
Универсальные порты ввода/вывода могут рассматриваться как самые простые периферийные модули. Они позволяют микроконтроллерам PICmicro контролировать работу и управлять другими устройствами. С целью расширения функциональных возможностей некоторые каналы портов ввода/вывода мультиплицированы с другими периферийными модулями. Набор дополнительных функций каналов портов ввода/вывода зависит от реализованных периферийных модулей в микроконтроллере. Как правило, при включенном периферийном модуле, соответствующий вывод микроконтроллера не может использоваться как универсальный канал ввода/вывода.
Для
большинства каналов портов ввода/вывода
регистры TRIS управляют направлением
данных на выводе. Бит TRIS
На рисунке 1.9-1 показана типовая структурная схема одного канала порта ввода/вывода. На этом рисунке не показана ситуация подключения дополнительного периферийного модуля к каналу порта. Чтение регистра PORT возвращает состояние на выводах порта, а запись выполняется в выходную защелку. Обратите внимание на операции "чтение - модификация - запись" (например, BSF и BCF). Сначала происходит чтение состояния выводов порта, изменение полученного значения, а затем выполняется запись в выходную защелку порта.
Рис 1.9-1Типовая структурная схема одного канала порта ввода/вывода
Все выводы портов имеют защитные диоды, подключенные к Vdd
1.10 Назначение выводов
Таблица 1.10-1 Назначение выводов микроконтроллеров PIC16F62X
Обозначение вывода |
№ вывода DIP, SOIC |
№ вывода SSOP |
Тип l/O/P |
Тип буфера |
Описание |
RA0/AN0 |
17 |
19 |
I/O |
ST |
Двунаправленный порт ввода/вывода, аналоговый вход компаратора |
RA1/AN1 |
18 |
20 |
I/O |
ST |
Двунаправленный порт ввода/вывода, аналоговый вход компаратора |
RA2/AN2/Vref |
1 |
1 |
I/O |
ST |
Двунаправленный порт ввода/вывода, аналоговый вход компаратора, выход источника опорного напряжения Vref |
RA3/AN3/CPM1 |
2 |
2 |
I/O |
ST |
Двунаправленный порт ввода/вывода, аналоговый вход компаратора, выход компаратора |
RA4^)CKI/CPM2 |
3 |
3 |
I/O |
ST |
Двунаправленный порт ввода/вывода, может использоваться какТОСЮ, выход компаратора |
RA5/-MCLR/THV |
4 |
4 |
I |
ST |
Вход сброса микроконтроллера, вход напряжения программирования. Когда вывод настроен как -MCLR, то по низкому уровню сигнала производится сброс микроконтроллера. При нормальной работе напряжение на -MCLR/THV не должно превышать VDD. |
RA6/OSC2/CLKOUT |
15 |
17 |
I/O |
ST |
Двунаправленный порт ввода/вывода, выход генератора для подключения резонатора. В режиме ER генератора на выходе CLKOOUT формируется сигнал с частотой 1/4 OSC1, обозначая циклы команд |
RA7/OSC1/CLKIN |
16 |
18 |
I/O |
ST |
Двунаправленный порт ввода/вывода, вход генератора, вход внешнего тактового сигнала, вывод ER смещения |
RB0/INT |
6 |
7 |
I/O |
TTL/ST(1) |
Двунаправленный порт ввода/вывода с программным включением подтягивающего резистора, вход внешнего прерывания |
RB1/RX/DT |
7 |
8 |
I/O |
TTL/ST(3) |
Двунаправленный порт ввода/вывода с программным включением подтягивающего резистора, вход приемника USART, линия данных в синхронном режиме USART |
RB2ЯX/CK |
8 |
9 |
I/O |
TTL/ST(3) |
Двунаправленный порт ввода/вывода с программным включением подтягивающего резистора, выход передатчика USART, линия тактового сигнала в синхронном режиме |
RB3/CCP1 |
9 |
10 |
I/O |
TTL/ST(4) |
Двунаправленный порт ввода/вывода с программным включением подтягивающего резистора, вывод модуля ССР |
RB4/PGM |
10 |
11 |
I/O |
TTL/ST(5) |
Двунаправленный порт ввода/вывода с программным включением подтягивающего резистора. Изменение сигнала на входе может вывести микроконтроллер из режима SLEEP. Когда разрешено низковольтное программирование, запрещены прерывания по изменению сигнала на входе, а подтягивающий резистор отключен |
RB5 |
11 |
12 |
I/O |
TTL |
Двунаправленный порт ввода/вывода с программным включением подтягивающего резистора. Изменение сигнала на входе может вывести микроконтроллер из режима SLEEP |
RB6Я10SO/T1CKI |
12 |
13 |
I/O |
TTL/ST(2) |
Двунаправленный порт ввода/вывода с программным включением подтягивающего резистора. Изменение сигнала на входе может вывести микроконтроллер из режима SLEEP. Выход генератора таймера 1 |
RB7Я10SI |
13 |
14 |
I/O |
TTL/ST(2) |
Двунаправленный порт ввода/вывода с программным включением подтягивающего резистора. Изменение сигнала на входе может вывести микроконтроллер из режима SLEEP. Вход генератора таймера 1 |
VSS |
5 |
5,6 |
р |
- |
Общий вывод |
VDD |
14 |
15,16 |
р |
- |
Положительное напряжение питания |
Обозначения: I - вход, О - выход, I/O - вход/выход, Р - питание, - - не используется, TTL - вход/выход ТТЛ, ST - вход с триггером Шмидта.
Примечания:
Входной буфер с триггером Шмидта при использовании внешних прерываний.
Входной буфер с триггером Шмидта при работе в режиме последовательного программирования.
Входной буфер с триггером Шмидта при использовании выводов модулем USART.
Входной буфер с триггером Шмидта при использовании выводов модулем ССР.
Входной буфер с триггером Шмидта при низковольтном программировании.
1.11 Корпуса микроконтроллеров
Рис. 1.11-1 Описание обозначений на корпусах микроконтроллеров
Обозначения
ХХ..Х |
Тип микроконтроллера* |
АА |
Две цифры даты изготовления |
ВВ |
Две цифры номера недели изготовления считая с 1 января. |
С |
Код завода изготовителя |
|
0 = внешний представитель |
|
С = 5" |
|
S = 6" |
|
Н = 8" |
D |
Номер версии |
Е |
Код завода или страны, в которой кристалл был упакован в корпус |
Примечание |
. Если тип микроконтроллера не помещается в одну строку, то он будет |
перемещен |
на другую строку, ограничивая число доступных символов для |
информации |
заказчика. |
* Стандартная маркировка ОТР микросхем состоит из: типа микроконтроллера, код года, код недели, код завода изготовителя, код упаковщика кристалла в корпус. Изменение маркировки микросхемы выполняется за отдельную плату. Для QTP микроконтроллеров стоимость маркировки входит в цену микросхем QTP.
Тип корпуса: 18-выводный PDIP K04-007
Единицы измерения |
|
Дюймы* |
Миллиметры |
||||
Пределы размеров |
|
Мин. |
Ном. |
Макс. |
Мин. |
Ном. |
Макс. |
Число выводов |
п |
|
18 |
|
|
18 |
|
Расстояние между выводами |
Р |
|
0.100 |
|
|
2.54 |
|
Ширина нижней части вывода |
В |
0.013 |
0.018 |
0.023 |
0.33 |
0.46 |
0.58 |
Ширина верхней части вывода |
В1** |
0.055 |
0.060 |
0.065 |
1.40 |
1.52 |
1.65 |
Радиус сгиба вывода |
R |
0.000 |
0.005 |
0.010 |
0.00 |
0.13 |
0.25 |
Толщина вывода |
с |
0.005 |
0.010 |
0.015 |
0.13 |
0.25 |
0.38 |
Толщина корпуса |
А |
0.110 |
0.155 |
0.155 |
2.79 |
3.94 |
3.94 |
Толщина нижней части корпуса |
А1 |
0.075 |
0.095 |
0.115 |
1.91 |
2.41 |
2.92 |
Расстояние между корпусом и платой |
А2 |
0.000 |
0.020 |
0.020 |
0.00 |
0.51 |
0.51 |
Длина нижней части вывода |
L |
0.125 |
0.130 |
0.135 |
3.18 |
3.30 |
3.43 |
Длина корпуса |
D*** |
0.890 |
0.895 |
0.900 |
22.61 |
22.73 |
22.86 |
Ширина корпуса |
Е*** |
0.245 |
0.255 |
0.265 |
6.22 |
6.48 |
6.73 |
Ширина корпуса без фаски |
Е1 |
0.230 |
0.250 |
0.270 |
5.84 |
6.35 |
6.86 |
Полная ширина корпуса с выводами |
еВ |
0.310 |
0.349 |
0.387 |
7.87 |
8.85 |
9.83 |
Угол фаски верхней части корпуса |
а |
5 |
10 |
15 |
5 |
10 |
15 |
Угол фаски нижней части корпуса |
р |
5 |
10 |
15 |
5 |
10 |
15 |
* Основные размеры.
** Параметр В1 не включает в себя возможные выступы. Выступ в сторону не должен превышать 0.003"(0.076мм) или не более 0.006"(0.152мм) параметра В1.
*** Параметры D и Е не включают выступы. Выступы в сторону не должны превышать 0.010"(0.254мм) или не более 0.020"(0.508мм) параметров D и Е.
Тип корпуса: 18-выводный SOIC K04-051 - ЗООтП.
Единицы измерения |
|
Дюймы* |
Миллиметры |
||||
Пределы размеров |
|
Мин. |
Ном. |
Макс. |
Мин. |
Ном. |
Макс. |
Число выводов |
п |
|
18 |
|
|
18 |
|
Расстояние между выводами |
Р |
|
0.050 |
|
|
1.27 |
|
Толщина корпуса |
А |
0.093 |
0.099 |
0.104 |
2.36 |
2.50 |
2.64 |
Толщина нижней части корпуса |
А1 |
0.048 |
0.058 |
0.068 |
1.22 |
1.47 |
1.73 |
Расстояние между корпусом и платой |
А2 |
0.004 |
0.008 |
0.011 |
0.10 |
0.19 |
0.28 |
Длина корпуса |
D*** |
0.450 |
0.456 |
0.462 |
11.43 |
11.58 |
11.73 |
Ширина корпуса |
Е*** |
0.292 |
0.296 |
0.299 |
7.42 |
7.51 |
7.59 |
Ширина корпуса с выводами |
Е1 |
0.394 |
0.407 |
0.419 |
10.01 |
10.33 |
10.64 |
Размер ориентирующей фаски |
X |
0.010 |
0.020 |
0.029 |
0.25 |
0.50 |
0.74 |
Радиус изгиба верхней части вывода |
R1 |
0.005 |
0.005 |
0.010 |
0.13 |
0.13 |
0.25 |
Радиус изгиба нижней части вывода |
R2 |
0.005 |
0.005 |
0.010 |
0.13 |
0.13 |
0.25 |
Длина нижней части вывода |
L |
0.011 |
0.016 |
0.021 |
0.28 |
0.41 |
0.53 |
Угол наклона нижней части вывода |
Ф |
0 |
4 |
8 |
0 |
4 |
8 |
Длина верхней части вывода |
L1 |
0.010 |
0.015 |
0.020 |
0.25 |
0.38 |
0.51 |
Толщина вывода |
с |
0.009 |
0.011 |
0.012 |
0.23 |
0.27 |
0.30 |
Ширина вывода |
В** |
0.014 |
0.017 |
0.019 |
0.36 |
0.42 |
0.48 |
Угол фаски верхней части корпуса |
а |
0 |
12 |
15 |
0 |
12 |
15 |
Угол фаски нижней части корпуса |
р |
0 |
12 |
15 |
0 |
12 |
15 |
* Основные размеры.
** Параметр В не включает в себя возможные выступы. Выступ в сторону не должен превышать 0.003"(0.076мм) или не более 0.006"(0.152мм) параметра В.
*** Параметры D и Е не включают выступы. Выступы в сторону не должны превышать 0.010"(0.254мм) или не более 0.020"(0.508мм) параметров D и Е.
Тип корпуса: 20-выводный SSOP K04-072 - 5.30тт.
Единицы измерения |
|
Дюймы |
Миллиметры* |
||||
Пределы размеров |
|
Мин. |
Ном. |
Макс. |
Мин. |
Ном. |
Макс. |
Число выводов |
п |
|
20 |
|
|
20 |
|
Расстояние между выводами |
Р |
|
0.026 |
|
|
0.65 |
|
Толщина корпуса |
А |
0.068 |
0.073 |
0.078 |
1.73 |
1.86 |
1.99 |
Толщина нижней части корпуса |
А1 |
0.026 |
0.036 |
0.046 |
0.66 |
0.91 |
1.17 |
Расстояние между корпусом и платой |
А2 |
0.002 |
0.005 |
0.008 |
0.05 |
0.13 |
0.21 |
Длина корпуса |
D*** |
0.278 |
0.283 |
0.289 |
7.07 |
7.20 |
7.33 |
Ширина корпуса |
Е*** |
0.205 |
0.208 |
0.212 |
5.20 |
5.29 |
5.38 |
Ширина корпуса с выводами |
Е1 |
0.301 |
0.306 |
0.311 |
7.65 |
7.78 |
7.90 |
Радиус изгиба верхней части вывода |
R1 |
0.005 |
0.005 |
0.010 |
0.13 |
0.13 |
0.25 |
Радиус изгиба нижней части вывода |
R2 |
0.005 |
0.005 |
0.010 |
0.13 |
0.13 |
0.25 |
Длина нижней части вывода |
L |
0.015 |
0.020 |
0.025 |
0.38 |
0.51 |
0.64 |
Угол наклона нижней части вывода |
Ф |
0 |
4 |
8 |
0 |
4 |
8 |
Длина верхней части вывода |
L1 |
0.000 |
0.005 |
0.010 |
0.00 |
0.13 |
0.25 |
Толщина вывода |
с |
0.005 |
0.007 |
0.009 |
0.13 |
0.18 |
0.22 |
Ширина вывода |
В** |
0.010 |
0.012 |
0.015 |
0.25 |
0.32 |
0.38 |
Угол фаски верхней части корпуса |
а |
0 |
5 |
10 |
0 |
5 |
10 |
Угол фаски нижней части корпуса |
р |
0 |
5 |
10 |
0 |
5 |
10 |
* Основные размеры.
** Параметр В не включает в себя возможные выступы. Выступ в сторону не должен превышать 0.003"(0.076мм) или не более 0.006"(0.152мм) параметра В.
*** Параметры D и Е не включают выступы. Выступы в сторону не должны превышать 0.010"(0.254мм) или не
более 0.020"(0.508мм) параметров D и Е.
1.12 Технические характеристики
Абсолютные максимальные значения определяют наихудшие условия эксплуатации и хранения микроконтроллеров, что не является допустимым рабочим уровнем. Напряжение, выше указанного значения, может привести к повреждению микроконтроллера. Некоторые требования не являются независимыми, они могут быть взаимосвязаны с другими параметрами.
Примером может служить "Максимальный втекающий/вытекающий ток канала ввода/вывода". Число выводов, через которые может одновременно протекать максимальный ток зависит от максимально допустимого тока через выводы Vdd и Vss. Физической причиной является ширина шины проводников питания и "земли" портов ввода/вывода и внутренней логики микроконтроллера. Превышение указанных значений может привести к внутреннему обрыву цепи. Превышение абсолютного максимума может привести к снижению надежности микроконтроллера.
Входной ток вывода определен как ток через диод, подключенный к Vss/Vdd, если напряжение на выводе выходит за указанные значения.
Максимально допустимые значения (*)
Предельная рабочая температура |
|
от-55°Сдо+125°С |
Температура хранения |
|
от-65°Сдо+150°С |
Напряжение Vdd относительно Vss |
|
от-О.ЗВ до +7.5В |
Напряжение -MCLR относительно Vss |
|
отОВдо +14В |
Напряжение RA4 относительно Vss |
|
отОВ ДО+8.5В |
Напряжение на остальных выводах относительно Vss |
|
от-О.ЗВ до Vdd+О.ЗВ |
Рассеиваемая мощность (1) |
|
1Вт |
Максимальный ток вывода Vss |
|
ЗООмА |
Максимальный ток вывода Vdd |
|
250мА |
Входной запирающий ток Iik (V < 0 или V > Vdd) |
|
+20мА |
Выходной запирающий ток Iok (Vo < 0 или Vo > Vdd) |
|
+20мА |
Максимальный выходной ток стока канала ввода/вывода |
|
25мА |
Максимальный выходной ток истока канала ввода/вывода |
|
25мА |
Максимальный выходной ток стока портов ввода/вывода PORTA, PORTB и PORTE |
200мА |
|
Максимальный выходной ток истока портов ввода/вывода PORTA, PORTB и PORTE |
200мА |
|
Максимальный выходной ток стока портов ввода/вывода PORTC и PORTD |
200мА |
|
Максимальный выходной ток истока портов ввода/вывода PORTC и PORTD |
200мА |
|
Максимальный выходной ток стока портов ввода/вывода PORTF и PORTG |
ЮОмА |
|
Максимальный выходной ток истока портов ввода/вывода PORTF и PORTG |
ЮОмА |
Примечание 1. Потребляемая мощность рассчитывается по формуле:
Примечание *. Выход за указанные значения может привести к необратимым повреждениям микроконтроллера. Не предусмотрена работа микроконтроллера в предельном режиме в течение длительного времени. Длительная эксплуатация микроконтроллера в недопустимых условиях может повлиять на его надежность.
Примечание. Броски напряжения на выводе -MCLR ниже Vss приводят к появлению больших токов (около 80мА), что может привести к срабатыванию защелки. Поэтому рекомендуется последовательно включать резистор сопротивлением от 50ОМ до 100Ом для подачи низкого уровня на этот вывод вместо непосредственного подключения к Vss.
2. Разработка программы
Задание : Написать программу, сравнивающую содержимое 2 символьных строк и отображающую результат сравнения на экран в виде равно/не равно.
2.1 Текст программы:
model small
.stack 100h
.data
WX DB ?
WY DB ?
LX DB ?
LY DB ?
WELC DB 'Ковалев М. 2008$'
WELC0 DB 'Введите первую строку:','$' ; Введите первую строку
WELC1 DB 'Введите вторую строку:','$' ; Введите вторую строку
LOWER DB 'Первая строка меньше второй','$'
HIGHER DB 'Вторая строка меньше первой','$'
EQL DB 'Строки равны','$'
BUFLEN1 DB 20
BUFREALLEN1 DB 0
BUF1 DB 20 DUP (0)
BUFLEN2 DB 20
BUFREALLEN2 DB 0
BUF2 DB 20 DUP (0)
CRLF DB 10,13,'$'
.code
start:
MOV AX, @data
MOV DS, AX ; инициализируем сегмент регистра данных
MOV ES, AX
CALL INITSCR
MOV CH,8
MOV CL,10
MOV DH,9
MOV DL,48
CALL DRAWWIN ; Рисуем окно
MOV CH,22
MOV CL,59
MOV DH,3
MOV DL,19
CALL DRAWWIN ; Рисуем второе окно
MOV DH,23
MOV DL,61
LEA BX,WELC
CALL WRITELINE ; Выводим "Ковалев М."
MOV DH,10
MOV DL,12
LEA BX,WELC0 ; Выводим "Введите первую строку:"
CALL WRITELINE
MOV DH,11
MOV DL,12
LEA BX,WELC1 ; Выводим "Введите вторую строку:"
CALL WRITELINE
MOV DH,10
MOV DL,35
LEA BX,BUFLEN1 ; Вводим в буфер первую строку
CALL ENTERSTR
MOV DH,11
MOV DL,35
LEA BX,BUFLEN2 ; Вводим в буфер вторую строку
CALL ENTERSTR
MOV AH,BUFREALLEN1
MOV AL,BUFREALLEN2
CMP AH,AL ; Сравниваем длины строк, по результатам выводим
JE Equal ; соответствующее сообщение
JB LOWER1
HIGHER1:
MOV DH,12
MOV DL,12
LEA BX,HIGHER ; Вторая строка меньше первой
CALL WRITELINE
JMP EXITPROC
LOWER1:
MOV DH,12
MOV DL,12
LEA BX,LOWER ; Первая строка меньше второй
CALL WRITELINE
JMP EXITPROC
EQUAL:
; Если длины строк равны, то сравниваем содержимое строк
XOR CH,CH
MOV CL,AL ; Загружаем длину строки в CX
LEA SI,BUF1 ; Загружаем в DS:SI адрес первой строки
LEA DI,BUF2 ; Загружаем в ES:DI адрес второй строки
REPZ CMPSB ; Цикл сравнения строк
JE EQ1
JB LOWER1
JMP HIGHER1
EQ1:
MOV DH,12
MOV DL,12
LEA BX,EQL ; Строки равны
CALL WRITELINE
EE1:
JMP EXITPROC ; Завершаем программу
; Функция очистки окна и включения графического режима
CLEARWIN PROC
MOV CH,9
MOV CL,11
MOV DH,15
MOV DL,56
MOV AX,0600h ; Отчистка окна
MOV BH,7
INT 10h
RET
CLEARWIN ENDP
; Процедура ввода строки
; DH - Y координата строки ввода
; DL - X координата строки ввода
; DS:BX - адрес буфера ввода
; Длина строки записывается в первый байт буфера
ENTERSTR PROC
PUSH AX
PUSH CX
CALL SETCUR
MOV DX,BX
MOV AH,0AH ;номер функции
INT 21H ;получаем строку
POP CX
POP AX
RET
ENTERSTR ENDP
; Установка курсора в позицию
; DH - Y координата
; DL - X координата
SETCUR PROC
PUSH BX
PUSH AX
MOV AH,02h ; Функция BIOS установки курсора в позицию
MOV BH,0
INT 10h ; Прерывание BIOS для работы с дисплеем
POP AX
POP BX
RET
SETCUR ENDP
; Отчистка строки указанной длины в позиции DL,DH
; DH - Y координата
; DL - X координата
; CX - Длина строки
CLEARSTR PROC
PUSH AX
PUSH bx
MOV AH,02h ; Функция BIOS установки курсора в позицию
MOV BH,0
INT 10h ; Прерывание BIOS для работы с дисплеем
MOV AX,0920h ; Пишем пробелы
MOV BX,0007h
INT 10h ; Прерывание BIOS для работы с дисплеем
POP BX
POP AX
RET
CLEARSTR ENDP
; Инициализируем текстовый режим
INITSCR PROC
MOV AX,0003
INT 10h
RET
INITSCR ENDP
; Очищаем экран
CLSCREEN PROC
XOR cx,cx
MOV DH,24
MOV DL,79
MOV AX,0600h
MOV BH,0
INT 10h
RET
CLSCREEN ENDP
; Вывод строки на экран
; DH - Y координата
; DL - X координата
; DS:BX - строка
WRITELINE PROC
PUSH BX
MOV AH,02h ; Функция BIOS для установки курсора
MOV BH,0
INT 10h ; Прерывание BIOS для работы с дисплеем
POP DX
MOV AH,09h ; Функция вывода на стандартное устройство (CON)
INT 21h ; Прерывание MS-DOS
RET
WRITELINE ENDP
; Рисуем окошко
; cl - X колонка
; ch - Y строка
; dl - длина по X
; dh - высота по Y
DRAWWIN PROC
MOV WY,CH
MOV WX,CL
MOV LY,DH
MOV LX,DL
MOV AH,02H
MOV BH,0
MOV DX,CX
INT 10h
MOV AL,'*'
MOV AH,09h
XOR CX,CX
MOV CL,LX
MOV BX,000Fh
INT 10h
DEC LY
L1:
INC WY
DEC LY
CMP LY,0
JE L2
MOV AH,02h
MOV BH,0
MOV DH,WY
MOV DL,WX
INT 10h
MOV AL,'*'
MOV AH,09h
MOV BX,000Fh
MOV CX,0001h
INT 10h
MOV AH,02h
MOV BH,0
MOV DH,WY
MOV DL,WX
ADD DL,LX
DEC DL
INT 10h
MOV AL,'*'
MOV AH,09h
MOV BX,000Fh
MOV CX,0001h
INT 10h
; Рисуем стенки
JMP L1
L2:
MOV AH,02h
MOV BH,0
MOV DH,WY
MOV DL,WX
INT 10h
MOV AL,'*'
MOV AH,09h
MOV BX,000Fh
XOR CX,CX
MOV CL,LX
INT 10h
RET
DRAWWIN ENDP
; Печатаем перенос строки
PRINTCRLF PROC
LEA DX,CRLF
MOV AH,9
INT 21h
RET
PRINTCRLF ENDP
; Выход из программы
EXITPROC:
MOV DH,18
MOV DL,0
CALL SETCUR
MOV AH,08h ; Функция DOS ввода символа без ЭХА
INT 21h
mov ah,4Ch
int 21h
end start