Описание МК PIC16F62X, и разработка программы на асеблере сравнения 2-х строк

Содержание Введение 1. Микроконтроллер PIC16F1.1 Структурная схема микроконтроллера 1.2 Обзор архитектуры 1.3 Назначение основных узлов и принцип работы 3.1 Ядро микроконтроллера 3.2 Периферийные модули 3.3 Специальные особенности микроконтроллеров 1.4 Тактовый генератор 8 1.4.1
Режимы тактового генератора 1.5 Центральное процессорное устройство 1.6 Арифметико-логическое Устройство (АЛУ) 1.7 Память 7.1 Организация памяти программ 7.2 Организация памяти данных 1.8 Прерывания 1.9 Порты ввода/вывода 1.10 Назначение выводов 1.11 Корпуса микроконтроллеров 1.12 Технические характеристики 24 2.
Разработка программы 2.1 Текст программы: 26 Введение Можно считать что микроконтроллер (МК) – это компьютер, разместившийся в одной микросхеме. Отсюда и его основные привлекательные качества: малые габариты; высокие производительность, надежность и способность быть адаптированным для выполнения самых различных задач. Микроконтроллер помимо центрального процессора (ЦП) содержит память и многочисленные устройства ввода/вывода:
аналого-цифровые преобразователи, последовательные и параллельные каналы передачи информации, таймеры реального времени, широтно-импульсные модуляторы (ШИМ), генераторы программируемых импульсов и т.д. Его основное назначение – использование в системах автоматического управления, встроенных в самые различные устройства: кредитные карточки, фотоаппараты, сотовые телефоны, музыкальные центры, телевизоры, видеомагнитофоны и видеокамеры, стиральные машины, микроволновые печи, системы охранной сигнализации, системы зажигания
бензиновых двигателей, электроприводы локомотивов, ядерные реакторы и многое, многое другое. Встраиваемые системы управления стали настолько массовым явлением, что фактически сформировалась новая отрасль экономики, получившая название Embedded Systems (встраиваемые системы). 1. Микроконтроллер PIC16F1.1 Структурная схема микроконтроллера 18-выводные FLASH микроконтроллеры PIC16F62X входят в состав распространенного семейства PICmicro PIC16CXX. Микроконтроллеры этого семейства имеют 8-разрядную, высокопроизводительную и полностью статическую RISC архитектуру. PIC16F62X имеют 8-уровневый аппаратный стек и большое количество внутренних и внешних прерываний. В гарвардской архитектуре RISC ядра микроконтроллера разделены 14-разрядная память программ и 8-разрядная память данных. Такой подход позволяет выполнять все инструкции за один машинный цикл, кроме команд ветвления, которые выполняются за два машинных цикла.
Ядро микроконтроллеров поддерживает 35 простых в изучении, но очень эффективных инструкций. Дополнительные регистры управления и архитектурные новшества позволяют создавать высокоэффективные устройства. По сравнению с 8-разрядными микроконтроллерами этого класса, при использовании PIC16F62X выигрыш в эффективности использования памяти программ достигает 2:1, а в производительности 4:1. Специальные особенности микроконтроллеров PIC16F62X позволяют сократить число внешних компонентов, что
в свою очередь снижает стоимость конечного устройства, повышает надежность системы и уменьшает энергопотребление. Дополнительную гибкость в разработках дает широкий выбор режимов работы тактового генератора: ER генератор, наиболее дешевое решение; LP генератор, минимизирует потребляемый ток; XINTRC внутренний 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 1024×14 224×8 128×8 PIC16F628 2048×14 224×8 128×8 PIC16LF627 1024×14 224×8 128×8 PIC16LF628 2048×14 224×8 128×8 В 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:5>. На рисунке 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<x> управляет направлением данных на канале PORT<x>. Если бит TRIS установлен в Т, то соответствующий канал порта ввода/вывода работает как вход, а если бит TRIS сброшен в ‘0 то канал ввода/вывода работает как выход. Простой способ запомнить направление канала ввода/вывода и состояние битов регистров TRIS: ‘1 напоминает ‘In’ (ввод); ‘О напоминает ‘Out’ (выход).
Регистр PORT – защелка данных, выводимых на порт ввода/вывода. При чтении регистра PORT возвращается состояние выводов порта. Это означает, что необходима некоторая осторожность при выполнении команд со структурой "чтение – модификация – запись" для изменения логического уровня на выходах порта. На рисунке 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 – вход с триггером Шмидта. Примечания: 1. Входной буфер с триггером Шмидта при использовании внешних прерываний. 2. Входной буфер с триггером Шмидта при работе в режиме последовательного программирования. 3. Входной буфер с триггером Шмидта при использовании выводов модулем USART. 4. Входной буфер с триггером Шмидта при использовании выводов модулем ССР. 5. Входной буфер с триггером Шмидта при низковольтном программировании.
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