Работа с портами ввода/вывода микроконтроллера MC9S12C128
Цель работы: Целью данной лабораторной работы является получение практических навыков в работе с портами ввода/вывода микроконтроллера.
Необходимые оборудования:
1. Плата APS12DT56
2. Платформа NI ELVIS II+
3. Платформа PBMCUSLK
4. Персональный компьютер
Общая сведения о микроконтроллерах
Микроконтроллер (англ. Micro Controller Unit, MCU) — микросхема, предназначенная для управления электронными устройствами. Типичный микроконтроллер сочетает на одном кристалле функции процессора и периферийных устройств, содержит ОЗУ и (или) ПЗУ. По сути, это однокристальный компьютер, способный выполнять простые задачи.
Использование в современном микроконтроллере достаточного мощного вычислительного устройства с широкими возможностями, построенного на одной микросхеме вместо целого набора, значительно снижает размеры, энергопотребление и стоимость построенных на его базе устройств. Используются в управлении различными устройствами и их отдельными блоками:
· В вычислительной технике: материнские платы, контроллеры дисководов жестких и гибких дисков, CD и DVD;
· Электронике и разнообразных устройствах бытовой техники, в которой используется электронные системы управления — стиральных машинах, микроволновых печах, посудомоечных машинах, телефонах и современных приборах;
В промышленности:
· Устройств промышленной автоматики — от программируемого реле и встраиваемых систем до ПЛК;
· Систем управления станками;
![]() | ![]() |
а) | б) |
Рис 1. Микроконтроллеры в схематической плате (а), 8 битные микроконтроллеры ATMEGA128 (б) |
В то время как 8-разрядные процессоры общего назначения полностью вытеснены более производительными моделями, 8-разрядные микроконтроллеры продолжают широко использоваться. Это объясняется тем, что существует большое количество применений, в которых не требуется высокая производительность, но важна низкая стоимость. В то же время, есть микроконтроллеры, обладающие большими вычислительными возможностями, например цифровые сигнальные процессоры.
Микроконтроллер MC9S12C128
В данном лабораторном практикуме Вами будет детально изучаться однокристальный 16-разрядный микроконтроллер семейства HCS12: MC9S12C128.
Основные технические характеристики этого МК:
· 16-разрядное процессорное ядро HCS12.
· Напряжение питания 2.97..5.5 В. В лабораторном макете составляет 5 В.
· Развитая система тактирования. Тактирование микроконтроллера возможно как от внешних источников, так и от внутренних. В лабораторном стенде используется элемент, относящийся к первому типу: кварцевый резонатор. Частота тактового сигнала, который он генерирует, составляет 4 МГц. При этом частота внутренней шины микроконтроллера BUS f уменьшается вдвое и равна 2 МГц. Максимальное её значение для этой модели микроконтроллера составляет 20 МГц;
· Резидентная память программ (ПЗУ). Её объем равен 128K = 131072 ячеек (128 КБ). Память выполнена по технологии flash с эмуляцией EEPROM, число циклов записи/стирания составляет не менее 100000.
· Резидентная память данных (ОЗУ). Объём составляет 4 КБ.
· Общее число выводов микроконтроллера – 40. Тип корпуса – QFP (Quad Flat Package).
На кристалле микроконтроллера имеются следующие периферийные модули:
· Порты ввода/вывода. Всего доступно 9 портов, более подробное их описание приведено в табл. 2.1.;
· Модуль таймера TIM с 16-разрядным счетчиком временной базы и восемью каналами IC/OC/PWM.
· Встроенный аналого-цифровой преобразователь ATD. Число каналов оцифровки равно 8, разрядность – 10 бит.
· Последовательные интерфейсы: синхронный SPI и асинхронный SCI, а также модуль CAN со скоростью до 1 Мбит/с.
![]() | ||
Рис 2. Микроконтроллер MC9S12C128 | ||
| ||
Порты ввода/вывода
Все МК семейства HCS12 имеют некоторое количество линий ввода/вывода данных. Линии объединены в 8 разрядные параллельные порты данных: Port A, Port B, Port E, За редким исключением, все линии ввода/вывода двунаправленные. Направление передачи линий ввода/вывода настраивается программно путем записи управляющего слова в регистр направления передачи соответствующего порта. Возможно изменение направления передачи в ходе выполнения программы посредством перепрограммирования этих регистров. Сигнал сброса устанавливает все двунаправленные линии в режим ввода. Следует особо подчеркнуть, что направление передачи каждой линии может быть выбрано разработчиком произвольно, независимо от других линий, принадлежащих к одному и тому же порту ввода/вывода. Исключение составляют лишь линии однонаправленной передачи, которые изначально специализированы на ввод или на вывод.
Часть линий ввода/вывода имеют так называемую альтернативную функцию, т.е. обеспечивают связь встроенных периферийных модулей МК с «внешним миром». Так линии порта PORT AD используются для подключения к встроенному АЦП измеряемых напряжений, линии порта PORT S служат входами и выходами контроллеров последовательного обмена. Если соответствующий периферийный модуль МК не используется, то его выводы можно задействовать как обычные линии ввода/вывода.
Если линии порта двунаправленные, то для его обслуживания такого порта предусмотрены два типа регистров:
PORTx — регистр данных порта x, где x — имя порта ввода/вывода;
DDRx — регистр направления передачи порта x.
Например, порт PORT A обслуживается регистрами PORTA и DDRA, а порт PORT B — регистрами PORTB и DDRB.
Если порт имеет схемотехнику с программно подключаемым «подтягивающим» резистором (R pullup), то для обслуживания такого порта предусмотрен дополнительный регистр входного сопротивления порта.
Ниже приведен фрагмент текста программы, которая конфигурирует PORT B для вывода данных, а затем записывает в порт число $62. Для того, чтобы все линии порта PORT B стали линиями вывода, необходимо записать в регистр направления передачи DDRB код $FF.
/* МAIN PROGRAМ: */
/*подключаемые файлы*/
#include <hidef.h>
#include"derivative.h"
void main{void) {
unsigned char DDRB_INIT = 0xFF;
DDRB = DDRT_INIT; //установить порт PORT B на вывод
PORTB = 0x62;
}